diff --git a/.changeset/pre.json b/.changeset/pre.json index caeeeeb8a6a0..ea4ffeeee7a9 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -53,6 +53,7 @@ "better-redirect-error", "big-cups-drive", "big-forks-lead", + "big-jobs-make", "big-laws-dig", "bold-ghosts-sink", "bright-parrots-hear", @@ -63,19 +64,26 @@ "busy-actors-follow", "busy-humans-smoke", "busy-olives-chew", + "calm-bats-create", "calm-birds-fly", + "chubby-tips-change", "clean-planets-flow", "clear-areas-cry", "clear-route-cache-content", "clever-clubs-listen", "cloudflare-dev-styles", "cloudflare-entrypoint-breaking", + "cloudflare-image-component", + "cloudflare-image-dev-fix", + "cloudflare-image-service-object", "cloudflare-integration-wrangler", "cloudflare-workerd-prerender", "common-knives-rescue", "common-signs-punch", + "csp-shiki-warning", "cuddly-worlds-beam", "custom-prerenderer-api", + "cute-suns-check", "cyan-crews-cross", "dance-ornate-keen", "deep-states-talk", @@ -95,20 +103,25 @@ "famous-trees-tan", "fancy-bananas-sing", "fast-bushes-fall", + "fast-wolves-render", "fifty-dingos-study", "fix-content-hmr", "fix-create-astro-registry-hang", + "fix-font-head-swap", "fix-forwarded-proto-allowed-domains", + "fix-large-static-routes-stack-overflow", "fix-markdoc-table-attributes", "fix-mdx-slot-hydration", "fix-preact-cloudflare-hooks", "fix-rewrite-non-ascii-paths", "fix-serve-files-outside-srcdir", + "fix-ssr-prerendered-image-deletion", "fix-store-race-condition", "fix-vite-runner-closed", "flat-lions-care", "flat-symbols-arrive", "floppy-bottles-notice", + "floppy-cases-hug", "fluffy-pets-greet", "fluffy-shrimps-drop", "four-insects-tan", @@ -119,23 +132,28 @@ "full-poems-divide", "funny-planes-lick", "giant-areas-press", + "giant-bananas-sit", "good-camels-pull", "good-clubs-cover", "great-nails-brake", "green-garlics-heal", + "green-plants-act", + "green-zebras-lick", "grumpy-tables-serve", - "happy-frogs-glow", "heavy-beers-unite", "heavy-cats-own", "heavy-parts-throw", "helpful-runtime-errors", "hojze-jglnm-ggfbv", "honest-deer-add", + "hot-eyes-sink", "hungry-jars-pump", "icy-pigs-smile", "internal-helpers-normalize-pathname", "itchy-ghosts-flow", + "jolly-dots-shop", "khaki-bushes-stop", + "khaki-toys-think", "kind-emus-relate", "kind-pears-behave", "large-ears-ask", @@ -164,6 +182,7 @@ "open-days-watch", "open-monkeys-boil", "optional-wrangler-config", + "orange-boats-refuse", "polite-terms-shop", "pretty-forks-smash", "proud-pans-change", @@ -182,8 +201,10 @@ "rich-horses-begin", "ripe-nights-feel", "route-data-breaking", + "rust-compiler-experimental", "sad-lines-hear", "sad-teams-end", + "server-island-slot-scripts", "short-pears-hammer", "shy-cats-grin", "silly-eels-remain", @@ -213,9 +234,11 @@ "swift-planets-swim", "tall-needles-cross", "tall-worms-live", + "tame-lemons-probe", "tangy-days-wink", "tangy-tables-jog", "tangy-years-grin", + "ten-numbers-rush", "tender-bats-tan", "tender-moose-help", "thin-hands-find", @@ -225,6 +248,7 @@ "tricky-donkeys-camp", "true-bats-punch", "true-dingos-attack", + "twenty-signs-brush", "upset-dodos-rhyme", "vite-environments-breaking", "vite-plugin-react-v5", diff --git a/examples/basics/package.json b/examples/basics/package.json index 9329c29ebeea..6dd43ce2167e 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -13,6 +13,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^6.0.0-beta.14" + "astro": "^6.0.0-beta.15" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index 08d1d36c8557..1018763fa840 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -14,9 +14,9 @@ }, "dependencies": { "@astrojs/mdx": "^5.0.0-beta.8", - "@astrojs/rss": "^4.0.15-beta.3", + "@astrojs/rss": "^4.0.15-beta.4", "@astrojs/sitemap": "^3.6.1-beta.3", - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "sharp": "^0.34.3" } } diff --git a/examples/component/package.json b/examples/component/package.json index bb09d4b55d1d..b989ae3cbeaf 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -18,7 +18,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^6.0.0-beta.14" + "astro": "^6.0.0-beta.15" }, "peerDependencies": { "astro": "^5.0.0 || ^6.0.0" diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index 2e82c95a8cda..3e69f12869b9 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@astrojs/react": "^5.0.0-beta.3", - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "react": "^18.3.1", "react-dom": "^18.3.1", "vitest": "^3.2.4" diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index bbd5cb470803..82f40e6989cc 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -16,6 +16,6 @@ "@astrojs/alpinejs": "^0.5.0-beta.1", "@types/alpinejs": "^3.13.11", "alpinejs": "^3.15.8", - "astro": "^6.0.0-beta.14" + "astro": "^6.0.0-beta.15" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index f1149ed0c97d..ae957fe092c6 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -13,14 +13,14 @@ "astro": "astro" }, "dependencies": { - "@astrojs/preact": "^5.0.0-beta.3", + "@astrojs/preact": "^5.0.0-beta.4", "@astrojs/react": "^5.0.0-beta.3", "@astrojs/solid-js": "^6.0.0-beta.2", - "@astrojs/svelte": "^8.0.0-beta.2", + "@astrojs/svelte": "^8.0.0-beta.3", "@astrojs/vue": "^6.0.0-beta.1", "@types/react": "^18.3.28", "@types/react-dom": "^18.3.7", - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "preact": "^10.28.4", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index b1445f088b1a..3d9ff5762a49 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -13,9 +13,9 @@ "astro": "astro" }, "dependencies": { - "@astrojs/preact": "^5.0.0-beta.3", + "@astrojs/preact": "^5.0.0-beta.4", "@preact/signals": "^2.8.1", - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "preact": "^10.28.4" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index 9941db1cd387..8bee6084f962 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -16,7 +16,7 @@ "@astrojs/react": "^5.0.0-beta.3", "@types/react": "^18.3.28", "@types/react-dom": "^18.3.7", - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index c8754081b939..69c7a4543883 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@astrojs/solid-js": "^6.0.0-beta.2", - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "solid-js": "^1.9.11" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index f348c4df845b..558cfc63350e 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -13,8 +13,8 @@ "astro": "astro" }, "dependencies": { - "@astrojs/svelte": "^8.0.0-beta.2", - "astro": "^6.0.0-beta.14", + "@astrojs/svelte": "^8.0.0-beta.3", + "astro": "^6.0.0-beta.15", "svelte": "^5.53.0" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index 3bb1c1727c63..b1e3ac39050a 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@astrojs/vue": "^6.0.0-beta.1", - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "vue": "^3.5.28" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index 3b0f08b070d8..b46a1ef883af 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -13,7 +13,7 @@ "astro": "astro" }, "dependencies": { - "@astrojs/node": "^10.0.0-beta.4", - "astro": "^6.0.0-beta.14" + "@astrojs/node": "^10.0.0-beta.5", + "astro": "^6.0.0-beta.15" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index 0cd385e9dc72..ea2ceceb7ebc 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -18,7 +18,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^6.0.0-beta.14" + "astro": "^6.0.0-beta.15" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/minimal/package.json b/examples/minimal/package.json index f8171e8e0f79..604ba5ba1b46 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -13,6 +13,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^6.0.0-beta.14" + "astro": "^6.0.0-beta.15" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index 29d7936ab768..5c70faf0df07 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -13,6 +13,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^6.0.0-beta.14" + "astro": "^6.0.0-beta.15" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 21d1650d337d..6ea36c0471b0 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -14,9 +14,9 @@ "server": "node dist/server/entry.mjs" }, "dependencies": { - "@astrojs/node": "^10.0.0-beta.4", - "@astrojs/svelte": "^8.0.0-beta.2", - "astro": "^6.0.0-beta.14", + "@astrojs/node": "^10.0.0-beta.5", + "@astrojs/svelte": "^8.0.0-beta.3", + "astro": "^6.0.0-beta.15", "svelte": "^5.53.0" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index e77c8037b10b..8a7588d81029 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -9,7 +9,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "sass": "^1.97.3", "sharp": "^0.34.3" }, diff --git a/examples/toolbar-app/package.json b/examples/toolbar-app/package.json index c4064cfe37df..30a7d079a762 100644 --- a/examples/toolbar-app/package.json +++ b/examples/toolbar-app/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/node": "^18.17.8", - "astro": "^6.0.0-beta.14" + "astro": "^6.0.0-beta.15" }, "engines": { "node": ">=22.12.0" diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index 5ec8b4ac9f8a..681a8cd89ea6 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -14,6 +14,6 @@ }, "dependencies": { "@astrojs/markdoc": "^1.0.0-beta.11", - "astro": "^6.0.0-beta.14" + "astro": "^6.0.0-beta.15" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 8dee61e8cc2f..a2273ea68edb 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -14,8 +14,8 @@ }, "dependencies": { "@astrojs/mdx": "^5.0.0-beta.8", - "@astrojs/preact": "^5.0.0-beta.3", - "astro": "^6.0.0-beta.14", + "@astrojs/preact": "^5.0.0-beta.4", + "astro": "^6.0.0-beta.15", "preact": "^10.28.4" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 37b6a482d7ff..e2805bdbda69 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -13,9 +13,9 @@ "astro": "astro" }, "dependencies": { - "@astrojs/preact": "^5.0.0-beta.3", + "@astrojs/preact": "^5.0.0-beta.4", "@nanostores/preact": "^1.0.0", - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "nanostores": "^1.1.0", "preact": "^10.28.4" } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index 5fbf665cf48c..4ec0df45c66c 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -16,7 +16,7 @@ "@astrojs/mdx": "^5.0.0-beta.8", "@tailwindcss/vite": "^4.2.0", "@types/canvas-confetti": "^1.9.0", - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "canvas-confetti": "^1.9.4", "tailwindcss": "^4.2.0" } diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index 2ceba999c9d2..262ab26d7e08 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -14,7 +14,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^6.0.0-beta.14", + "astro": "^6.0.0-beta.15", "vitest": "^3.2.4" } } diff --git a/packages/astro-rss/CHANGELOG.md b/packages/astro-rss/CHANGELOG.md index e486e2f00d57..ae1e8cd21725 100644 --- a/packages/astro-rss/CHANGELOG.md +++ b/packages/astro-rss/CHANGELOG.md @@ -1,5 +1,11 @@ # @astrojs/rss +## 4.0.15-beta.4 + +### Patch Changes + +- [#15561](https://github.com/withastro/astro/pull/15561) [`413b0f7`](https://github.com/withastro/astro/commit/413b0f746a28503c936b3875ffaee6b7f04c67b9) Thanks [@renovate](https://github.com/apps/renovate)! - Updates `fast-xml-parser` to v5.3.6 + ## 4.0.15-beta.3 ### Patch Changes diff --git a/packages/astro-rss/package.json b/packages/astro-rss/package.json index 0065c0894240..d81b59f48235 100644 --- a/packages/astro-rss/package.json +++ b/packages/astro-rss/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/rss", "description": "Add RSS feeds to your Astro projects", - "version": "4.0.15-beta.3", + "version": "4.0.15-beta.4", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index b8b47d076285..00ea43cc0b71 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,125 @@ # astro +## 6.0.0-beta.15 + +### Minor Changes + +- [#15471](https://github.com/withastro/astro/pull/15471) [`32b4302`](https://github.com/withastro/astro/commit/32b430213bbe51898b77ec2eadbacb9dfb220f75) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new experimental flag `queuedRendering` to enable a queue-based rendering engine + + The new engine is based on a two-pass process, where the first pass + traverses the tree of components, emits an ordered queue, and then the queue is rendered. + + The new engine does not use recursion, and comes with two customizable options. + + Early benchmarks showed significant speed improvements and memory efficiency in big projects. + + #### Queue-rendered based + + The new engine can be enabled in your Astro config with `experimental.queuedRendering.enabled` set to `true`, and can be further customized with additional sub-features. + + ```js + // astro.config.mjs + export default defineConfig({ + experimental: { + queuedRendering: { + enabled: true, + }, + }, + }); + ``` + + #### Pooling + + With the new engine enabled, you now have the option to have a pool of nodes that can be saved and reused across page rendering. Node pooling has no effect when rendering pages on demand (SSR) because these rendering requests don't share memory. However, it can be very useful for performance when building static pages. + + ```js + // astro.config.mjs + export default defineConfig({ + experimental: { + queuedRendering: { + enabled: true, + poolSize: 2000, // store up to 2k nodes to be reused across renderers + }, + }, + }); + ``` + + #### Content caching + + The new engine additionally unlocks a new `contentCache` option. This allows you to cache values of nodes during the rendering phase. This is currently a boolean feature with no further customization (e.g. size of cache) that uses sensible defaults for most large content collections: + + When disabled, the pool engine won't cache strings, but only types. + + ```js + // astro.config.mjs + export default defineConfig({ + experimental: { + queuedRendering: { + enabled: true, + contentCache: true, // enable re-use of node values + }, + }, + }); + ``` + + For more information on enabling and using this feature in your project, see the [experimental queued rendering docs](https://v6.docs.astro.build/en/reference/experimental-flags/queued-rendering/) for more details. + +- [#15543](https://github.com/withastro/astro/pull/15543) [`d43841d`](https://github.com/withastro/astro/commit/d43841dfa8998c4dc1a510a2b120fedbd9ce77c6) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new `experimental.rustCompiler` flag to opt into the experimental Rust-based Astro compiler + + This experimental compiler is faster, provides better error messages, and generally has better support for modern JavaScript, TypeScript, and CSS features. + + After enabling in your Astro config, the `@astrojs/compiler-rs` package must also be installed into your project separately: + + ```js + import { defineConfig } from 'astro/config'; + + export default defineConfig({ + experimental: { + rustCompiler: true, + }, + }); + ``` + + This new compiler is still in early development and may exhibit some differences compared to the existing Go-based compiler. Notably, this compiler is generally more strict in regard to invalid HTML syntax and may throw errors in cases where the Go-based compiler would have been more lenient. For example, unclosed tags (e.g. `
My paragraph`) will now result in errors. + + For more information about using this experimental feature in your project, especially regarding expected differences and limitations, please see the [experimental Rust compiler reference docs](https://v6.docs.astro.build/en/reference/experimental-flags/rust-compiler/). To give feedback on the compiler, or to keep up with its development, see the [RFC for a new compiler for Astro](https://github.com/withastro/roadmap/discussions/1306) for more information and discussion. + +### Patch Changes + +- [#15565](https://github.com/withastro/astro/pull/15565) [`30cd6db`](https://github.com/withastro/astro/commit/30cd6dbebe771efb6f71dcff7e6b44026fad6797) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the use of the Astro internal logger couldn't work with Cloudflare Vite plugin. + +- [#15562](https://github.com/withastro/astro/pull/15562) [`e14a51d`](https://github.com/withastro/astro/commit/e14a51d30196bad534bacb14aac7033b91aed741) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Removes types for the `astro:ssr-manifest` module, which was removed + +- [#15435](https://github.com/withastro/astro/pull/15435) [`957b9fe`](https://github.com/withastro/astro/commit/957b9fe2d887a365c55c6e87f0c67c10beb60d1b) Thanks [@rururux](https://github.com/rururux)! - Improves compatibility of the built-in image endpoint with runtimes that don't support CJS dependencies correctly + +- [#15640](https://github.com/withastro/astro/pull/15640) [`4c1a801`](https://github.com/withastro/astro/commit/4c1a801618b9c4a3147b683d6b4c8f35dc4bdb26) Thanks [@ematipico](https://github.com/ematipico)! - Reverts the support of Shiki with CSP. Unfortunately, after exhaustive tests, the highlighter can't be supported to cover all cases. + + Adds a warning when both Content Security Policy (CSP) and Shiki syntax highlighting are enabled, as they are incompatible due to Shiki's use of inline styles + +- [#15605](https://github.com/withastro/astro/pull/15605) [`f6473fd`](https://github.com/withastro/astro/commit/f6473fd45b74291e1a038f2f4142eb61a932d01d) Thanks [@ascorbic](https://github.com/ascorbic)! - Improves `.astro` component SSR rendering performance by up to 2x. + + This includes several optimizations to the way that Astro generates and renders components on the server. These are mostly micro-optimizations, but they add up to a significant improvement in performance. Most pages will benefit, but pages with many components will see the biggest improvement, as will pages with lots of strings (e.g. text-heavy pages with lots of HTML elements). + +- [#15514](https://github.com/withastro/astro/pull/15514) [`999a7dd`](https://github.com/withastro/astro/commit/999a7dd1f2913ea04e4f18f3557e8363edef45a8) Thanks [@veeceey](https://github.com/veeceey)! - Fixes font flash (FOUT) during ClientRouter navigation by preserving inline `