AstroEco is Contributing…
Display your GitHub pull requests using astro-loader-github-prs


Changes
- What does this change?
- Be short and concise. Bullet points can help!
- Before/after screenshots can help as well.
- Don't forget a changeset! Run
pnpm changeset
. - See https://contribute.docs.astro.build/docs-for-code-changes/changesets/ for more info on writing changesets.
Testing
Docs

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.14.1
Patch Changes
- #14440
a3e16ab
Thanks @florian-lefebvre! - Fixes a case where the URLs generated by the experimental Fonts API would be incorrect in dev

Changes
Currently, node adapter uses the default HTML files with meta refresh when in static mode. This is not ideal, because it adds extra flash of page on redirections for users, and doesn't apply the proper status code for redirections. It's also likely less friendly to search engines.
This change makes configured redirect handled in the same way for node adapter across static and server mode, align with behaviors for other adapters.
Testing
A new test has been added to test the redirect behavior on static mode.
Docs
While this changes the behavior of node adapter in static mode, it's still within the behavior described in the current document:
In Routing, it says:
When running
astro build
, Astro will output HTML files with the meta refresh tag by default. Supported adapters will instead write out the host’s configuration file with the redirects.
And in Configuration Reference, it says:
When using SSR or with a static adapter in
output: static
mode, status codes are supported. Astro will serve redirected GET requests with a status of301
and use a status of308
for any other request method.
So this change brings node adapter into the "supported adapters" in the first document, and fulfills the description by the second document.

Description
Recently I noticed that most packages in this mono-repo are authored under "Chris Swithinbank".
I know that he is the founder of Star(book)light, but at the same time I noticed that most other Astro repos either have no author or just "withastro"
. So I adapted it here as well.
If I am not aware that this project is still authored by Chris legally, then I am sorry for creating this PR.
Just let me know if I should adapt or close this PR!

Changes
- Fixes a typo in the changelog.
Testing
Tried to use the name from the changelog and received an error. Switched to the new name and it succeeded.
Docs
I've confirmed the docs do not have this typo.

Changes
- Matches Vite requirements
Testing
Should pass
Docs
Changeset updated, docs to be updated

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.14.0
Minor Changes
-
#13520
a31edb8
Thanks @openscript! - Adds a new propertyroutePattern
available toGetStaticPathsOptions
This provides the original, dynamic segment definition in a routing file path (e.g.
/[...locale]/[files]/[slug]
) from the Astro render context that would not otherwise be available within the scope ofgetStaticPaths()
. This can be useful to calculate theparams
andprops
for each page route.For example, you can now localize your route segments and return an array of static paths by passing
routePattern
to a customgetLocalizedData()
helper function. Theparams
object will be set with explicit values for each route segment (e.g.locale
,files
, andslug)
. Then, these values will be used to generate the routes and can be used in your page template viaAstro.params
.// src/pages/[...locale]/[files]/[slug].astro import { getLocalizedData } from "../../../utils/i18n"; export async function getStaticPaths({ routePattern }) { const response = await fetch('...'); const data = await response.json(); console.log(routePattern); // [...locale]/[files]/[slug] // Call your custom helper with `routePattern` to generate the static paths return data.flatMap((file) => getLocalizedData(file, routePattern)); } const { locale, files, slug } = Astro.params;
For more information about this advanced routing pattern, see Astro's routing reference.
-
#13651
dcfbd8c
Thanks @ADTC! - Adds a newSvgComponent
typeYou can now more easily enforce type safety for your
.svg
assets by directly importingSVGComponent
fromastro/types
:--- // src/components/Logo.astro import type { SvgComponent } from 'astro/types'; import HomeIcon from './Home.svg'; interface Link { url: string; text: string; icon: SvgComponent; } const links: Link[] = [ { url: '/', text: 'Home', icon: HomeIcon, }, ]; ---
-
#14206
16a23e2
Thanks @Fryuni! - Warn on prerendered routes collision.Previously, when two dynamic routes
/[foo]
and/[bar]
returned values on theirgetStaticPaths
that resulted in the same final path, only one of the routes would be rendered while the other would be silently ignored. Now, when this happens, a warning will be displayed explaining which routes collided and on which path.Additionally, a new experimental flag
failOnPrerenderCollision
can be used to fail the build when such a collision occurs.
Patch Changes
-
#13811
69572c0
Thanks @florian-lefebvre! - Adds a newgetFontData()
method to retrieve lower-level font family data programmatically when using the experimental Fonts APIThe
getFontData()
helper function fromastro:assets
provides access to font family data for use outside of Astro. This can then be used in an API Route or to generate your own meta tags.import { getFontData } from 'astro:assets'; const data = getFontData('--font-roboto');
For example,
getFontData()
can get the font buffer from the URL when using satori to generate OpenGraph images:// src/pages/og.png.ts import type { APIRoute } from 'astro'; import { getFontData } from 'astro:assets'; import satori from 'satori'; export const GET: APIRoute = (context) => { const data = getFontData('--font-roboto'); const svg = await satori(<div style={{ color: 'black' }}>hello, world</div>, { width: 600, height: 400, fonts: [ { name: 'Roboto', data: await fetch(new URL(data[0].src[0].url, context.url.origin)).then((res) => res.arrayBuffer(), ), weight: 400, style: 'normal', }, ], }); // ... };
See the experimental Fonts API documentation for more information.
@astrojs/react@4.4.0
Minor Changes
-
#14386
f75f446
Thanks @yanthomasdev! - Stabilizes the formerly experimentalgetActionState()
andwithState()
functions introduced in@astrojs/react
v3.4.0 used to integrate Astro Actions with React 19'suseActionState()
hook.This example calls a
like
action that accepts apostId
and returns the number of likes. Pass this action to thewithState()
function to apply progressive enhancement info, and apply touseActionState()
to track the result:import { actions } from 'astro:actions'; import { withState } from '@astrojs/react/actions'; import { useActionState } from 'react'; export function Like({ postId }: { postId: string }) { const [state, action, pending] = useActionState( withState(actions.like), 0, // initial likes ); return ( <form action={action}> <input type="hidden" name="postId" value={postId} /> <button disabled={pending}>{state} ❤️</button> </form> ); }
You can also access the state stored by
useActionState()
from your action handler. CallgetActionState()
with the API context, and optionally apply a type to the result:import { defineAction } from 'astro:actions'; import { z } from 'astro:schema'; import { getActionState } from '@astrojs/react/actions'; export const server = { like: defineAction({ input: z.object({ postId: z.string(), }), handler: async ({ postId }, ctx) => { const currentLikes = getActionState<number>(ctx); // write to database return currentLikes + 1; }, }), };
If you were previously using this experimental feature, you will need to update your code to use the new stable exports:
// src/components/Form.jsx import { actions } from 'astro:actions'; -import { experimental_withState } from '@astrojs/react/actions'; +import { withState } from '@astrojs/react/actions'; import { useActionState } from "react";
// src/actions/index.ts import { defineAction, type SafeResult } from 'astro:actions'; import { z } from 'astro:schema'; -import { experimental_getActionState } from '@astrojs/react/actions'; +import { getActionState } from '@astrojs/react/actions';

Changes
Svelte 5.39.1 changed the name of the $$payload
prop. We were using this as a heuristic to detect if a component was svelte, meaning that we were no longer detecting it. This PR checks for both.
Testing
Updated fixtures.
Docs

Changes
- Closes #14372
- Using
Astro.site
orAstro.generator
ingetStaticPaths
will log a warning - Using any other
Astro
property ingetStaticPaths
will throw an error
Testing
Integration tests added.
Docs
withastro/docs#12435 + changeset

Changes
Svelte 5.36 added support for async rendering, including top-level await in scripts (Astro-style!). This PR adds support. The change was literally just adding an await
to the render()
call, but this PR is larger because we didn't have a test suite for the Svelte integration so this adds one.
Testing
Adds tests, including a fixture that uses async.
Docs
This is a Svelte feature that doesn't need users to do anything Astro-specific, so I don't think it needs docs beyond this changeset.

Changes
Sharp can return a SharedArrayBuffer backed Buffer when used with Wasm32. SharedArrayBuffers have security restrictions which can cause other elements, such as the image GET handler to exception.
This change checks if sharp returns something that seems like a SharedArrayBuffer, then performs a copy if so.
Resolves #14412.
Testing
I was able to test the changes by monkey-patching the generated .js
in a separate astro project and the changes worked well both on sharp for win32 and wasm32 sharp.
Tested by running pnpm test
before and after forcing sharp to use the wasm32 build (see #14412). I believe I received the same set of errors before and afterwards. I'm not sure how to let the tests run longer or resolve the symlink tests.
Test on Main
astro:test: ℹ tests 1294 astro:test: ℹ suites 503 astro:test: ℹ pass 1286 astro:test: ℹ fail 2 astro:test: ℹ cancelled 1 astro:test: ℹ skipped 5 astro:test: ℹ todo 0 astro:test: ℹ duration_ms 600012.557 astro:test: astro:test: ✖ failing tests: astro:test: astro:test: test at test\content-collections.test.js:108:4 astro:test: ✖ Handles symlinked content (2.2824ms) astro:test: AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: astro:test: + actual - expected astro:test: astro:test: + [] astro:test: - [ astro:test: - 'first.md', astro:test: - 'second.md', astro:test: - 'third.md' astro:test: - ] astro:test: astro:test: at TestContext. (file:///F:/drfuzzyness/astro/packages/astro/test/content-collections.test.js:112:12) astro:test: at Test.runInAsyncScope (node:async_hooks:211:14) astro:test: at Test.run (node:internal/test_runner/test:979:25) astro:test: at async Suite.processPendingSubtests (node:internal/test_runner/test:677:7) { astro:test: generatedMessage: true, astro:test: code: 'ERR_ASSERTION', astro:test: actual: [], astro:test: expected: [ 'first.md', 'second.md', 'third.md' ], astro:test: operator: 'deepStrictEqual' astro:test: } astro:test: astro:test: test at test\content-collections.test.js:119:4 astro:test: ✖ Handles symlinked data (0.4368ms) astro:test: AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: astro:test: + actual - expected astro:test: astro:test: + [] astro:test: - [ astro:test: - 'welcome' astro:test: - ] astro:test: astro:test: at TestContext. (file:///F:/drfuzzyness/astro/packages/astro/test/content-collections.test.js:124:12) astro:test: at Test.runInAsyncScope (node:async_hooks:211:14) astro:test: at Test.run (node:internal/test_runner/test:979:25) astro:test: at async Suite.processPendingSubtests (node:internal/test_runner/test:677:7) { astro:test: generatedMessage: true, astro:test: code: 'ERR_ASSERTION', astro:test: actual: [], astro:test: expected: [ 'welcome' ], astro:test: operator: 'deepStrictEqual' astro:test: } astro:test: astro:test: test at node_modules\.astro\test.mjs:1:1 astro:test: ✖ F:\drfuzzyness\astro\packages\astro\node_modules\.astro\test.mjs (600010.9855ms) astro:test: 'test timed out after 600000ms' astro:test: ELIFECYCLE Command failed with exit code 1. astro:test: ELIFECYCLE Test failed. See above for more details. astro:test: ERROR: command finished with error: command (F:\drfuzzyness\astro\packages\astro) C:\nvm4w\nodejs\pnpm.cmd run test exited (1) astro#test: command (F:\drfuzzyness\astro\packages\astro) C:\nvm4w\nodejs\pnpm.cmd run test exited (1)Tasks: 0 successful, 1 total
Cached: 0 cached, 1 total
Time: 10m19.025s
Failed: astro#testERROR run failed: command exited (1)
ELIFECYCLE Command failed with exit code 1.
ELIFECYCLE Test failed. See above for more details.
Test after changes
astro:test: ℹ tests 1302 astro:test: ℹ suites 505 astro:test: ℹ pass 1294 astro:test: ℹ fail 2 astro:test: ℹ cancelled 1 astro:test: ℹ skipped 5 astro:test: ℹ todo 0 astro:test: ℹ duration_ms 600008.9105 astro:test: astro:test: ✖ failing tests: astro:test: astro:test: test at test\content-collections.test.js:108:4 astro:test: ✖ Handles symlinked content (2.1965ms) astro:test: AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: astro:test: + actual - expected astro:test: astro:test: + [] astro:test: - [ astro:test: - 'first.md', astro:test: - 'second.md', astro:test: - 'third.md' astro:test: - ] astro:test: astro:test: at TestContext. (file:///F:/drfuzzyness/astro/packages/astro/test/content-collections.test.js:112:12) astro:test: at Test.runInAsyncScope (node:async_hooks:211:14) astro:test: at Test.run (node:internal/test_runner/test:979:25) astro:test: at async Suite.processPendingSubtests (node:internal/test_runner/test:677:7) { astro:test: generatedMessage: true, astro:test: code: 'ERR_ASSERTION', astro:test: actual: [], astro:test: expected: [ 'first.md', 'second.md', 'third.md' ], astro:test: operator: 'deepStrictEqual' astro:test: } astro:test: astro:test: test at test\content-collections.test.js:119:4 astro:test: ✖ Handles symlinked data (0.4843ms) astro:test: AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: astro:test: + actual - expected astro:test: astro:test: + [] astro:test: - [ astro:test: - 'welcome' astro:test: - ] astro:test: astro:test: at TestContext. (file:///F:/drfuzzyness/astro/packages/astro/test/content-collections.test.js:124:12) astro:test: at Test.runInAsyncScope (node:async_hooks:211:14) astro:test: at Test.run (node:internal/test_runner/test:979:25) astro:test: at async Suite.processPendingSubtests (node:internal/test_runner/test:677:7) { astro:test: generatedMessage: true, astro:test: code: 'ERR_ASSERTION', astro:test: actual: [], astro:test: expected: [ 'welcome' ], astro:test: operator: 'deepStrictEqual' astro:test: } astro:test: astro:test: test at node_modules\.astro\test.mjs:1:1 astro:test: ✖ F:\drfuzzyness\astro\packages\astro\node_modules\.astro\test.mjs (600007.373ms) astro:test: 'test timed out after 600000ms' astro:test: ELIFECYCLE Command failed with exit code 1. astro:test: ELIFECYCLE Test failed. See above for more details. astro:test: ERROR: command finished with error: command (F:\drfuzzyness\astro\packages\astro) C:\nvm4w\nodejs\pnpm.cmd run test exited (1) astro#test: command (F:\drfuzzyness\astro\packages\astro) C:\nvm4w\nodejs\pnpm.cmd run test exited (1)Tasks: 0 successful, 1 total
Cached: 0 cached, 1 total
Time: 10m18.385s
Failed: astro#testERROR run failed: command exited (1)
ELIFECYCLE Command failed with exit code 1.
ELIFECYCLE Test failed. See above for more details.
Docs
No user-facing changes.

Changes
- Closes #14365
- Removes polyfills for node 18 and node 20 (
import.meta.resolve
) - Update CLI entrypoints
- Keep undocumented support for node 20. Once stackblitz supports 22, we'll have to quietly hard require node 22
Testing
Should still pass
Docs
withastro/docs#12423 + changeset

Changes
- Removes deprecated
emitESMImage()
- Removes internal todos
- Depends on #14407
Testing
Should still pass
Docs

Changes
- Closes #14368
Testing
Updates test and removes irrelevant ones, should pass
Docs
withastro/docs#12401 + changeset

Changes
- The
astro.locals
symbol is only used in dev by official adapters, so it can be removed from here - the
astro.clientAddress
symbol is meant to be used internally only, now thatclientAddress
can be passed toapp.render()
Testing
Should still pass
Docs
Shouldn't be needed as it's an undocumented API

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@astrojs/svelte@7.2.0
Minor Changes
-
#14430
78011ba
Thanks @ascorbic! - Adds support for async server renderingSvelte 5.36 added experimental support for async rendering. This allows you to use
await
in your components in several new places. This worked out of the box with client-rendered components, but server-rendered components needed some extra help. This update adds support for async server rendering in Svelte components used in Astro.To use async rendering, you must enable it in your Svelte config:
// svelte.config.js export default { compilerOptions: { experimental: { async: true, }, }, };
Then you can use
await
in your components:<script> let data = await fetch('/api/data').then(res => res.json()); </script> <h1>{data.title}</h1>
See the Svelte docs for more information on using
await
in Svelte components, including inside$derived
blocks and directly in markup.
Patch Changes
- #14433
9cc8f21
Thanks @ascorbic! - Fixes a bug that prevented Svelte 5.39.1+ components rendering when multiple frameworks were present
astro@5.13.11
Patch Changes
-
#14409
250a595
Thanks @louisescher! - Fixes an issue whereastro info
would log errors to console in certain cases. -
#14398
a7df80d
Thanks @idawnlight! - Fixes an unsatisfiable type definition when callingaddServerRenderer
on an experimental container instance -
#13747
120866f
Thanks @jp-knj! - Adds automatic request signal abortion when the underlying socket closes in the Node.js adapterThe Node.js adapter now automatically aborts the
request.signal
when the client connection is terminated. This enables better resource management and allows applications to properly handle client disconnections through the standardAbortSignal
API. -
#14428
32a8acb
Thanks @drfuzzyness! - Force sharpService to return a Uint8Array if Sharp returns a SharedArrayBuffer -
#14411
a601186
Thanks @GameRoMan! - Fixes relative links to docs that could not be opened in the editor.

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.13.10
Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
- @astrojs/markdown-remark@6.3.7
@astrojs/cloudflare@12.6.9
Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
- @astrojs/underscore-redirects@1.0.0
@astrojs/markdoc@0.15.7
Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
- @astrojs/markdown-remark@6.3.7
@astrojs/mdx@4.3.6
Patch Changes
- Updated dependencies []:
- @astrojs/markdown-remark@6.3.7
@astrojs/netlify@6.5.11
Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
- @astrojs/underscore-redirects@1.0.0
@astrojs/node@9.4.4
Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
@astrojs/vercel@8.2.8
Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
@astrojs/internal-helpers@0.7.3
Patch Changes
@astrojs/markdown-remark@6.3.7
Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
Description
Add openstatus docs to the showcase list

Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs from Renovate will soon appear from 'Mend'. Learn more here.
This PR contains the following updates:
Package | Change | Age | Confidence |
---|---|---|---|
@vitejs/plugin-vue (source) | 5.2.1 -> 5.2.4 |
||
preact (source) | ^10.27.1 -> ^10.27.2 |
||
svelte (source) | ^5.38.7 -> ^5.39.2 |
||
svelte2tsx (source) | ^0.7.42 -> ^0.7.43 |
Release Notes
vitejs/vite-plugin-vue (@vitejs/plugin-vue)
v5.2.4
Features
Bug Fixes
- plugin-vue: handle sourcemap with empty script code (#585) (7f73970)
- plugin-vue: when the resource path contains chinese characters, dev/build is inconsistent (#550) (5f6affe)
Miscellaneous Chores
- deps: update upstream (#542) (ef446fc)
- deps: update upstream (#569) (98381b2)
- fix types with Vite 6.3 (#559) (8002511)
- use rollup types exposed from Vite (#583) (2e1287f)
v5.2.3
5.2.3 (2025-03-17)
v5.2.2
Features
- css: tree shake scoped styles (#533) (333094f)
- pass descriptor vapor flag to compileTemplte (219e007)
Bug Fixes
- deps: update all non-major dependencies (#482) (cdbae68)
- deps: update all non-major dependencies (#488) (5d39582)
- generate unique component id (#538) (2704e85)
- index: move the if check earlier to avoid creating unnecessary ssr when entering return block (#523) (2135c84)
- plugin-vue: default value for compile time flags (#495) (ae9d948)
- plugin-vue: ensure HMR updates styles when SFC is treated as a type dependency (#541) (4abe3be)
- plugin-vue: resolve sourcemap conflicts in build watch mode with cached modules (#505) (906cebb)
- plugin-vue: support external import URLs for monorepos (#524) (cdd4922)
- plugin-vue: support vapor template-only component (#529) (95be153)
- plugin-vue: suppress warnings for non-recognized pseudo selectors form lightningcss (#521) (15c0eb0)
- properly interpret boolean values in
define
(#545) (46d3d65)
Miscellaneous Chores
- deps: update dependency rollup to ^4.27.4 (#479) (428320d)
- deps: update dependency rollup to ^4.28.1 (#484) (388403f)
- deps: update dependency rollup to ^4.29.1 (#493) (b092bc8)
- deps: update upstream (#503) (8c12b9f)
- deps: update upstream (#511) (d057351)
- deps: update upstream (#526) (59946d3)
- plugin-vue: simplify
resolved
declaration (7288a59)
sveltejs/svelte (svelte)
v5.39.2
Patch Changes
-
fix: preserve SSR context when block expressions contain
await
(#16791) -
chore: bump some devDependencies (#16787)
v5.39.1
Patch Changes
-
fix: issue
state_proxy_unmount
warning when unmounting a state proxy (#16747) -
fix: add
then
to class componentrender
output (#16783)
v5.39.0
Minor Changes
- feat: experimental async SSR (#16748)
Patch Changes
- fix: correctly SSR hidden="until-found" (#16773)
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs from Renovate will soon appear from 'Mend'. Learn more here.
This PR contains the following updates:
Package | Change | Age | Confidence |
---|---|---|---|
publint (source) | ^0.3.12 -> ^0.3.13 |
||
svelte (source) | ^5.38.10 -> ^5.39.2 |
||
typescript-eslint (source) | ^8.43.0 -> ^8.44.0 |
Release Notes
typescript-eslint/typescript-eslint (typescript-eslint)
v8.44.0
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.


Changes
Astro.url.pathname
returns value with the correct file.html
extension whenbuild.format: 'perserve'
is enabled inastro.config.mjs
Closes: #13615
Testing
Here's the screenshot after change:
build.format: 'preserve'
is enabled in all screenshot
For routeType: 'page'
with a named pathname. Now we have .html
extension in pathname
property
For routeType: 'page'
without a named pathname (no change)
For routeType: 'endpoint'
(no change)
Docs
I am not sure, but I think it is not needed.

Changes
- This PR fixes an issue where
astro info
would sometimes log errors to console if the package manager was unable to retreive the version information for an integration (like Astro DB) because the integration's registered name was not the same as the name of the package.
Testing
- A new test was added to ensure integrations for which a package manager is unable to get the version for are still shown in the output of
astro info
.
Docs
N/A

Changes
- Handle backslash patterns that could be normalized to remote URLs by browsers and runtimes. This includes single/double backslashes at the start, URL-encoded backslashes, and protocols with backslashes.
- Prevents potential security issues
Testing
- new tests added
Docs
N/A, bug fix

Changes
Closes #14361.
This PR removes a number of APIs and options related to legacy content collections that were deprecated in Astro 5, including:
- The
legacy.collections
option, which was added in Astro 5 and caused the old content collections system to be used instead of the new one. - Deprecated functions from
astro:content
:getEntryBySlug
andgetDataEntryById
are both replaced bygetEntry()
, which is a drop-in replacement for both. - Support for the old
src/content/config.*
file location. You must now usesrc/content.config.*
. - Automatically generating collections when a
src/content/
directory is present and no content config file exists. You must now explicitly define collections insrc/content.config.*
. - Support for collections without a loader. You must now use the
glob()
loader to create collections from filesystem content. This will also mean that generated entries use the new entry format:- The
id
field is now a slug, not a filename. You can access the filename viaentry.filePath
, which is the path relative to the site root. - There is no longer a
slug
field – useid
instead. - You can no longer call
entry.render()
on content entries. Userender(entry)
instead, imported fromastro:content
.
- The
Testing
Literally hundreds of updated tests! We never updated lots of the fixtures in Astro 5, instead relying on the legacy support. This PR takes the plunge and does the update.
A lot of tests are failing in next
, so it's not always 100% clear if there are more that need updating. I think I've found them all though.
Docs
The docs already reflect the current behaviour. The upgrade guide is in progress.

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.13.9
Patch Changes
- #14402
54dcd04
Thanks @FredKSchott! - Removes warning that caused unexpected console spam when using Bun

Changes
Fixes #14401
previously, Bun users were seeing this when they used bun
to install their npm packages, and then ran astro dev
, astro build
, etc.

This was introduced in #14300 to intentionally add the message to astro info
, but not realizing that the helper function getInfoOutput()
was called outside of astro info
during normal render, for debugging purposes.
This PR removes that warning for now, since we shouldn't be printing inside of a helper utility like that. We could add it back in the future, but I also don't think it's communicating the correct message about our Bun support (tldr: we support Node, and Bun is Node compatible, so Astro should be expected to work correctly in Bun. if it does not, that's bun's problem to solve, but that is different from "Bun is not supported"). Update: wait I was wrong, this is Bun the package installer, not the runtime. AFAIK Astro runs for users who use Bun as their package installer, so I think this message is just wrong vs. not worded correctly. Please correct me if I'm incorrect on that, but we have many Astro users who use bun
to install their packages so I can't imagine this is true.
Testing
Not tested, just removed a console log.
Docs
Not needed.


Changes
- The
AddServerRenderer
type previously usedname: never
to forbid thename
property whenrenderer
was aNamedSSRLoadedRendererValue
. However, this prevented the compiler from correctly matching the first union branch. - Removing
name: never
from the name renderer union type branch will fix this.

Testing
- Verified that TypeScript correctly accepts both union branches.
Docs
- The existing docs already describe the intended behavior, so no changes are needed after this fix.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@astrojs/starlight@0.36.0
Minor Changes
-
#3427
c3b2d0f
Thanks @delucis! - Fixes styling of labels that wrap across multiple lines in<Tabs>
component⚠️ Potentially breaking change: Tab labels now have a narrower line-height and additional vertical padding. If you have custom CSS targetting the<Tabs>
component, you may want to double check the visual appearance of your tabs when updating.If you want to preserve the previous styling, you can add the following custom CSS to your site:
.tab > [role='tab'] { line-height: var(--sl-line-height); padding-block: 0; }
-
#3380
3364af3
Thanks @HiDeoo! - Makes head entry parsing stricter in Starlight config and content frontmatter.⚠️ Potentially breaking change: Previously Starlight would accept a head entry for ameta
tag defining somecontent
which generates invalid HTML as<meta>
is a void element which cannot have any child nodes. Now, it is an error to define ameta
tag including somecontent
.If you see errors after updating, look for head entries in the Starlight configuration in the
astro.config.mjs
file or in the frontmatter of your content files that include acontent
property for ameta
tag. To fix the error, move thecontent
property to theattrs
object with at least an additional attribute to identify the kind of metadata it represents:head: { tag: 'meta', - content: 'foo', attrs: { name: 'my-meta', + content: 'foo', }, },
-
#3340
2018c31
Thanks @HiDeoo! - Adds missing vertical spacing between Markdown content and UI Framework components using client directives.⚠️ Potentially breaking change: By default, Starlight applies some vertical spacing (--sl-content-gap-y
) between Markdown content blocks. This change introduces similar spacing between Markdown content blocks and UI Framework components using client directives which was not present before.If you were relying on the previous behavior, you can manually override the spacing by manually specifying the top margin on the component using custom CSS, e.g. by relying on a CSS class to target the component.
.my-custom-component { margin-top: 0; }
Patch Changes

Changes
Cleaning up various issues found by knip – dead code, empty files etc
Testing
Docs
Description
I noticed a while ago in #3374 that if the .github/workflows/ci.yml
is updated but nothing in the packages/**
directories is, our unit tests and e2e tests do not run. In the case of the linked PR, this was not really a problem, altho, if we were to update an environment variable like NODE_VERSION
in this file and nothing else, we want to make sure that all tests run.
This PR updates the dorny/paths-filter
configuration to include a new ci
filter matching this file used to trigger some jobs that were previously skipped when only this file was changed (I considered adding this file to the existing filters, which would have avoided the need to edit the if
conditions, but I felt that it was cleaner to have a dedicated filter for this purpose).
Here are 2 runs for this PR only modifying the CI workflow file:

Changes
#14345 changed a lot of the APIs for App and Pipeline, but didn't update the tests that use them. This fixes the affected unit tests.
Testing
Unit tests pass locally
Docs

Changes
Enables HMR for the environment API
Testing
Manually tested
Docs

Changes
- Instead of having to manually maintain js and dts file in the package root, use built files from
dist
Testing
Should still pass
Docs
No changeset as this is a refactor. Debatable since things in package.json#exports
change

Changes
Adds support for server islands in environment API.
Currently server islands fail because Vite doesn't know about any server islands at startup, when the manifest is first generated. This PR moves the server islands maps into a separate virtual module that is loaded when needed. It also invalidates that module when new islands are added.
We will probably also want to move them out of the manifest for other app types, but that can come later.
Testing
Added server islands to the test fixture
Docs

Changes
This PR adds the minimumReleaseAge
configuration option to the pnpm-workspace.yaml
and renovate.json5
files.
This change has been made in light of the recent NPM supply chain attacks, as a preventative measure to ensure Astro is (at least somewhat) safe from newly released malicious versions. For now, the respective settings have been set to 3 days, which feels like a good middle ground.
Documentation for the settings:
- https://docs.renovatebot.com/configuration-options/#minimumreleaseage
- https://pnpm.io/settings#minimumreleaseage
Testing
I've not been able to test this for the renovate configuration. Installing from the root with the new workspace file works fine.
Docs
N/A

Changes
There are two APIs related to using Astro Actions with React 19 that have been experimental for quite a while and also not documented. Fun fact, I've found out this by rewatching Ben's Astro Together talk.
The only documentation we have about this is on the 3.4.0 @astrojs/react
changelog, so we might want to discuss if we want to make this a breaking change or a minor change. I am going the conservative way and treating it as a major, but not making a changeset yet.
Testing
I updated the fixtures that test these APIs to use the stable names, altough I am not used with the useActionState()
hook, so I would appreciate some double-checking.
Docs
Docs PR updating to stable: withastro/docs#12402
/cc @withastro/maintainers-docs for feedback!

Changes
- This PR updates the new tests for the updated
astro info
to be skipped command in Vite's ecosystem CI due to manual version overrides being made on their end, which messes with the test result. Refer to this Discord thread on the Vite Discord server for more info.
Testing
- The tests were adjusted to be skipped when run in the ecosystem CI tests.
Docs
N/A (Tests only)

Changes
Testing
Docs
Description
- Closes #3383
- Updates styles applied to tab labels so that they work better for long labels and labels that wrap onto a second line.
- For the default case, with labels that do not wrap, the appearance is unchanged, with the vertical layout identical. However, for labels that do wrap, line height is now tighter (using Starlight’s
1.2
heading line height), making each tab label a bit more compact and a bit more visually distinct. - For tabs where only some labels wrap, this PR fixes a bug where the bottom border of a tab would not align correctly
Before | After |
---|---|
![]() |
![]() |

This gets framework components to render in workerd. SSR and client both work.
Changes
- Fix the dev pipeline's
resolve
to be dynamic. - Fix getComponentByRoute to first call getModuleForRoute which captures default routes.
- This fixes 404s which were broken
- Moves renderers into a virtual module.
Testing
- Tested with our cloudflare example app
Docs
N/A

Changes
This PR updates the Cloudflare entrypoint to generate a handler that works in dev with the env API.
Testing
This updates the Cloudflare vite plugin fixture to use the standard entrypoint, rather than the custom dev one
Docs


Changes
Adds support for content layer in workerd with env api. It's basically just removing a couple of type guards that are no longer needed that were disabling the watchers, and most of the PR is copying over the content layer fixture into the Vite plugin cf fixture
Testing
Docs

This PR contains the following updates:
Release Notes
withastro/astro (@astrojs/solid-js)
v5.1.1
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
withastro/astro (@astrojs/svelte)
v7.1.1
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
withastro/astro (@astrojs/vue)
v5.1.1
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
cloudflare/workerd (@cloudflare/workers-types)
v4.20250913.0
v4.20250912.0
v4.20250911.0
v4.20250910.0
rollup/rollup (rollup)
v4.50.2
2025-09-15
Bug Fixes
- Resolve an issue where unused destructured array pattern declarations would conflict with included variables (#6100)
Pull Requests
- #6100: Tree-shake un-included elements in array pattern (@TrickyPi)
- #6102: chore(deps): update actions/setup-node action to v5 (@renovate[bot])
- #6103: chore(deps): update dependency eslint-plugin-unicorn to v61 (@renovate[bot])
- #6104: fix(deps): update swc monorepo (major) (@renovate[bot])
- #6105: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #6107: Improve CI stability (@lukastaegert)
cloudflare/workers-sdk (wrangler)
v4.37.0
Minor Changes
-
#10546
d53a0bc
Thanks @1000hz! - On deploy or version upload, Workers with multiple environments are tagged with metadata that groups them together in the Cloudflare Dashboard. -
#10596
735785e
Thanks @penalosa! - Add Miniflare & Wrangler support for unbound Durable Objects -
#10622
15c34e2
Thanks @nagraham! - Modify R2 Data Catalog compaction commands to enable/disable for Catalog (remove table/namespace args), and require Cloudflare API token on enable.
Patch Changes
- Updated dependencies [
735785e
]:- miniflare@4.20250906.2
v4.36.0
Minor Changes
-
#10604
135e066
Thanks @penalosa! - Enable Remote Bindings without the need for the--x-remote-bindings
flag -
#10558
30f558e
Thanks @laplab! - Add commands to send queries and manage R2 SQL product. -
#10574
d8860ac
Thanks @efalcao! - Add support for VPC services CRUD viawrangler vpc service
-
#10119
336a75d
Thanks @dxh9845! - Add support for dynamically loading 'external' Miniflare plugins for unsafe Worker bindings (developed outside of the workers-sdk repo)
Patch Changes
-
#10212
0837a8d
Thanks @jamesopstad! - AddpreserveOriginalMain
option tounstable_readConfig
. This will pass the originalmain
value through, without converting it to an absolute path. -
#10541
da24079
Thanks @qjex! - stableratelimit
bindingRate Limiting in Workers is now generally available,
ratelimit
can be removed from unsafe bindings. -
#10479
ffa2600
Thanks @nagraham! - feat: Add wrangler commands for the R2 Data Catalog compaction feature -
#9955
51553ef
Thanks @penalosa! - Integrate the Cloudflare SDK into Wrangler (internal refactor) -
Updated dependencies [
e2b838f
,336a75d
]:- miniflare@4.20250906.1
v4.35.0
Minor Changes
-
#10491
5cb806f
Thanks @zebp! - Add traces, OTEL destinations, and configurable persistence to observability settingsAdds a new
traces
field to theobservability
settings in your Worker configuration that configures the behavior of automatic tracing. Bothtraces
andlogs
support providing a list of OpenTelemetry compliantdestinations
where your logs/traces will be exported to as well as an implicitly-enabledpersist
option that controls whether or not logs/traces are persisted to the Cloudflare observability platform and viewable in the Cloudflare dashboard.
Patch Changes
-
#10571
4e49d3e
Thanks @dario-piotrowicz! - add missing type forsend_email
'sexperimental_remote
field -
#10534
dceb550
Thanks @dario-piotrowicz! - updateunstable_convertConfigBindingsToStartWorkerBindings
to prioritize preview config valuesEnsure that if some bindings include preview values (e.g.
preview_database_id
for D1 bindings) those get used instead of the standard ones (since these are the ones that start worker should be using) -
Updated dependencies [
dac302c
,3b78839
]:- miniflare@4.20250906.0
- @cloudflare/unenv-preset@2.7.3
v4.34.0
Minor Changes
-
#10478
cc47b51
Thanks @danielrs! - Beta feature preview_urls is now disabled by default.This change makes preview_urls disabled by default when it's not provided, making
the feature opt-in instead of opt-out.
Patch Changes
-
#10489
6e8dd80
Thanks @WalshyDev! - Allow Wrangler to upload 100,000 assets inline with the newly increased Workers Paid limit. -
#10517
7211609
Thanks @edmundhung! - fix:wrangler vectorize list-vectors --json
now output valid json without an extra log line -
#10527
818ce22
Thanks @vicb! - Bumpunenv
to 2.0.0-rc.20The latest release include a fix for
node:tty
default export.
See the changelog for full details. -
#10519
5d69df4
Thanks @dario-piotrowicz! - Slightly improvewrangler init --from-dash
error message -
#10519
5d69df4
Thanks @dario-piotrowicz! - Internally refactor diffing andwrangler init --from-dash
logic -
#10533
c22acc6
Thanks @emily-shen! - If unset, containers.max_instances should default to 1 instead of 0. -
#10503
c0fad5f
Thanks @ichernetsky-cf! - Support setting container affinities -
#10515
c6a39f5
Thanks @emily-shen! - fix: script should be accepted as a positional arg in theversions upload
command -
Updated dependencies [
4cb3370
,818ce22
,cb22f5f
,a565291
]:- miniflare@4.20250902.0
- @cloudflare/unenv-preset@2.7.2
v4.33.2
Patch Changes
-
#10401
3c15bbb
Thanks @dario-piotrowicz! - improve diff lines ordering in remote deploy config diffing logic -
#10520
dc81221
Thanks @emily-shen! - fix: wrangler deploy dry run should not require you to be logged inFixes a bug where if you had a container where the image was an image registry link, dry run would require you to be logged in.
Also fixes a bug where container deployments were not respectingaccount_id
set in Wrangler config. -
#10393
4492eb0
Thanks @dario-piotrowicz! - Use resolved local config for remote deploy config diffing logic -
Updated dependencies [
31ecfeb
,f656d1a
,22c8ae6
,bd21fc5
,38bdb78
,4851955
]:- @cloudflare/unenv-preset@2.7.1
- miniflare@4.20250829.0
v4.33.1
Patch Changes
-
#10427
85be2b6
Thanks @dario-piotrowicz! - Simplify ENOENT debug logs for.env
files -
Updated dependencies [
76d9aa2
,452ad0b
,7c339ae
]:- @cloudflare/unenv-preset@2.7.0
- miniflare@4.20250823.1
v4.33.0
Minor Changes
- #10414
e81c2cf
Thanks @penalosa! - Support automatically updating the user's config file with newly created resources
Patch Changes
-
#10424
c4fd176
Thanks @penalosa! - Remove the--experimental-json-config
/-j
flag, which is no longer required. -
#10432
19e2aab
Thanks @anonrig! - Remove "node:tls" polyfill -
#10424
c4fd176
Thanks @penalosa! - Expose global flags fromexperimental_getWranglerCommands()
-
Updated dependencies [
19e2aab
]:- @cloudflare/unenv-preset@2.6.3
- miniflare@4.20250823.0
v4.32.0
Minor Changes
-
#10354
da40571
Thanks @edmundhung! - Enable cross-process communication forwrangler dev
with multiple config filesWorkers running in separate
wrangler dev
sessions can now communicate with each other regardless of whether you are running with single or multiple config files.Check out the Developing with multiple Workers guide to learn more about the different approaches and when to use each one.
-
#10012
4728c68
Thanks @penalosa! - Support unsafe dynamic worker loading bindings
Patch Changes
-
#10245
d304055
Thanks @edmundhung! - Migrate wrangler dev to use Miniflare dev registry implementationUpdated
wrangler dev
to use a shared dev registry implementation that now powers both the Cloudflare Vite plugin and Wrangler. This internal refactoring has no user-facing changes but consolidates registry logic for better consistency across tools. -
#10407
f534c0d
Thanks @emily-shen! - defaultcontainers.rollout_active_grace_period
to 0 -
#10425
0a96e69
Thanks @dario-piotrowicz! - Fix debugging logs not including headers for CF API requests and responsesFix the fact that
wrangler
, when run with theWRANGLER_LOG=DEBUG
andWRANGLER_LOG_SANITIZE=false
environment variables, displays{}
instead of the actual headers for requests and responses for CF API fetches -
#10337
f9f7519
Thanks @emily-shen! - containers:rollout_step_percentage
now also accepts an array of numbers. Previously it accepted a single number, and each rollout step would target the same percentage of instances. Now users can customise percentages for each step.rollout_step_percentage
also now defaults to[10,100]
(previously25
), which should make rollouts progress slightly faster.You can also use
wrangler deploy --containers-rollout=immediate
to override rollout settings in Wrangler configuration and update all instances in one step. Note this doesn't overriderollout_active_grace_period
if configured. -
Updated dependencies [
4728c68
]:- miniflare@4.20250816.1
v4.31.0
Minor Changes
-
#10314
9b09751
Thanks @dario-piotrowicz! - Show possible local vs. dashboard diff information on deploysWhen re-deploying a Worker using
wrangler deploy
, if the configuration has been modified in the Cloudflare dashboard, the local configuration will overwrite the remote one. This can lead to unexpected results for users. To address this, currentlywrangler deploy
warns users about potential configuration overrides (without presenting them) and prompts them to confirm whether they want to proceed.The changes here improve the above flow in the following way:
- If the local changes only add new configurations (without modifying or removing existing ones), the deployment proceeds automatically without warnings or prompts, as these changes are non-destructive and safe.
- If the local changes modify or remove existing configurations,
wrangler deploy
now displays a git-like diff showing the differences between the dashboard and local configurations. This allows users to review and understand the impact of their changes before confirming the deployment.
-
#10334
cadf19a
Thanks @jonesphillip! - Added queues subscription command to Wrangler including create, update, delete, get, list
Patch Changes
-
#10374
20520fa
Thanks @edmundhung! - Simplify debug package resolution with nodejs_compatA patched version of
debug
was previously introduced that resolved the package to a custom implementation. However, this caused issues due to CJS/ESM interop problems. We now resolve thedebug
package to use the Node.js implementation instead. -
#10249
875197a
Thanks @penalosa! - Support JSRPC for remote bindings. This unlocks:- JSRPC over Service Bindings
- JSRPC over Dispatch Namespace Bindings
- Pipelines
-
Updated dependencies [
565c3a3
,ddadb93
,20520fa
,875197a
]:- miniflare@4.20250816.0
- @cloudflare/unenv-preset@2.6.2
v4.30.0
Minor Changes
- #10341
76a6701
Thanks @garvit-gupta! - feat: Add Wrangler command for Vectorize list-vectors operation
Patch Changes
-
#10217
979984b
Thanks @veggiedefender! - Increase the maxBuffer size for capnp uploads -
#10356
80e964c
Thanks @WillTaylorDev! - fix: Update regex for valid branch name to remove 61 char length requirement, allowing for longer branch names to be specified for preview aliases. -
#10289
a5a1426
Thanks @emily-shen! - Cleanup container images created during local dev if no changes have been made.We now untag old images that were created by Wrangler/Vite if we find that the image content and configuration is unchanged, so that we don't keep accumulating image tags.
-
#10315
0c04da9
Thanks @emily-shen! - Addrollout_active_grace_period
option to containers configuration.This allows users to configure how long an active container should keep running for during a rollout, before the upgrade is applied.
-
#10321
b524a6f
Thanks @emily-shen! - print prettier errors during container deployment -
#10253
eb32a3a
Thanks @emily-shen! - fix redeploying container apps when previous deploy failed or container (but not image) was deleted.Previously this failed with
No changes detected but no previous image found
as we assumed there would be a previous deployment when an image exists in the registry. -
#9990
4288a61
Thanks @penalosa! - Fix startup profiling when sourcemaps are enabled -
Updated dependencies [
d54d8b7
,ae0c806
]:- miniflare@4.20250813.1
v4.29.1
Patch Changes
- Updated dependencies [
5020694
]:- miniflare@4.20250813.0
v4.29.0
Minor Changes
-
#10283
80960b9
Thanks @WillTaylorDev! - Support long branch names in generation of branch aliases in WCI. -
#10312
bd8223d
Thanks @devin-ai-integration! - Added--domain
flag towrangler deploy
command for deploying to custom domains. Use--domain example.com
to deploy directly to a custom domain without manually configuring routes. -
#8318
8cf47f9
Thanks @gnekich! - Introduce json output flag for wrangler pages deployment list
Patch Changes
-
#10232
e7cae16
Thanks @emily-shen! - fix: validatewrangler containers delete ID
to ensure a valid ID has been provided. Previously if you provided the container name (or any non-ID shaped string) you would get an auth error instead of a 404. -
#10139
3b6ab8a
Thanks @dom96! - Removes mention of cf-requirements when Python Workers are enabled -
#10259
c58a05c
Thanks @dario-piotrowicz! - Ensure thatmaybeStartOrUpdateRemoteProxySession
considers the potential account_id from the user's wrangler configCurrently if the user has an
account_id
in their wrangler config file, such id won't be taken into consideration for the remote proxy session, the changes here make sure that it is (note that theauth
option ofmaybeStartOrUpdateRemoteProxySession
, if provided, takes precedence over this id value).The changes here also fix the same issue for
wrangler dev
andgetPlatformProxy
(since they usemaybeStartOrUpdateRemoteProxySession
under the hook). -
#10288
42aafa3
Thanks @tgarg-cf! - Do not attempt to update queue producer settings when deploying a Worker with a queue bindingPreviously, each deployed Worker would update a subset of the queue producer's settings for each queue binding, which could result in broken queue producers or at least conflicts where different Workers tried to set different producer settings on a shared queue.
-
#10242
70bd966
Thanks @devin-ai-integration! - Add experimental API to expose Wrangler command tree structure for documentation generation -
#10258
d391076
Thanks @nikitassharma! - Add the option to allow all tiers when creating a container -
#10248
422ae22
Thanks @emily-shen! - fix: re-push container images on deploy even if the only change was to the Dockerfile -
#10179
5d5ecd5
Thanks @pombosilva! - Prevent defining multiple workflows with the same "name" property in the same wrangler file -
#10232
e7cae16
Thanks @emily-shen! - include containers API calls in output of WRANGLER_LOG=debug -
#10243
d481901
Thanks @devin-ai-integration! - Remove async_hooks polyfill - now uses native workerd implementationThe async_hooks module is now provided natively by workerd, making the polyfill unnecessary. This improves performance and ensures better compatibility with Node.js async_hooks APIs.
-
#10060
9aad334
Thanks @edmundhung! - refactor: switchgetPlatformProxy()
to use Miniflare's dev registry implementationUpdated
getPlatformProxy()
to use Miniflare's dev registry instead of Wrangler's implementation. Previously, you had to start a wrangler or vite dev session before accessing the proxy bindings to connect to those workers. Now the order doesn't matter. -
#10219
28494f4
Thanks @dario-piotrowicz! - fixNonRetryableError
thrown with an empty error message not stopping workflow retries locally -
Updated dependencies [
1479fd0
,05c5b28
,e3d9703
,d481901
]:- miniflare@4.20250803.1
- @cloudflare/unenv-preset@2.6.1
v4.28.1
Patch Changes
-
#10130
773cca3
Thanks @dario-piotrowicz! - updatemaybeStartOrUpdateRemoteProxySession
config argument (to allow callers to specify an environment)Before this change
maybeStartOrUpdateRemoteProxySession
could be called with either the path to a wrangler config file or the configuration of a worker. The former override however did not allow the caller to specify an environment, so themaybeStartOrUpdateRemoteProxySession
API has been updated so that in the wrangler config case an object (with the path and a potential environment) needs to be passed instead.For example, before callers could invoke the function in the following way
await maybeStartOrUpdateRemoteProxySession(configPath);
note that there is no way to tell the function what environment to use when parsing the wrangle configuration.
Now callers will instead call the function in the following way:
await maybeStartOrUpdateRemoteProxySession({ path: configPath, environment: targetEnvironment, });
note that now a target environment can be specified.
-
#10130
773cca3
Thanks @dario-piotrowicz! - fixgetPlatformProxy
not taking into account the potentially specified environment for remote bindings -
#10122
2e8eb24
Thanks @dario-piotrowicz! - fixstartWorker
not respectingauth
options for remote bindingsfix
startWorker
currently not taking into account theauth
field
that can be provided as part of thedev
options when used in conjunction
with remote bindingsexample:
Given the following
import { unstable_startWorker } from "wrangler"; const worker = await unstable_startWorker({ entrypoint: "./worker.js", bindings: { AI: { type: "ai", experimental_remote: true, }, }, dev: { experimentalRemoteBindings: true, auth: { accountId: "<ACCOUNT_ID>", apiToken: { apiToken: "<API_TOKEN>", }, }, }, }); await worker.ready;
wrangler
will now use the provided<ACCOUNT_ID>
and<API_TOKEN>
to integrate with
the remote AI binding instead of requiring the user to authenticate. -
#10209
93c4c26
Thanks @devin-ai-integration! - fix: strip ANSI escape codes from log files to improve readability and parsing -
#9774
48853a6
Thanks @nikitassharma! - Validate container configuration against account limits in wrangler to give early feedback to the user -
#10122
2e8eb24
Thanks @dario-piotrowicz! - fix incorrect TypeScript type for AI binding in thestartWorker
API
v4.28.0
Minor Changes
- #9530
e82aa19
Thanks @Akshit222! - Add --json flag to r2 bucket info command for machine-readable output.
Patch Changes
-
#10004
b4d1373
Thanks @dario-piotrowicz! - fixwrangler dev
logs being logged on the incorrect level in some casescurrently the way
wrangler dev
prints logs is faulty, for example the following codeconsole.error("this is an error"); console.warn("this is a warning"); console.debug("this is a debug");
inside a worker would cause the following logs:
✘ [ERROR] this is an error ✘ [ERROR] this is a warning this is a debug
(note that the warning is printed as an error and the debug log is printed even if by default it should not)
the changes here make sure that the logs are instead logged to their correct level, so for the code about the following will be logged instead:
✘ [ERROR] this is an error ▲ [WARNING] this is a warning
(running
wrangler dev
with the--log-level=debug
flag will also cause the debug log to be included as well) -
#10099
360004d
Thanks @emily-shen! - fix: move local dev container cleanup to process exit hook. This should ensure containers are cleaned up even when Wrangler is shut down programatically. -
#10186
dae1377
Thanks @matthewdavidrodgers! - Deleting when Pages project binds to worker requires confirmation -
#10169
1655bec
Thanks @devin-ai-integration! - fix: report startup errors before workerd profiling -
#10136
354a001
Thanks @nikitassharma! - Updatewrangler containers images list
to make fewer API calls to improve command runtime -
#10157
5c3b83f
Thanks @devin-ai-integration! - Enforce 64-character limit for Workflow binding names locally to match production validation -
#10154
502a8e0
Thanks @devin-ai-integration! - Fix UTF BOM handling in config files - remove UTF-8 BOM and error on other BOMs -
#10176
07c8611
Thanks @devin-ai-integration! - Add macOS version validation to prevent EPIPE errors on unsupported macOS versions (below 13.5). Miniflare and C3 fail hard while Wrangler shows warnings but continues execution. -
Updated dependencies [
6b9cd5b
,631f26d
,d6ecd05
,b4d1373
,8ba7736
,07c8611
,7e204a9
,3f83ac1
]:- @cloudflare/unenv-preset@2.6.0
- miniflare@4.20250803.0
v4.27.0
Minor Changes
-
#9914
a24c9d8
Thanks @petebacondarwin! - Add support for loading local dev vars from .env filesIf there are no
.dev.vars
or.dev.vars.<environment>
files, when running Wrangler or the Vite plugin in local development mode,
they will now try to load additional local dev vars from.env
,.env.local
,.env.<environment>
and.env.<environment>.local
files.These loaded vars are only for local development and have no effect in production to the vars in a deployed Worker.
Wrangler and Vite will continue to load.env
files in order to configure themselves as a tool.Further details:
- In
vite build
the local vars will be computed and stored in a.dev.vars
file next to the compiled Worker code, so thatvite preview
can use them. - The
wrangler types
command will similarly read the.env
files (if no.dev.vars
fil
- In
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

This PR contains the following updates:
Release Notes
debug-js/debug (debug)
v4.4.3
Functionally identical release to 4.4.1
.
Version 4.4.2
is compromised. Please see #1005.
preactjs/preact (preact)
v10.27.2
Types
- Mirror non-JSX types to the 'preact' namespace (#4904, thanks @rschristian)
Fixes
- Address memory leak (#4906, thanks @JoviDeCroock)
sveltejs/svelte (svelte)
v5.38.10
Patch Changes
- fix: flush effects scheduled during boundary's pending phase (#16738)
v5.38.9
Patch Changes
-
chore: generate CSS hash using the filename (#16740)
-
fix: correctly analyze
<object.property>
components (#16711) -
fix: clean up scheduling system (#16741)
-
fix: transform input defaults from spread (#16481)
-
fix: don't destroy contents of
svelte:boundary
unless the boundary is an error boundary (#16746)
v5.38.8
Patch Changes
- fix: send
$effect.pending
count to the correct boundary (#16732)
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Changes
- This PR fixes a mistake previously missing from #14300 where the new
astro info
command tests would fail if one of the versions from the package.json in the fixture was bumped, like seen in #14351.
Testing
The tests themselves were adjusted to make sure this doesn't happen anymore. The versions for integrations and the adapter (if available) are now read in from the package.json.
Docs
N/A (Internal tests only)

This PR contains the following updates:
Package | Change | Age | Confidence |
---|---|---|---|
@astrojs/node (source) | 9.4.0 -> 9.4.1 |
GitHub Vulnerability Alerts
CVE-2025-55207
Summary
Following GHSA-cq8c-xv66-36gw, there's still an Open Redirect vulnerability in a subset of Astro deployment scenarios.
Details
Astro 5.12.8 fixed a case where https://example.com//astro.build/press
would redirect to the external origin //astro.build/press
. However, with the Node deployment adapter in standalone mode and trailingSlash
set to "always"
in the Astro configuration, https://example.com//astro.build/press
still redirects to //astro.build/press
.
Proof of Concept
- Create a new minimal Astro project (
astro@5.12.8
) - Configure it to use the Node adapter (
@astrojs/node@9.4.0
) and force trailing slashes:// astro.config.mjs import { defineConfig } from 'astro/config'; import node from '@​astrojs/node'; export default defineConfig({ trailingSlash: 'always', adapter: node({ mode: 'standalone' }), });
- Build the site by running
astro build
. - Run the server, e.g. with
astro preview
. - Append
//astro.build/press
to the preview URL, e.g. http://localhost:4321//astro.build/press - The site will redirect to the external Astro Build origin.
Example reproduction
- Open this StackBlitz reproduction.
- Open the preview in a separate window so the StackBlitz embed doesn't cause security errors.
- Append
//astro.build/press
to the preview URL, e.g.https://x.local-corp.webcontainer.io//astro.build/press
. - See it redirect to the external Astro Build origin.
Impact
This is classified as an Open Redirection vulnerability (CWE-601). It affects any user who clicks on a specially crafted link pointing to the affected domain. Since the domain appears legitimate, victims may be tricked into trusting the redirected page, leading to possible credential theft, malware distribution, or other phishing-related attacks.
No authentication is required to exploit this vulnerability. Any unauthenticated user can trigger the redirect by clicking a malicious link.
Release Notes
withastro/astro (@astrojs/node)
v9.4.1
Patch Changes
5fc3c59
Thanks @ematipico! - Fixes a routing bug in standalone mode withtrailingSlash
set to"always"
.
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Changes
When looking at ways to catch misuse of live collections I realised that currently we're silently ignoring errors when parsing content config. This PR changes it to log errors in these cases. Because these aren't currently fatal errors, throwing would be a breaking change, so I'm just logging for now.
Additionally, if live collections are enabled then it checks if it failed becausecreateLiveCollection
has been used in content.config.ts
and if so it does throw an error (which was I was originally trying to do).

Testing
Docs
The <summary>
element must be the first child of <details>
.
The <summary> element
can only contain phrasing content elements like <span>
, not flow content elements like <div>
.
This makes no styling difference in these cases, as these are flexbox children.
The <select>
element does not have a value
attribute. (There is a value
property on the HTMLSelectElement
object, but that’s different.)
Remove these invalid HTML tags from the output when context.site
is unset:
<link rel="canonical"/>
with missinghref
<meta property="og:url"/>
with missingcontent

Changes
This PR does a further refactor of our internals. The main issue I was facing was the fact that I was trying to use the DevApp
both in our internal dev server and the dev server spawned by external plugins such as Cloudflare.
This wasn't working and driving me nuts because DevApp
uses a lot of Node.js APIs across the board. It was mental. So after thinking more about what @ascorbic said, we should try to use App
instead, it actually made sense and it was the right approach. However, in dev, we handle a few things differently compared to production. For example, we handle 500
errors differently in dev.
So now, we have two apps:
AstroServerApp
(which uses its ownAstroServerPipeline
)DevApp
(which uses its ownDevPipeline
)
AstroServerApp
It uses the code and business logic we currently use in our Astro server. The old DevPipeline
has been renamed to AstroServerPipeline
DevApp
This new DevApp
is mostly the same as App
. They both use the same methods (such as render
), they slightly differ in the match
implementation, for example.
Since App
and DevApp
share the same logic, they are runtime-agnostic.
The new DevPipeline
, for now, is a copy-paste of AppPipeline
, however, we changed the logic of the function getComponentByRoute
. In development, we don't have the compiled Astro files, so we need to dynamically import them e.g. import("path/to/file.astro)
. Eventually, in dev, our rollup plugin is triggered, and it should return the compiled code.
Testing
Minimal and react examples still work locally
Docs

Changes
- TS changed the definitions of some types, so I tried to convert data properly in
441d7dc
(#14304) - However this breaks eg. cloudflare, so insted I replaced those by type casts
Testing
Should pass
Docs
Changeset

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@astrojs/db@0.18.0
Minor Changes
-
#14204
d71448e
Thanks @Adammatthiesen! - Adds a new libSQL web driver to support environments that require a non-Node.js libSQL client such as Cloudflare or Deno. Also adds a newmode
configuration option to allow you to set your client connection type:node
(default) orweb
.The default db
node
driver mode is identical to the previous AstroDB functionality. No changes have been made to how AstroDB works in Node.js environments, and this is still the integration's default behavior. If you are currently using AstroDB, no changes to your project code are required and setting amode
is not required.However, if you have previously been unable to use AstroDB because you required a non-Node.js libSQL client, you can now install and configure the libSQL web driver by setting
mode: 'web'
in yourdb
configuration:import db from '@astrojs/db'; import { defineConfig } from 'astro/config'; // https://astro.build/config export default defineConfig({ integrations: [db({ mode: 'web' })], });
For more information, see the
@astrojs/db
documentation.
@astrojs/sitemap@3.6.0
Minor Changes
-
#14285
bedc31b
Thanks @jdcolombo! - Adds a new configuration optionnamespaces
for more control over XML namespaces used in sitemap generationExcluding unused namespaces can help create cleaner, more focused sitemaps that are faster for search engines to parse and use less bandwidth. If your site doesn't have news content, videos, or multiple languages, you can exclude those namespaces to reduce XML bloat.
The
namespaces
option allows you to configurenews
,xhtml
,image
, andvideo
namespaces independently. All namespaces are enabled by default for backward compatibility and no change to existing projects is necessary. But now, you can choose to streamline your XML and avoid unnecessary code.For example, to exclude the video namespace from your sitemap, set
video: false
in your configuration:// astro.config.mjs import { sitemap } from '@astrojs/sitemap'; export default { integrations: [ sitemap({ namespaces: { video: false, // other namespaces remain enabled by default } }) ] };
The generated XML will not include the
xmlns:video
namespace:<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" > <!-- ... --> </urlset>
astro@5.13.8
Patch Changes
-
#14300
bd4a70b
Thanks @louisescher! - Adds Vite version & integration versions to output ofastro info
-
#14341
f75fd99
Thanks @delucis! - Fixes support for declarative Shadow DOM when using the<ClientRouter>
component -
#14350
f59581f
Thanks @ascorbic! - Improves error reporting for content collections by adding logging for configuration errors that had previously been silently ignored. Also adds a new error that is thrown if a live collection is used incontent.config.ts
rather thanlive.config.ts
. -
#14343
13f7d36
Thanks @florian-lefebvre! - Fixes a regression in non node runtimes

Changes
- Fixes #14340
<ClientRouter>
usesDOMParser
to parse the HTML fetched by the router, but this does not support attaching declarative Shadow DOM (<template>
elements using theshadowrootmode
attribute) the same way as browsers do when pages load normally.- One fix would be to use APIs like
document.parseHTMLUnsafe()
, but that would be more disruptive to our code (especially as it’s not widely supported yet so would need a polyfill), so instead I left theDOMParser
untouched and manually upgrade any templates in theswapBodyElement()
function. - The function used is based on this polyfill.
Testing
New E2E test in the view transition fixture.
- Failing in
c1317b0
which adds only the new test: ❌ test run - Passing in
2d49c8c
, which adds logic to attach shadow roots during transitions: ✅ test run
Docs
N/A — bug fix.

Changes
- Adds
collapseHeaders
option toexperimental.csp
configuration - When used with adapters supporting
experimentalStaticHeaders
, consolidates all CSP headers into a single catch-all route - Prevents build errors for large sites with many routes / large CSP config
- Reduces configuration file size from MB to KB for large sites (especially with i18n)
- Maintains full backward compatibility with existing CSP usage
- Benefits all adapters that support
experimentalStaticHeaders
automatically (Vercel, Netlify, Node)
Before: 15k+ individual CSP route entries → 9MB config file → Build failures
After: 1 global CSP route entry → 10KB config file → Successful builds
Reference: #13996 (comment)
Usage:
// Default behavior (unchanged)
experimental: {
csp: true
}
// New option
experimental: {
csp: {
collapseHeaders: true
}
}
Testing
- Added tests for all (3) adapters that support
experimentalStaticHeaders
using existingstatic-headers.test.js
files for Vercel, Netlify, and Node adapters. - Created test fixtures with
collapseHeaders: true
configuration for each adapter - Verified collapsed headers create single catch-all route entries across all platforms
- Confirmed backward compatibility with existing CSP configurations
- All tests passing
Docs
This is a core CSP feature that works universally with all adapters supporting experimentalStaticHeaders
which affects behavior for large sites experiencing build size limits with CSP enabled.
Documentation updates needed for:
- New
collapseHeaders
option in experimental CSP configuration - When to use collapsed vs per-route CSP headers
- Usage examples with different adapters
- Build / performance implications and best practices
/cc @withastro/maintainers-docs for feedback!

Changes
This PR does the following:
- adds a new specifier to Astro named
astro/app/dev
. This new specifier exposes two bindings: adefault
, which iscreateExports
, andDevApp
if users need to use it - adds a
devEntrypoint
to the adapters, which is used inside the Astro dev server plugin. If it is absent, the plugin usesastro/app/dev
as a fallback
This should get us closer to use the cloudflare plugin
Testing
Minimal and React examples still work
Docs

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.13.7
Patch Changes

Changes
- Bumps sharp optional peer dep min version to 0.34.0
- Updates sharp in various fixtures
- Removed an outdated renovate config
Testing
Should still pass
Docs
Changeset

Changes
This refactors the dev server to use an entrypoint to load the application.
Testing
The minimal example works, the react example works.
Docs

Changes
The vulnerable version of simple-swizzle has been removed from npm, so we can remove this when we next publish
Testing
Docs

Changes
Pins to avoid a compromised dep
Testing
Docs

Changes
Update vite to 6.3.6 to fix :
Testing
should pass
Docs
N/A

Changes
This PR fixes a regression where createRoutesList
is called twice: once when creating the build runner, once inside the plugin.
This unfortunately calls createRoutesList
twice. I will fix this problem in a later PR
Testing
New tests are now passing
Docs

Changes
Creates an environment called content
that is used to load the content config. This allows it to happen when the main dev environment is a non-runnable env.
This also changes a few other uses of ssr
to remove the type guard, when they don't need the runner.
Testing
Manually tested some content layer fixtures
Docs

Changes
- Adds experimental content layer data store splitting when saving to disk.
- This avoids both handling enormous strings in large content collections, and file size limits for certain deployment platforms for medium and large collections.
- Data store is now a directory, with manifest file that allows for recreation of collections.
- Splitting strategy:
- Split by collection, then
- Split entries into chunks of 1000
- Use
devalue
to stringify the chunk of 1000 entries - Further split the resulting string into smaller parts not greater than 20MB
- Resolves withastro/roadmap#1213
- Resolves #13360
Manifest format:
Testing
Content layer tests have already great coverage, I've added test cases where relevant to run the suite with experimental flag as well.
Docs
Needs a new experimental feature page.
/cc @withastro/maintainers-docs
Description
Pending the release of Algolia's @docsearch/js@3.10.0, which will add support for customizing keyboard shortcuts, this PR does the work to render these custom keyboard shortcuts in the @astrojs/starlight-docsearch component.
I'm now relying on the default rendering of these buttons for Ctrl/Cmd+K
, but kept the familiar /
rendering. Happy to change it too, but figured you'd probably prefer consistency where possible.
With all keyboard shortcuts disabled

With Ctrl/Cmd+K
enabled

With /
enabled


Changes
- Adds
globalCsp
option toexperimentalStaticHeaders
configuration in@astrojs/vercel
- Prevents "Body exceeded 3300kb limit" Vercel build errors for large sites with CSP enabled
- Consolidates duplicate CSP headers into a single catch-all
/(.*)
route entry - Reduces
.vercel/output/config.json
file size from MB to KB for large sites - Maintains full backward compatibility with existing
experimentalStaticHeaders: true
usage
Astro Site with ~2,500 static pages:
Before: 15k+ individual CSP route entries → 9MB config file → Vercel build failure
After: 1 global CSP route entry → 10KB config file → Successful builds
Usage:
// Default (unchanged)
experimentalStaticHeaders: true
// New global option
experimentalStaticHeaders: {
globalCsp: true
}
Reference: #13996 (comment)
Testing
- Extended existing
test/static-headers.test.js
with global CSP mode tests - Added
test/fixtures/static-headers-global/
fixture to test global CSP functionality - Verified global mode creates single
/(.*)
route with CSP header - Confirmed backward compatibility with existing boolean configuration
- All tests passing: 3 tests, 2 suites, 0 failures
Test command: cd packages/integrations/vercel && node --test test/static-headers.test.js
Docs
This change affects user behavior for large sites experiencing Vercel build size limits. Documentation updates needed for:
- New
globalCsp
option in Vercel adapter configuration - When to use global vs per-route CSP (large sites vs granular control)
- Migration guide for sites hitting Vercel build limits
/cc @withastro/maintainers-docs for feedback!

Changes
This PR adds a new virtual module that allows to return the list of routes inside an Astro project.
This virtual module essentially replaces the RoutesList
type that we create when we start the dev server.
Testing
Unit tests should pass. Integration tests pass on my machine, they will still time out here
Docs
N/A

Changes
- Added --concurrency=auto flag to ESLint commands for improved performance
Testing
Docs
No user-facing behavior changes.

Changes
Adds the Cloudflare Vite plugin. This takes over the dev server and runs its own.
Testing
Docs

@playwright/test 1.55.0
cheerio 1.1.2
typescript 5.9.2
rollup: 4.50.0
saas: 1.91.0
Changes
- Extracted from #13749
Testing
Docs



Changes
Removes generate
from RouteData
. generate
is still present in IntegrationRouteData
The reason why we want to remove this function from RouteData
is because we plan to make RouteData[]
a virtual module, so downstream plugins can pull the data whenever they want.
Testing
CI currently times out, however I made sure that locally no tests broke.
Docs
N/A

Changes
The handling of base paths with trailingSlash never was causing an empty pattern to be generated for the root index. This PR ensures that it will always match /
Fixes #14245
Testing
Fixed a test that was missing this
Docs

Changes
This PR adds information about the versions of Vite and the installed integrations when running astro info
. It does so by modifying the current info
command and resolving the package.json
files of both Astro and the integrations using the createRequire
function.
In cases where the name of the integration does not match the package's name, no version information is displayed.
Testing
A new test was added to check whether the correct version of Vite is displayed.
Docs
The output on https://docs.astro.build/en/reference/cli-reference/#astro-info is now (even more) outdated.

Changes
This PR refactors how the manifest is computed and pulled during development and build.
There's a new module called astro:serialized-manifest
. While it returns a deserialised manifest, it's actually deserialised during its creation. It means that it's computed from AstroSettings
, and it's deserialised inside the virtual module.
Happy to bikeshed the name.
Now astro:config/server
and astro:config/client
use this module to pull the information. Plus, I refactored them to use this.environment.name
instead of opts.ssr
Testing
Updated. They should all pass
Docs
N/A

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.13.6
Patch Changes
-
#14294
e005855
Thanks @martrapp! - Restores the ability to use Google AnalyticsHistory change trigger
with the<ClientRouter />
. -
#14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE -
#14108
218e070
Thanks @JusticeMatthew! - Updates dynamic route split regex to avoid infinite retries/exponential complexity -
#14327
c1033be
Thanks @ascorbic! - Pins simple-swizzle to avoid compromised version
@astrojs/db@0.17.2
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
@astrojs/alpinejs@0.4.9
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
@astrojs/cloudflare@12.6.8
Patch Changes
-
#14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/markdoc@0.15.6
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
@astrojs/mdx@4.3.5
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
@astrojs/netlify@6.5.10
Patch Changes
-
#14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/preact@4.1.1
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
@astrojs/react@4.3.1
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
@astrojs/solid-js@5.1.1
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
@astrojs/svelte@7.1.1
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
@astrojs/vue@5.1.1
Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
Last fetched: | Scheduled refresh: Every Saturday
See Customizing GitHub Activity Pages to configure your own
Inspired by prs.atinux.com