AstroEco is Contributing…
Display your GitHub pull requests using astro-loader-github-prs
This PR significantly improves Starlight performance by implementing lazy loading for two major bundles that previously impacted initial load times and rendering metrics:
-
Lazy Load Starlight Built-in Translations: (Commit 89a0c52) Moved from eager to lazy loading for built-in translation JSON files. Only English is loaded by default for type inference and as a fallback, while other languages are dynamically imported only when required by the project locale. This reduces the server-side memory footprint and the size of the initial localization bundle.
-
Lazy Load Pagefind UI: Optimized the Search.astro component to defer the loading of the @pagefind/default-ui bundle (~73kB). Previously loaded on DOMContentLoaded, it now loads only when a user first interacts with the search button or shortcut (Ctrl+K). A prefetch hint has been added to ensure the search UI remains responsive when needed.
What does this PR change? Implements on-demand loading for Starlight translations and the Pagefind search interface to optimize Core Web Vitals.
Did you change something visual? No. The UI remains identical, but the background loading logic is now significantly more efficient.
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.16.16
Patch Changes
Changes
This updates a JSDoc comment to remove the await keyword on Astro.getActionResult since it doesn't return a promise.
I came upon this small issue when using intellsense for the Astro.getActionResult and saw that it said await but in the docs it didn't have an await.
Testing
There is no need for testing since this is a JSDoc update.
Docs
No docs needed. This change makes the JSDoc for the getActionResult function congruent with the docs: https://docs.astro.build/en/reference/api-reference/#getactionresult
This PR contains the following updates:
Release Notes
preactjs/signals (@preact/signals)
v2.6.1
Patch Changes
- #836
ac5032eThanks @JoviDeCroock! - Ensure that theForandShowcomponent have display-names
v2.6.0
Minor Changes
- #819
8a8b0d1Thanks @JoviDeCroock! - Remove the need for enter/exit component and track the effects normally
Patch Changes
-
#827
f17889bThanks @JoviDeCroock! - Add mangle entry for _debugCallback -
Updated dependencies [
f17889b]:- @preact/signals-core@1.12.2
fb55/htmlparser2 (htmlparser2)
v10.1.0
What's Changed
- entities was bumped from 6.0.1 to 7.0.1, bringing size & speed improvements #2215
- Test files are no longer shipped in the published module
72da671
New Contributors
Full Changelog: fb55/htmlparser2@v10.0.0...v10.1.0
publint/publint (publint)
v0.3.17
Patch Changes
-
Fix packing packages with pnpm when
publishConfig.directoryis set (#216) -
Updated dependencies [
2dcb107]:- @publint/pack@0.1.3
sass/dart-sass (sass)
v1.97.3
- Fix a bug where nesting an at-rule within multiple style rules in plain CSS
could cause outer style rules to be omitted.
sveltejs/svelte (svelte)
v5.48.0
Minor Changes
- feat: export
parseCssfromsvelte/compiler(#17496)
Patch Changes
-
fix: handle non-string values in
svelte:elementthisattribute (#17499) -
fix: faster deduplication of dependencies (#17503)
v5.47.1
Patch Changes
- fix: trigger
selectedcontentreactivity (#17486)
v5.47.0
Minor Changes
- feat: customizable
<select>elements (#17429)
Patch Changes
typescript-eslint/typescript-eslint (typescript-eslint)
v8.53.1
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.
syntax-tree/unist-util-visit (unist-util-visit)
v5.1.0
Types
8607d64Refactor to use@importsefbed8aAdd declaration maps639c0e5Fix type support for readonly arrays
by @JounQin in #40
Full Changelog: syntax-tree/unist-util-visit@5.0.0...5.1.0
vuejs/core (vue)
v3.5.27
Bug Fixes
- compile-sfc: correctly handle variable shadowing in for loop for
definePropsdestructuring. (#14296) (6a1bb50), closes #14294 - compiler-sfc: handle indexed access types in declare global blocks (#14260) (e4091fe), closes #14236
- compiler-sfc: use correct scope when resolving indexed access types from external files (#14297) (f0f0a21), closes #14292
- reactivity: collection iteration should inherit iterator instance methods (#12644) (3c8b2fc), closes #12615
- runtime-core: skip patching reserved props for custom elements (#14275) (19cc7e2), closes #14274
- server-renderer: use ssrRenderClass helper for className attribute (#14327) (a4708f3)
- ssr: handle v-bind modifiers during render attrs (#14263) (c2f5964), closes #14262
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 changes the sponsors to reflect our current top sponsors in alphabetical order.
Testing
Docs
Changes
This PR addresses #15271 adding an optional embeddedLangs prop to <Code /> :
- Previously,
<Code />creates a shiki highlighter withlangs: [lang]. - This usually works great. Embedded langs are already included in canonical situations like ts-in-svelte without a need for additional
langs. - But in some less canonical cases e.g. tsx-in-vue, more control is needed over the
langsparam for shiki to correctly highlight - Now shiki highlighter is created with
langs: [lang, ...embeddedLangs]
Testing
- Create fixture using TSX in Vue
- Without
langssupport, settinglangto "vue" results in the main line of TSX being one long<span />. - With
langssupport, each TSX token is its own<span /> - Test for a
<span />containing the lone string "const"
Docs
Docs will need an update here (can I do this for en? Would I submit an issue there first or just a PR?)
/cc @withastro/maintainers-docs
fixes: #13400
Changes
I removed the is:raw attribute from the code generated by the rehype-prism plugin.
Summary of Comment: #13400 (comment)
-
The
is:rawattribute is handled within @astrojs/compiler. -
@astrojs/compiler is used within
astroVitePlugin. -
Subsequent plugins do not use @astrojs/compiler. (Search results for the
compilefunction usingtransformimported from @astrojs/compiler) -
The
markdownVitePlugin, which uses the rehype-prism plugin, is configured afterastroVitePlugin. -
Consequently, this causes the
is:rawattribute added bymarkdownVitePluginto remain unchanged until the end.
astro/packages/astro/src/core/create-vite.ts
Lines 152 to 162 in 8ca97e1
| astroLoadFallbackPlugin({ fs, root: settings.config.root }), | |
| astroVitePlugin({ settings, logger }), | |
| astroScriptsPlugin({ settings }), | |
| // The server plugin is for dev only and having it run during the build causes | |
| // the build to run very slow as the filewatcher is triggered often. | |
| command === 'dev' && vitePluginAstroServer({ settings, logger, fs, routesList, manifest }), // manifest is only required in dev mode, where it gets created before a Vite instance is created, and get passed to this function | |
| importMetaEnv({ envLoader }), | |
| astroEnv({ settings, sync, envLoader }), | |
| vitePluginAdapterConfig(settings), | |
| markdownVitePlugin({ settings, logger }), | |
| htmlVitePlugin(), |
Testing
I added a test to verify that the is:raw attribute is not included in the post-build code.
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 next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
astro@6.0.0-beta.4
Patch Changes
- #15279
8983f17Thanks @ematipico! - Fixes an issue where the dev server would serve files like/README.mdfrom the project root when they shouldn't be accessible. A new route guard middleware now blocks direct URL access to files that exist outside ofsrcDirandpublicDir, returning a 404 instead.
Changes
- Fixes #14353
- Prevents infinite loop in
resolveClientDir()when server folder is not found - Throws a descriptive error instead of hanging indefinitely
Testing
Existing tests pass.
Docs
N/A, bug fix
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.16.15
Patch Changes
- #15286
0aafc83Thanks @florian-lefebvre! - Fixes a case where font providers provided as class instances may not work when using the experimental Fonts API. It affected the local provider
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 next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
@astrojs/markdown-remark@7.0.0-beta.2
Minor Changes
- #15277
cb99214Thanks @ematipico! - Fixes an issue where the functioncreateShikiHighlighterwould always create a new Shiki highlighter instance. Now the function returns a cached version of the highlighter based on the Shiki options. This should improve the performance for sites that heavily rely on Shiki and code in their pages.
Patch Changes
- Updated dependencies [
11efb05]:- @astrojs/prism@4.0.0-beta.2
astro@6.0.0-beta.3
Patch Changes
-
#15277
cb99214Thanks @ematipico! - Fixes an issue where the functioncreateShikiHighlighterwould always create a new Shiki highlighter instance. Now the function returns a cached version of the highlighter based on the Shiki options. This should improve the performance for sites that heavily rely on Shiki and code in their pages. -
#15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22 -
Updated dependencies [
cb99214]:- @astrojs/markdown-remark@7.0.0-beta.2
@astrojs/prism@4.0.0-beta.2
Patch Changes
- #15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22
create-astro@5.0.0-beta.2
Patch Changes
- #15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22
@astrojs/markdoc@1.0.0-beta.5
Patch Changes
-
#15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22 -
Updated dependencies [
cb99214,11efb05]:- @astrojs/markdown-remark@7.0.0-beta.2
- @astrojs/prism@4.0.0-beta.2
@astrojs/mdx@5.0.0-beta.2
Patch Changes
-
#15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22 -
Updated dependencies [
cb99214]:- @astrojs/markdown-remark@7.0.0-beta.2
@astrojs/preact@5.0.0-beta.2
Patch Changes
- #15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22
@astrojs/react@5.0.0-beta.2
Patch Changes
- #15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22
@astrojs/solid-js@6.0.0-beta.2
Patch Changes
- #15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22
@astrojs/svelte@8.0.0-beta.1
Patch Changes
- #15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22
@astrojs/upgrade@0.7.0-beta.2
Patch Changes
- #15264
11efb05Thanks @florian-lefebvre! - Lower the Node version requirement to allow running on Stackblitz until it supports v22
Changes
- Reported by a user on Discord:
TypeError: Cannot write private member #root to an object whose class did not declare it - Zod remaps object but we want to keep the initial value instead, so that
thisremains valid
Testing
Manually + unit test
Docs
Changeset
Changes
Fix for #15282 and code piece was taken from zod4-final branch.
Changes
- Encrypts the
componentExportprop in server islands. - This is not a security issue, as you could only call other Astro components and would not be able to control the props. And only if the module is a barrel file.
Testing
- Updated tests
Docs
N/A, bug fix
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
Changes
Closes #15273
Important
I vibe coded this PR using Claude Code.
This PR creates a new vite middleware that prevents the exposure of requests of files that are outside of publicDir and srcDir
I reviewed the code, and it seems fine.
Testing
Added new tests. CI should stay green
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.16.14
Patch Changes
-
#15213
c775fceThanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyUpdates how the local provider must be used when using the experimental Fonts API
Previously, there were 2 kinds of font providers: remote and local.
Font providers are now unified. If you are using the local provider, the process for configuring local fonts must be updated:
-import { defineConfig } from "astro/config"; +import { defineConfig, fontProviders } from "astro/config"; export default defineConfig({ experimental: { fonts: [{ name: "Custom", cssVariable: "--font-custom", - provider: "local", + provider: fontProviders.local(), + options: { variants: [ { weight: 400, style: "normal", src: ["./src/assets/fonts/custom-400.woff2"] }, { weight: 700, style: "normal", src: ["./src/assets/fonts/custom-700.woff2"] } // ... ] + } }] } });
Once configured, there is no change to using local fonts in your project. However, you should inspect your deployed site to confirm that your new font configuration is being applied.
See the experimental Fonts API docs for more information.
-
#15213
c775fceThanks @florian-lefebvre! - ExposesrootonFontProviderinit()contextWhen building a custom
FontProviderfor the experimental Fonts API, theinit()method receives acontext. This context now exposes arootURL, useful for resolving local files:import type { FontProvider } from "astro"; export function registryFontProvider(): FontProvider { return { // ... - init: async ({ storage }) => { + init: async ({ storage, root }) => { // ... }, }; } -
#15185
edabeaaThanks @EricGrill! - Add.vercelto.gitignorewhen adding the Vercel adapter viaastro add vercel
Changes
Found this bug when I was working with CSP and Shiki.
We weren't caching instances, leading to creating an highlighter for each code block, especially if the Code component was involved multiple times.
I could have sent this to main, but we're getting closer to freezing main, so preferred next.
Testing
CI should stay green
Docs
N/A
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
Changes
- These files should not have been committed. That's because I had them on another branch where they were gitignored
Testing
N/A
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
@astrojs/db@0.19.0
Minor Changes
-
#15069
d14dfc2Thanks @webstackdev! - Adds a--db-app-tokenCLI flag toastro dbcommandsexecute,push,query, andverifyThe new Astro DB CLI flags allow you to provide a remote database app token directly instead of
ASTRO_DB_APP_TOKEN. This ensures that no untrusted code (e.g. CI / CD workflows) has access to the secret that is only needed by theastro dbcommands.The following command can be used to safely push database configuration changes to your project database:
astro db push --db-app-token <token>See the Astro DB integration documentation for more information.
astro@5.16.13
Patch Changes
-
#15182
cb60ee1Thanks @florian-lefebvre! - Adds a newgetFontBuffer()method to retrieve font file buffers when using the experimental Fonts APIThe
getFontData()helper function fromastro:assetswas introduced in 5.14.0 to provide access to font family data for use outside of Astro. One of the goals of this API was to be able to retrieve buffers using URLs.However, it turned out to be impactical and even impossible during prerendering.
Astro now exports a new
getFontBuffer()helper function fromastro:assetsto retrieve font file buffers from URL returned bygetFontData(). For example, when using satori to generate OpenGraph images:// src/pages/og.png.ts import type{ APIRoute } from "astro" -import { getFontData } from "astro:assets" +import { getFontData, getFontBuffer } 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()), + data: await getFontBuffer(data[0].src[0].url), weight: 400, style: "normal", }, ], }, ) // ... }See the experimental Fonts API documentation for more information.
Changes
Closes #15261
This PR fixes two bugs:
serverEntrywasn't working with the new adapterentryType: 'self'. We didn't catch that because we don't test against the new adapter entry point kind.serverEntrystopped working with the CF adapter, mostly due to how the CF vite plugin now works under the hood. I don't like the fix, as explained in the PR, but I couldn't find a better way. Even addingentryFilesNamesin the CF adapter couldn't work. Happy to receive advice here
Testing
I added a new testing adapter so that we can start testing against entryType: 'self'.
Added new tests to check things work as expected.
Docs
N/A
fixes: #14557
Image source for the polar bear: https://commons.wikimedia.org/wiki/File:Polar_Bear_-_Alaska_(cropped).jpg
Changes
Previously, there was an issue where unnecessary images were generated when using the Picture component. This PR fixes this issue to ensure only the required images are generated.
- Changed the
<Picture>component to read properties fromclonedSrcinstead oforiginalSrc.- This avoids generating the file named
image_HASH.jpg.
- This avoids generating the file named
- Changed the
srcproperty of thegetImagereturn value to a getter.- This ensures that the optimized image of the same size as the original is only generated when the
srcproperty is actually accessed.
- This ensures that the optimized image of the same size as the original is only generated when the
- Behavioral examples:
- When neither
widthsnordensitiesare set: Generates one WebP and one JPG each. - When
widthsis set: Generates WebP images equal towidths.length, and JPG images equal towidths.length+ 1 for the fallback. - When
densitiesis set: Generatesdensities.length+ 1 images for both WebP and JPG.
- When neither
Testing
I added tests to verify that the component behaves according to the examples described above.
Docs
I believe no documentation updates are necessary as this should not affect existing users.
Changes
- Extracted from #15145
- I don't think it's wise to include the types improvement in v6. It can occur in a minor as an experimental flag but to allow it, I need to make this breaking change for CSP
- Matching sessions, if CSP is not enabled,
context.cspwill be undefined instead of throwing when using one of its methods
Testing
Should pass
Docs
- Changeset
- withastro/docs#13079
Changes
- Astro 6 officially only supports Node 22
- Stackblitz is still on Node 20 so we relax the node version requirement for now
- However we required a too recent version of Node 20, so it lowers it to Stackblitz's version
Testing
N/A
Docs
Changeset, shouldn't be documented
Changes
- Explicitly add a
favicon.icoreference for templates that previously relied on SVG-only favicons. - Align default output with Google Search favicon guidelines to improve favicon visibility in search results.
- Prevent sites generated from SVG-only templates from appearing without any favicon in Google Search.
Fixes #15236
Testing
- Verified locally that the generated HTML includes an explicit
<link rel="icon" href="/favicon.ico">. - Confirmed that
favicon.icois correctly served from the root when present inpublic/. - No automated tests were added since this change affects build output and external crawler behavior (Google Search), which cannot be reliably tested in CI.
Docs
- No documentation updates were required.
Changes
Closes #15234
The module astro:virtual:manifest wasn't correctly invalidated when new pages were added. With change, the manifest is refreshed when files change inside the srcDir.
Testing
I tested manually by adding new pages to examples/minimal, and made sure that I could see a blank page instead of 404.
CI should stay green
Docs
N/A
Changes
Closes #15194
The code was trying to run runner.import using the wrong vite environment. runner.import doesn't function when the environment is non-runnable. SSR is non-runnable when using the cloudflare vite plugin
Testing
Manually tested.
CI should stay green
Docs
N/A
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
fixes: #15252
Changes
- Fixes CSS
assetsPrefixwith remote URLs incorrectly prepending a forward slash - When using
build.assetsPrefixwith a remote URL (e.g.,https://cdn.example.com), the generated<link>elements were getting a/prepended to the full URL - Before:
<link href="/https://cdn.example.com/_astro/style.css" rel="stylesheet"> - After:
<link href="https://cdn.example.com/_astro/style.css" rel="stylesheet"> - The fix checks if the stylesheet link is a remote URL using
isRemotePath()before callingprependForwardSlash() - JavaScript assets with the same
assetsPrefixconfiguration were unaffected - only CSS had this issue
Testing
Tested with a minimal reproduction: https://stackblitz.com/github/lamalex/astro-css-assetsprefix-bug
- Created an Astro project with MDX and content collections
- Configured
build.assetsPrefix.csstohttps://cdn.example.com - Set
build.inlineStylesheets: 'never'to force external CSS files - Built the project and verified CSS links now have the correct CDN URL without the leading
/ - Ran test/astro-assets-prefix.test.js and verified no breakage
- Updated test/astro-assets-prefix.test.js.
Docs
No documentation changes needed - this is a bug fix that corrects behavior to match the existing documented assetsPrefix feature. The feature should now work as users expect based on current docs.
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
Changes
- Merges main into
next
Testing
- All tests passing
Docs
N/A
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| prettier (source) | ^3.7.4 → ^3.8.0 |
Release Notes
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.
🔕 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.
Note: This PR body was truncated due to platform limits.
This PR contains the following updates:
Release Notes
withastro/astro (@astrojs/sitemap)
v3.7.0
Minor Changes
-
#14471
4296373Thanks @Slackluky! - Adds the ability to split sitemap generation into chunks based on customizable logic. This allows for better management of large sitemaps and improved performance. The newchunksoption in the sitemap configuration allows users to define functions that categorize sitemap items into different chunks. Each chunk is then written to a separate sitemap file.integrations: [ sitemap({ serialize(item) { th return item }, chunks: { // this property will be treated last on the configuration 'blog': (item) => { // will produce a sitemap file with `blog` name (sitemap-blog-0.xml) if (/blog/.test(item.url)) { // filter path that will be included in this specific sitemap file item.changefreq = 'weekly'; item.lastmod = new Date(); item.priority = 0.9; // define specific properties for this filtered path return item; } }, 'glossary': (item) => { if (/glossary/.test(item.url)) { item.changefreq = 'weekly'; item.lastmod = new Date(); item.priority = 0.7; return item; } } // the rest of the path will be stored in `sitemap-pages.0.xml` }, }), ],
cloudflare/workerd (@cloudflare/workers-types)
v4.20260116.0
v4.20260115.0
v4.20260114.0
v4.20260113.0
v4.20260111.0
fastify/fastify (fastify)
v5.7.0
What's Changed
- docs: Improved firebase serverless guide about process remaining stuck by @alexandercerutti in #6380
- docs: update migration guide with date-time breaking change by @craftsman01 in #6110
- chore: remove test file by @Eomm in #6384
- feat: speed up loading with custom compiler by @Eomm in #6383
- docs: replace all instances of twitter.com with x.com by @cseas in #6355
- docs: correct logger option in example by @inyourtime in #6391
- docs: fix links by @Shriti507 in #6394
- chore: skip unnecessary object creation by @Eomm in #6400
- docs: Update JSON Schema link in documentation by @jon23d in #6402
- docs(ecosystem): add fastify-ses-mailer by @KaranHotwani in #6395
- docs: add security note about validation errors in response by @mcollina in #6407
- docs: add security threat model by @mcollina in #6406
- chore: update onboarding and offboarding instructions by @Eomm in #6403
- fix: set status code before publishing diagnostics error channel by @tt-a1i in #6412
- fix: use JSON.stringify in onBadUrl for proper escaping by @mcollina in #6420
- chore: fix type test by @mrazauskas in #6418
- docs: improve Validation-and-Serialization.md by @twentytwo777 in #6423
- test: skip IPv6 test if its support is not present by @LiviaMedeiros in #6428
- test: fix test when localhost has multiple addresses by @LiviaMedeiros in #6427
- docs: add security warning for requestIdHeader by @mcollina in #6425
- docs(ecosystem): add elements-fastify by @rohitsoni007 in #6416
- chore: Bump actions/dependency-review-action from 4.8.1 to 4.8.2 by @dependabot[bot] in #6433
- chore: Bump markdownlint-cli2 from 0.18.1 to 0.20.0 by @dependabot[bot] in #6436
- chore: Bump @types/node from 24.10.4 to 25.0.3 in the dev-dependencies-typescript group by @dependabot[bot] in #6435
- fix(ts): Align routerOptions defaultRoute types with runtime by @AnkanMisra in #6392
- fix(types): require send() payload when Reply type is specified by @tt-a1i in #6432
- fix: ajv options type validation by @gianmarco27 in #6437
- docs: add non-vulnerability examples to threat model by @RafaelGSS in #6431
- feat: implement conditional request logging by @kibertoad in #5732
- docs(sponsor): add serpapi by @Eomm in #6443
- perf: use native WebStream API instead of Readable.fromWeb wrapper by @mcollina in #6444
New Contributors
- @craftsman01 made their first contribution in #6110
- @cseas made their first contribution in #6355
- @Shriti507 made their first contribution in #6394
- @jon23d made their first contribution in #6402
- @KaranHotwani made their first contribution in #6395
- @tt-a1i made their first contribution in #6412
- @mrazauskas made their first contribution in #6418
- @twentytwo777 made their first contribution in #6423
- @rohitsoni007 made their first contribution in #6416
- @AnkanMisra made their first contribution in #6392
- @gianmarco27 made their first contribution in #6437
Full Changelog: fastify/fastify@v5.6.2...v5.7.0
cloudflare/workers-sdk (wrangler)
v4.59.2
Patch Changes
-
#11908
e78186dThanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Dependency From To workerd 1.20260111.0 1.20260114.0 -
#11880
fe4faa3Thanks @penalosa! - Show helpful messages for errors outside of Wrangler's control. This prevents unnecessary Sentry reports.Errors now handled with user-friendly messages:
- Connection timeouts to Cloudflare's API (
UND_ERR_CONNECT_TIMEOUT) - typically due to slow networks or connectivity issues - File system permission errors (
EPERM,EACCES) - caused by insufficient permissions, locked files, or antivirus software - DNS resolution failures (
ENOTFOUND) - caused by network connectivity issues or DNS configuration problems
- Connection timeouts to Cloudflare's API (
-
#11882
695b043Thanks @GregBrimble! - Improve the error message forwrangler secret putwhen using Worker versions or gradual deployments.wrangler versions secret putshould be used instead, or ensure to deploy the latest version before usingwrangler secret put.wrangler secret putalone will add the new secret to the latest version (possibly undeployed) and immediately deploy that which is usually not intended. -
Updated dependencies [
e78186d,fec8f5b,d39777f,4714ca1,c17e971]:- miniflare@4.20260114.0
- @cloudflare/unenv-preset@2.10.0
- @cloudflare/kv-asset-handler@0.4.2
v4.59.1
Patch Changes
-
#11889
99b1f32Thanks @emily-shen! - Use argument array when executing git commands withwrangler pages deployPass user provided values from
--commit-hashsafely to underlying git command.
v4.59.0
Minor Changes
-
#11852
ad65efaThanks @NuroDev! - Add--checkflag towrangler typescommandThe new
--checkflag allows you to verify that your generated types file is up-to-date without regenerating it. This is useful for CI/CD pipelines, pre-commit hooks, or any scenario where you want to ensure types have been committed after configuration changes.When types are up-to-date, the command exits with code 0:
$ wrangler types --check ✨ Types at worker-configuration.d.ts are up to date.
When types are out-of-date, the command exits with code 1:
$ wrangler types --check ✘ [ERROR] Types at worker-configuration.d.ts are out of date. Run `wrangler types` to regenerate.You can also use it with a custom output path:
$ wrangler types ./custom-types.d.ts --check
-
#11529
43d5363Thanks @matthewdavidrodgers! - Add ability to enable higher asset count limits for Pages deploymentsWrangler can now read asset count limits from JWT claims during Pages deployments,
allowing users to be enabled for higher limits (up to 100,000 assets) on a per-account
basis. The default limit remains at 20,000 assets. -
#11755
0f8d69dThanks @nikitassharma! - Users can now specifyconstraints.tiersfor their container applications.tieris deprecated in favor oftiers.
If left unset, we will default totiers: [1, 2].
Note thatconstraintsis an experimental feature.
Patch Changes
-
#11820
b0e54b2Thanks @MattieTK! - Add AI agent detection to analytics eventsWrangler now detects when commands are executed by AI coding agents (such as Claude Code, Cursor, GitHub Copilot, etc.) using the
am-i-vibinglibrary. This information is included as anagentproperty in all analytics events, helping Cloudflare understand how developers interact with Wrangler through AI assistants.The
agentproperty will contain the agent ID (e.g.,"claude-code","cursor-agent") when detected, ornullwhen running outside an agentic environment. -
#11494
ed60c4fThanks @jalmonter! - Fix scheduled trigger warning showingundefinedportWhen running
wrangler devwith a worker that has cron triggers, the warning message displayed an invalid URL likecurl "http://localhost:undefined/cdn-cgi/handler/scheduled"because the port wasn't yet determined when the warning was logged.Moved the warning to after the proxy server is fully ready, where the actual public URL and port are known.
-
#11831
faa5753Thanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Dependency From To workerd 1.20260107.1 1.20260108.0 -
#11844
e574ef3Thanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Dependency From To workerd 1.20260108.0 1.20260109.0 -
#11872
b6148edThanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Dependency From To workerd 1.20260109.0 1.20260111.0 -
#11843
ab3859cThanks @dario-piotrowicz! - Update the Wrangler autoconfig logic to work with the latest version of WakuThe latest version of Waku (
0.12.5-1.0.0-alpha.1-0) requires asrc/waku.server.tsxfile instead of asrc/server-entry.tsxone, so the Wrangler autoconfig logic (the logic being run as part ofwrangler setupandwrangler deploy --x-autoconfigthat configures a project to be deployable on Cloudflare) has been updated accordingly.Also the way the worker needs to handle static assets has been updated as recommended from the Waku team.
-
#11848
0eb973dThanks @petebacondarwin! - Fix incorrect warning about multiple environments when using redirected configPreviously, when using a redirected config (via
configPathin another config file) that originated from a config with multiple environments, wrangler would incorrectly warn about missing environment specification. This fix ensures the warning is only shown when the actual config being used has multiple environments defined, not when the original config did. -
Updated dependencies [
ed60c4f,5c59217,faa5753,e574ef3,b6148ed,beb96af,5c59217,fc96e5f]:- miniflare@4.20260111.0
- @cloudflare/unenv-preset@2.9.0
v4.58.0
Minor Changes
-
#11728
7d63fa5Thanks @NuroDev! - Add command categories towranglerhelp menuThe help output now groups commands by product category (Account, Compute & AI, Storage & Databases, Networking & Security) to match the Cloudflare dashboard organization:
$ wrangler --help COMMANDS wrangler docs [search..] 📚 Open Wrangler's command documentation in your browser ACCOUNT wrangler auth 🔓 Manage authentication wrangler login 🔑 Login to Cloudflare ... COMPUTE & AI wrangler ai 🤖 Manage AI models wrangler containers 📦 Manage Containers [open beta] ...This improves discoverability by organizing the 20+ wrangler commands into logical groups.
Patch Changes
-
#11822
97e67b9Thanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Dependency From To workerd 1.20260103.0 1.20260107.1 -
Updated dependencies [
97e67b9]:- miniflare@4.20260107.0
v4.57.0
Minor Changes
-
#11682
b993d95Thanks @ascorbic! - Addwrangler auth tokencommand to retrieve your current authentication credentials.You can now retrieve your authentication token for use with other tools and scripts:
wrangler auth token
The command returns whichever authentication method is currently configured:
- OAuth token from
wrangler login(automatically refreshed if expired) - API token from
CLOUDFLARE_API_TOKENenvironment variable
Use
--jsonto get structured output including the token type, which also supports API key/email authentication:wrangler auth token --json
This is similar to
gh auth tokenin the GitHub CLI. - OAuth token from
-
#11702
f612b46Thanks @gpanders! - Add support for trusted_user_ca_keys in WranglerYou can now configure SSH trusted user CA keys for containers. Add the following to your wrangler.toml:
[[containers.trusted_user_ca_keys]] public_key = "ssh-ed25519 AAAAC3..."
This allows you to specify CA public keys that can be used to verify SSH user certificates.
-
#11437
9e360f6Thanks @ichernetsky-cf! - Drop deprecated containersobservability.loggingfield -
#11616
fc95831Thanks @NuroDev! - Add type generation support towrangler devYou can now have your worker configuration types be automatically generated when the local Wrangler development server starts.
To use it you can either:
- Add the
--typesflag when runningwrangler dev. - Update your Wrangler configuration file to add the new
dev.generate_typesboolean property.
{ "$schema": "node_modules/wrangler/config-schema.json", "name": "example", "main": "src/index.ts", "compatibility_date": "2025-12-12", "dev": { "generate_types": true } } - Add the
-
#11524
b0dbf1aThanks @penalosa! - Add hidden CLI flags towrangler setupfor suppressing outputTwo new hidden flags have been added to
wrangler setup:--no-completion-message: Suppresses the deployment details message after setup completes--no-install-wrangler: Skips Wrangler installation during project setup
-
#11777
69979a3Thanks @MattieTK! - Add analytics properties to secret commands for better usage insightsSecret commands (
wrangler secret put,wrangler secret bulk, and their Pages/versions equivalents) now include additional analytics properties to help understand how secrets are being managed:secretOperation: Whether this is a "single" or "bulk" secret operationsecretSource: How the secret was provided ("interactive", "stdin", or "file")secretFormat: For bulk operations, the format used ("json" or "dotenv")hasEnvironment: Whether an environment was specified
These properties help improve the developer experience by understanding common usage patterns. No sensitive information (secret names, values, or counts) is tracked.
-
#11738
c54f8daThanks @jamesopstad! - Add defaultTextmodule rule for.sqlfiles.This enables importing
.sqlfiles directly in Wrangler and the Cloudflare Vite plugin without extra configuration. -
#11692
df1f9c9Thanks @dario-piotrowicz! - Support Waku in autoconfig -
#11549
d059f69Thanks @dario-piotrowicz! - Support Vike in autoconfig
Patch Changes
-
#11683
02fbd22Thanks @ascorbic! - Display a warning when authentication errors occur and theaccount_idin your Wrangler configuration does not match any of your authenticated accounts. This helps identify configuration issues where you may have the wrong account ID set in yourwrangler.tomlorwrangler.jsoncfile. -
#11704
77078efThanks @dario-piotrowicz! - Fix autoconfig handling of Next.js apps with CJS config files and incompatible Next.js versionsPreviously,
wrangler setupandwrangler deploy --x-autoconfigwould fail when working with Next.js applications that use CommonJS config files (next.config.cjs) or have versions of Next.js that don't match the required peer dependencies. The autoconfig process now uses dynamic imports and forced installation to handle these scenarios gracefully. -
#11796
2510723Thanks @dario-piotrowicz! -wrangler deploydelegates toopennextjs-cloudflare deployonly when the--x-autoconfigflag is usedThe
wrangler deploycommand has been updated to delegate to theopennextjs-cloudflare deploycommand when run in an open-next project. Once this behavior had been introduced it caused a few issues. So it's been decided to enable it for the time being only when the--x-autoconfigflag is set (since this behavior, although generally valid, is only strictly necessary for thewrangler deploy's autoconfig flow). -
#11764
9f6dd71Thanks @terakoya76! - Fix R2 Data Catalog snapshot-expiration API field namesThe
wrangler r2 bucket catalog snapshot-expiration enablecommand was sending incorrect field names
to the Cloudflare API, resulting in a 422 Unprocessable Entity error. This fix updates the API request
body to use the correct field names:olderThanDays->max_snapshot_age(as duration string, e.g., "30d")retainLast->min_snapshots_to_keep
The CLI options (
--older-than-daysand--retain-last) remain unchanged. -
#11651
d123ad0Thanks @dario-piotrowicz! - Surface a more helpful error message for TOML Date, Date-Time, and Time values invarsTOML parses unquoted date/time values like
DATE = 2024-01-01as objects. Previously this would cause an unhelpful error message further down the stack. Now wrangler surfaces a more helpful error message earlier, telling you to quote the value as a string, e.g.DATE = "2024-01-01". -
#11711
5121b23Thanks @southpolesteve! - Show an error when D1 migration commands are run without a configuration filePreviously, running
wrangler d1 migrations apply,wrangler d1 migrations list, orwrangler d1 migrations createin a directory without a Wrangler configuration file would silently exit with no feedback. Now these commands display a clear error message:"No configuration file found. Create a wrangler.jsonc file to define your D1 database."
-
#11710
82e7e90Thanks @dario-piotrowicz! - Fix arguments passed towrangler deploynot being forwarded toopennextjs-cloudflare deploywrangler deployrun in an open-next project delegates toopennextjs-cloudflare deploy, as part of this all the arguments passed towrangler deployneed be forwarded toopennextjs-cloudflare deploy, before the arguments would be lost, now they will be successfully forwarded (for examplewrangler deploy --keep-varswill callopennextjs-cloudflare deploy --keep-vars) -
#10750
4688f59Thanks @jacoblearned! - Notify user on local dev server reload.When running
wrangler dev, the local server suppresses Miniflare's reload messages to prevent duplicate log entries from the proxy and user workers. This update adds a reload complete message so users know their changes were applied, instead of only seeing "Reloading local server...". -
#11673
b827893Thanks @MattieTK! - Breaks out version numbers into sortable number types for analytics logging -
Updated dependencies [
65d1850,1615fce,b2769bf,554a4df,8eede3f,6a05b1c,62fd118,a7e9f80,eac5cf7]:- miniflare@4.20260103.0
- @cloudflare/unenv-preset@2.8.0
v4.56.0
Minor Changes
-
#11196
171cfd9Thanks @emily-shen! - For containers being created in a FedRAMP high environment, registry credentials are encrypted by the container platform.
Update wrangler to correctly send a request to configure a registry for FedRAMP containers. -
#11646
472cf72Thanks @vovacf201! - feat: add R2 Data Catalog snapshot expiration commandsAdds new commands to manage automatic snapshot expiration for R2 Data Catalog tables:
wrangler r2 bucket catalog snapshot-expiration enable- Enable automatic snapshot expirationwrangler r2 bucket catalog snapshot-expiration disable- Disable automatic snapshot expiration
Snapshot expiration helps manage storage costs by automatically removing old table snapshots while keeping a minimum number of recent snapshots for recovery purposes.
Example usage:
# Enable snapshot expiration for entire catalog (keep 10 snapshots, expire after 5 days) wrangler r2 bucket catalog snapshot-expiration enable my-bucket --token $R2_CATALOG_TOKEN --max-age 7200 --min-count 10 # Enable for specific table wrangler r2 bucket catalog snapshot-expiration enable my-bucket my-namespace my-table --token $R2_CATALOG_TOKEN --max-age 2880 --min-count 5 # Disable snapshot expiration wrangler r2 bucket catalog snapshot-expiration disable my-bucket
Patch Changes
-
#11649
428ae9eThanks @ascorbic! - fix: respect TypeScript path aliases when resolving non-JS modules with module rulesWhen importing non-JavaScript files (like
.graphql,.txt, etc.) using TypeScript path aliases defined intsconfig.json, Wrangler's module-collection plugin now correctly resolves these imports. Previously, path aliases were only respected for JavaScript/TypeScript files, causing imports likeimport schema from '~lib/schema.graphql'to fail when using module rules. -
#11647
c0e249eThanks @dario-piotrowicz! - The auto-configuration logic present inwrangler setupandwrangler deploy --x-autoconfigcannot reliably handle Hono projects, so in these cases make sure to properly error saying that automatically configuring such projects is not supported. -
#11694
3853200Thanks @dario-piotrowicz! - fix: improve the open-next detection thatwrangler deployperforms to eliminate false positives for non open-next projects -
Updated dependencies [
ae1ad22,737c0f4]:- miniflare@4.20251217.0
v4.55.0
Minor Changes
-
#11301
6c590a0Thanks @dario-piotrowicz! - Makewrangler deployrunopennextjs-cloudflare deploywhen executed in an open-next project -
#11045
12a63efThanks @edmundhung! - Add an internalunstable_printBindingsAPI for vite plugin integration -
#11590
7d8d4a6Thanks @pombosilva! - Add Workflows send-event to wrangler commands. -
#11301
6c590a0Thanks @dario-piotrowicz! - Support Next.js (via OpenNext) projects in autoconfig
Patch Changes
-
#11615
ed42010Thanks @elithrar! - Add helpful warning when SSL certificate errors occur due to corporate proxies or VPNs intercepting HTTPS traffic. When errors like "self-signed certificate in certificate chain" are detected, wrangler now displays guidance about installing missing system roots from your corporate proxy vendor. -
#11641
6b28de1Thanks @petebacondarwin! - update command status text and formatting -
#11578
4201472Thanks @gpanders! - Fixup UX papercuts in containers SSH -
#11550
95d81e1Thanks @hiendv! - Fix "TypeError: Body is unusable: Body has already been read" when failing to exchange oauth code because of doubleresponse.text(). -
Updated dependencies [
5d085fb,b75b710,1e9be12]:- miniflare@4.20251213.0
v4.54.0
Minor Changes
-
#11512
c15e99eThanks @emily-shen! - Enable usingctx.exportswith containersYou can now use containers with Durable Objects that are accessed via
ctx.exports.Now your config file can look something like this:
{ "name": "container-app", "main": "src/index.ts", "compatibility_date": "2025-12-01", "compatibility_flags": ["enable_ctx_exports"], // compat flag needed for now. "containers": [ { "image": "./Dockerfile", "class_name": "MyDOClassname", "name": "my-container" }, ], "migrations": [ { "tag": "v1", "new_sqlite_classes": ["MyDOClassname"], }, ], // no need to declare your durable object binding here }Note that when using
ctx.exports, where you previously accessed a Durable Object via something likeenv.DO, you should now access withctx.exports.MyDOClassname.Refer to the docs for more information on using
ctx.exports. -
#11508
b17797cThanks @dario-piotrowicz! - Wrangler will no longer try to add additional configuration to projects using@cloudflare/vite-pluginwhen deploying or runningwrangler setup -
#11508
b17797cThanks @dario-piotrowicz! - When a Vite project is detected, install@cloudflare/vite-plugin -
#11576
bb47e20Thanks @dario-piotrowicz! - Support Analog projects in autoconfig -
#10582
991760dThanks @flakey5! - Addcontainers sshcommand
Patch Changes
-
#11467
235d325Thanks @edmundhung! - fix: prevent reporting SQLite error fromwrangler d1 executeto Sentry -
#11414
41103f5Thanks @petebacondarwin! - add extra logging to user log-in flow for diagnosing failed login requests -
#11559
ea6fbecThanks @nikitassharma! - Remove image validation for containers on wrangler deploy.Internal customers are able to use additional image registries and will run into failures with this validation. Image registry validation will now be handled by the API.
-
Updated dependencies [
31c162a,bd5f087,c6dd86f]:- miniflare@4.20251210.0
v4.53.0
Minor Changes
-
#11500
af54c63Thanks @dario-piotrowicz! - Add newautoconfig_summaryfield to the deploy output entryThis change augments
wrangler deployoutput being printed toWRANGLER_OUTPUT_FILE_DIRECTORYorWRANGLER_OUTPUT_FILE_PATHto also include a newautoconfig_summaryfield containing the possible summary details for the autoconfig process (the field isundefinedif autoconfig didn't run).Note: the field is experimental and could change while autoconfig is not GA
-
#11477
9988cc9Thanks @ascorbic! - Support Nuxt in autoconfig -
#11472
ce295bfThanks @dario-piotrowicz! - Support Qwik projects in autoconfig -
#10937
9514c9aThanks @ReppCodes! - Add support for "targeted" placement mode with region, host, and hostname fieldsThis change adds a new mode to
placementconfiguration. You can specify one of the following fields to target specific external resources for Worker placement:region: Specify a region identifier (e.g., "aws:us-east-1") to target a region from another cloud service providerhost: Specify a host with (required) port (e.g., "example.com:8123") to target a TCP servicehostname: Specify a hostname (e.g., "example.com") to target an HTTP resource
These fields are mutually exclusive - only one can be specified at a time.
Example configuration:
[placement] host = "example.com:8123"
-
#11498
ac861f8Thanks @penalosa! - Add React Router support in autoconfig -
#11506
79d30d4Thanks @vicb! - Set the target JS version to ES2024
Patch Changes
-
#11393
45480b1Thanks @alsuren! - improved --help text for wrangler d1 subcommands -
#11523
94c67e8Thanks @jamesopstad! - fix: types from @cloudflare/workers-utils not being exported correctly from Wrangler
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
alpinejs/alpine (alpinejs)
v3.15.4
Fixed
- Fix sort auto evaluation #4716
- Fix duplicate attribute/value situations
vercel/turborepo (turbo)
v2.7.4: Turborepo v2.7.4
What's Changed
Docs
- docs: Add
dependsOnto lint task for proper cache invalidation by @anthonyshew in #11384 - chore: Migrate from Prettier to oxfmt by @anthonyshew in #11392
- docs: Add Oxc (oxlint, oxfmt) guide by @anthonyshew in #11398
- chore: Update oxlint configuration by @anthonyshew in #11413
- feat: Git worktree support by @anthonyshew in #11416
- docs: Exclude sitemap.xml from middleware to prevent i18n rewrite by @anthonyshew in #11419
- fix(docs): Exclude schema.json paths from middleware matcher by @anthonyshew in #11420
- docs: Fix OpenAPI spec by @anthonyshew in #11421
- fix(docs): Make mobile menu scrollable on small viewports by @anthonyshew in #11422
- fix(docs): Fix markdown content negotation matcher by @anthonyshew in #11425
create-turbo
- fix(create-turbo): Lowercase bun label for consistency by @anthonyshew in #11388
- refactor(create-turbo): Simplify git initialization to single commit by @anthonyshew in #11387
Examples
- fix: update outdated packages to remove node/nest deprecation warning by @varma-cephas in #11395
- examples: Upgrade with-prisma to prisma 7.2.0 and pnpm by @msebi in #11402
- fix(example): remove @expo/webpack-config from with-react-native-web by @wantop1 in #11408
Changelog
- fix: Support file watching for non-root volumes on MacOS by @mdlawson in #11363
- fix(create-turbo): Prevent hang when using bun package manager by @anthonyshew in #11386
- fix(turbo-utils): Add proxy support to fetch requests by @anthonyshew in #11389
- fix: Validate root and temp directory paths in download function by @odaysec in #11311
- chore: Add fix scripts for lint, format, and TOML checking by @anthonyshew in #11397
- fix: Prevent infinite loop in
pnpm turboscript and update docs by @anthonyshew in #11400 - docs: Add AGENTS.md and remove .cursor rules by @anthonyshew in #11401
- fix: Normalize workspace globs with leading
./by @anthonyshew in #11403 - fix(ui): Fix text selection when TUI sidebar is hidden by @anthonyshew in #11405
- fix(tui): Properly disable mouse mode on exit and panic by @anthonyshew in #11418
New Contributors
- @mdlawson made their first contribution in #11363
- @odaysec made their first contribution in #11311
- @varma-cephas made their first contribution in #11395
- @msebi made their first contribution in #11402
- @wantop1 made their first contribution in #11408
Full Changelog: vercel/turborepo@v2.7.3...v2.7.4
v2.7.3: Turborepo v2.7.3
What's Changed
Examples
Changelog
- fix(bun): Add GitHub/git packages by @Palid in #11268
- chore: Extract
turborepo-boundariescrate fromturborepo-libby @anthonyshew in #11312 - chore: Extract
turborepo-enginecrate fromturborepo-libby @anthonyshew in #11315 - chore: Extract
turborepo-gitignorecrate fromturborepo-libby @anthonyshew in #11317 - chore: Extract
turborepo-json-rewritecrate fromturborepo-libby @anthonyshew in #11318 - chore: Extract
turborepo-hashandturborepo-typescrates fromturborepo-libby @anthonyshew in #11319 - chore: Extract
turborepo-shimcrate fromturborepo-libby @anthonyshew in #11320 - chore: Extract types to turborepo-types and create turborepo-daemon crate by @anthonyshew in #11321
- chore: Extract
turborepo-daemoncrate fromturborepo-libby @anthonyshew in #11322 - chore: Extract
turborepo-scopecrate fromturborepo-libby @anthonyshew in #11324 - chore: Extract
turborepo-diagnosticscrate fromturborepo-libby @anthonyshew in #11332 - feat: Extract turborepo-task-hash crate from turborepo-lib by @anthonyshew in #11334
- chore: Move
TaskDefinitionfromturborepo-libtoturborepo-typesby @anthonyshew in #11335 - chore: Move
DryRunMode,UIMode, andLogOrdertoturborepo-typesby @anthonyshew in #11337 - chore: Fix loop in build script in package.json by @anthonyshew in #11336
- chore: Move
ContinueModeandLogPrefixtoturborepo-typesby @anthonyshew in #11338 - chore: Extract
run/summarytoturborepo-run-summarycrate by @anthonyshew in #11342 - chore: Extract turbo_json module to turborepo-turbo-json crate by @anthonyshew in #11344
- chore: Extract config and engine builder modules from
turborepo-libby @anthonyshew in #11346 - chore: Remove duplicate task_inheritance.rs from turborepo-lib by @anthonyshew in #11347
- chore: Extract run/cache.rs to turborepo-run-cache crate by @anthonyshew in #11348
- chore: remove extra file by @anthonyshew in #11351
- chore: Move resolved opts types to turborepo-types by @anthonyshew in #11349
- chore: Extract some small items from
turborepo-libby @anthonyshew in #11350 - chore: Move engine builder tests from
turborepo-libtoturborepo-engineby @anthonyshew in #11353 - chore: Move global_hash.rs from turborepo-lib to turborepo-task-hash by @anthonyshew in #11355
- chore: Move more shared types to
turborepo-typesby @anthonyshew in #11356 - chore: Add
turborepo-task-executorcrate by @anthonyshew in #11357 - chore: Add generic
CommandProvidertrait toturborepo-task-executorby @anthonyshew in #11358 - chore: Implement MfeConfigProvider and TaskAccessProvider traits by @anthonyshew in #11359
- chore: Add
From<&RunOpts>forExecutorConfigconversion by @anthonyshew in #11360 - chore: Move
TurboJsonReadertoturborepo-turbo-jsoncrate by @anthonyshew in #11361 - chore: Move
TaskExecutortoturborepo-task-executorcrate by @anthonyshew in #11364 - chore: Move
TurboJsonLoadertoturborepo-turbo-jsoncrate by @anthonyshew in #11365 - chore: Consolidate
TurboJsontests intoturborepo-turbo-jsoncrate by @anthonyshew in #11371 - chore: Extract task executor components to
turborepo-task-executorby @anthonyshew in #11378 - chore: Move MicroFrontendProxyProvider to turborepo-task-executor by @anthonyshew in #11379
- chore: Clean up
turborepo-libwrapper modules and dead code by @anthonyshew in #11380 - fix: Show TUI when using
--output-logs=errors-only|noneby @anthonyshew in #11382
New Contributors
Full Changelog: vercel/turborepo@v2.7.2...v2.7.3
typescript-eslint/typescript-eslint (typescript-eslint)
v8.53.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.
v8.52.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.
This PR contains the following updates:
Release Notes
csstools/postcss-plugins (postcss-preset-env)
v10.6.1
January 10, 2026
- Updated
@csstools/postcss-normalize-display-valuesto4.0.1(patch)
sass/dart-sass (sass)
v1.97.2
- Additional fixes for implicit configuration when nested imports are involved.
shikijs/shiki (shiki)
v3.21.0
🚀 Features
- Update grammar - by @antfu (6d109)
- core: Preserve HAST data and properties in codeToHast - by @AmanCrafts in #1204 (747ea)
🐞 Bug Fixes
View changes on GitHub
unjs/unifont (unifont)
v0.7.3
🐞 Bug Fixes
- More consistent type name - by @danielroe (93485)
View changes on GitHub
v0.7.2
🐞 Bug Fixes
- Prioritize sliced woff2 over full ttf - by @tuyuritio in #315 (8a618)
- Allow font resolvers to return fallback information - by @danielroe (d8fef)
View changes on GitHub
unjs/unstorage (unstorage)
v1.17.4
[!IMPORTANT]
Some dependencies now require Node.js 20 or later.
If you are on an older Node.js version, please upgrade.
[!IMPORTANT]
H3 has been updated with a security fix related to request body handling (read more).
If you usecreateH3StorageHandler, upgrading is strongly recommended.
📦 Dependency Updates
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:
| Package | Change | Age | Confidence |
|---|---|---|---|
| @astrojs/svelte (source) | ^7.2.4 → ^7.2.5 |
||
| astro (source) | ^5.16.6 → ^5.16.10 |
||
| preact (source) | ^10.28.1 → ^10.28.2 |
||
| vue (source) | ^3.5.13 → ^3.5.26 |
Release Notes
withastro/astro (@astrojs/svelte)
v7.2.5
Patch Changes
- #15070
fa9c464Thanks @antonyfaris! - Improve Sveltechildrenprop type checking
withastro/astro (astro)
v5.16.10
Patch Changes
-
2fa19c4- Improved error handling in the rendering phaseAdded defensive validation in
App.render()and#renderError()to provide a descriptive error message when a route module doesn't have a valid page function. -
#15199
d8e64efThanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure. -
#15169
b803d8bThanks @rururux! - fix: fix image 500 error when moving dist directory in standalone Node -
#14622
9b35c62Thanks @aprici7y! - Fixes CSS url() references to public assets returning 404 in dev mode when base path is configured -
#15219
43df4ceThanks @matthewp! - Upgrades thediffpackage to v8
v5.16.9
Patch Changes
-
#15174
37ab65aThanks @florian-lefebvre! - Adds Google Icons to built-in font providersTo start using it, access it on
fontProviders:import { defineConfig, fontProviders } from 'astro/config'; export default defineConfig({ experimental: { fonts: [ { name: 'Material Symbols Outlined', provider: fontProviders.googleicons(), cssVariable: '--font-material', }, ], }, });
-
#15150
a77c4f4Thanks @matthewp! - Fixes hydration for framework components inside MDX when usingAstro.slots.render()Previously, when multiple framework components with
client:*directives were passed as named slots to an Astro component in MDX, only the first slot would hydrate correctly. Subsequent slots would render their HTML but fail to include the necessary hydration scripts. -
#15130
9b726c4Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyChanges how font providers are implemented with updates to the
FontProvidertypeThis is an implementation detail that changes how font providers are created. This process allows Astro to take more control rather than relying directly on
unifonttypes. All of Astro's built-in font providers have been updated to reflect this new type, and can be configured as before. However, using third-party unifont providers that rely onunifonttypes will require an update to your project code.Previously, an Astro
FontProviderwas made of a config and a runtime part. It relied directly onunifonttypes, which allowed a simple configuration for third-party unifont providers, but also coupled Astro's implementation to unifont, which was limiting.Astro's font provider implementation is now only made of a config part with dedicated hooks. This allows for the separation of config and runtime, but requires you to create a font provider object in order to use custom font providers (e.g. third-party unifont providers, or private font registeries).
What should I do?
If you were using a 3rd-party unifont font provider, you will now need to write an Astro FontProvider using it under the hood. For example:
// astro.config.ts
import { defineConfig } from "astro/config";
import { acmeProvider, type AcmeOptions } from '@​acme/unifont-provider'
+import type { FontProvider } from "astro";
+import type { InitializedProvider } from 'unifont';
+function acme(config?: AcmeOptions): FontProvider {
+ const provider = acmeProvider(config);
+ let initializedProvider: InitializedProvider | undefined;
+ return {
+ name: provider._name,
+ config,
+ async init(context) {
+ initializedProvider = await provider(context);
+ },
+ async resolveFont({ familyName, ...rest }) {
+ return await initializedProvider?.resolveFont(familyName, rest);
+ },
+ async listFonts() {
+ return await initializedProvider?.listFonts?.();
+ },
+ };
+}
export default defineConfig({
experimental: {
fonts: [{
- provider: acmeProvider({ /* ... */ }),
+ provider: acme({ /* ... */ }),
name: "Material Symbols Outlined",
cssVariable: "--font-material"
}]
}
});- #15147
9cd5b87Thanks @matthewp! - Fixes scripts in components not rendering when a sibling<Fragment slot="...">exists but is unused
v5.16.8
Patch Changes
-
#15124
81db3c0Thanks @leonace924! - Fixes an issue where requests with query parameters to thebasepath would return a 404 if trailingSlash was not'ignore'in development -
#15152
39ee41fThanks @rururux! - Fixes a case wherecontext.cookies.set()would be overriden when setting cookies via response headers in development -
#15140
6f6f8f8Thanks @cameronraysmith! - Fixes esbuild warning due to dead code in assets virtual module -
#15127
2cff904Thanks @Princesseuh! - Updates "Unsupported page types found" error to only appear in more realistic cases -
#15149
34f84c2Thanks @rahuld109! - Skips "Use the Image component" audit warning for images inside framework components (React, Vue, Svelte, etc.)
v5.16.7
Patch Changes
-
#15122
b137946Thanks @florian-lefebvre! - Improves JSDoc annotations forAstroGlobal,AstroSharedContextandAPIContexttypes -
#15123
3f58fa2Thanks @43081j! - Improves rendering performance by grouping render chunks when emitting from async iterables to avoid encoding costs -
#14954
7bec4bdThanks @volpeon! - Fixes remote imagesEtagheader handling by disabling internal cache -
#15052
b2bcd5aThanks @Princesseuh! - Fixes images not working in development when using setups with port forwarding -
#15028
87b19b8Thanks @Princesseuh! - Fixes certain aliases not working when using images in JSON files with the content layer -
#15118
cfa382bThanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyRemoves the
defineAstroFontProvider()type helper.If you are building a custom font provider, remove any occurrence of
defineAstroFontProvider()and use theFontProvidertype instead:-import { defineAstroFontProvider } from 'astro/config'; -export function myProvider() { - return defineAstroFontProvider({ - entrypoint: new URL('./implementation.js', import.meta.url) - }); -}; +import type { FontProvider } from 'astro'; +export function myProvider(): FontProvider { + return { + entrypoint: new URL('./implementation.js', import.meta.url) + }, +}
-
#15055
4e28db8Thanks @delucis! - Reduces Astro’s install size by around 8 MB -
#15088
a19140fThanks @martrapp! - Enables the ClientRouter to preserve the original hash part of the target URL during server side redirects. -
#15117
b1e8e32Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyChanges the font format downloaded by default when using the experimental Fonts API. Additionally, adds a new
formatsconfiguration option to specify which font formats to download.Previously, Astro was opinionated about which font sources would be kept for usage, mainly keeping
woff2andwofffiles.You can now specify what font formats should be downloaded (if available). Only
woff2files are downloaded by default.
What should I do?
If you were previously relying on Astro downloading the woff format, you will now need to specify this explicitly with the new formats configuration option. Additionally, you may also specify any additional file formats to download if available:
// astro.config.mjs
import { defineConfig, fontProviders } from 'astro/config'
export default defineConfig({
experimental: {
fonts: [{
name: 'Roboto',
cssVariable: '--font-roboto',
provider: fontProviders.google(),
+ formats: ['woff2', 'woff', 'otf']
}]
}
})- #15034
8115752Thanks @florian-lefebvre! - Fixes a vite warning log during builds when using npm
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.
Reverts #15108
Changes
- Add an option to override the default output format
webp
Testing
Docs
Image component might need an update to state that the default value can be overridden.
Fix typo: to to → to in factory.ts
Changes
As discussed in the issue #14515 and #15067, the current implementation of inferRemoteSize had the problem of increased network traffic because it did not cache data.
To address this issue, I added a getRemoteSize property to the Image Service and implemented the publicly exposed inferRemoteSize API to utilize this property.
Additionally, for baseService's getRemoteSize, I configured a function that simply wraps the existing inferRemoteSize. This ensures no breaking changes occur for users who do not wish to see their behavior altered.
- Set
getRemoteSizeas an API of the Image Service. - Modified the publicly exposed
inferRemoteSizefunction to utilize the Image Service'sgetRemoteSize. - Assigned the existing
inferRemoteSizefunction tobaseService'sgetRemoteSize. This prevents breaking changes and facilitates easy, lightweight extensions based on the existing implementation.
Testing
I implemented tests to verify that arbitrary processing can be configured and that delegation from baseService to the original inferRemoteSize is possible.
Docs
Since we are setting the existing inferRemoteSize as the default value, I don't believe this constitutes a breaking change. However, since we will be introducing a new property called getRemoteSize in the Image Service, I think the documentation will need to be updated.
/cc @withastro/maintainers-docs
As this is a PR introducing a new property, I would like to hear the opinions of the maintainers regarding this approach. Therefore, I will submit this PR as a draft for now.
Changes
- Fixed greedy regex in
renderErrorMarkdownthat caused markdown link examples in error messages to capture extra characters - Changed
linkRegexfrom/\[([^[]+)\]\((.*)\)/gto/\[([^[]+)\]\(([^)]*)\)/g - The
(.*)was capturing everything up to the last)in the string instead of the first one after the URL
Root Cause
When an error message contained [text](url)</code>), the greedy (.*) incorrectly captured url)</code> as the URL, causing the rendered output to include escaped HTML in the href attribute (appearing as %3C/code%3E).
Process
- Wrote tests first to verify the hypothesis - tests for
renderErrorMarkdowncovering link parsing edge cases - Ran tests to confirm they failed with the buggy regex
- Applied the fix: changed
(.*)to([^)]*)to stop at the first) - Ran tests again - all passing
Closes #15068
Testing
Added 13 new unit tests for renderErrorMarkdown in packages/astro/test/units/errors/dev-utils.test.js:
- Basic markdown rendering (links, bold, code, URLs)
- Edge cases for links followed by other content
- Links inside parentheses
- Multiple links in same message
- Escaped HTML followed by link syntax
All 52 error unit tests pass.
Docs
No documentation changes needed - this is a bug fix for error message display.
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.16.12
Patch Changes
-
#15175
47ae148Thanks @florian-lefebvre! - Allows experimental Font providers to specify family optionsPreviously, an Astro
FontProvidercould only accept options at the provider level when called. That could result in weird data structures for family-specific options.Astro
FontProviders can now declare family-specific options, by specifying a generic:// font-provider.ts import type { FontProvider } from "astro"; import { retrieveFonts, type Fonts } from "./utils.js", interface Config { token: string; } +interface FamilyOptions { + minimal?: boolean; +} -export function registryFontProvider(config: Config): FontProvider { +export function registryFontProvider(config: Config): FontProvider<FamilyOptions> { let data: Fonts = {} return { name: "registry", config, init: async () => { data = await retrieveFonts(token); }, listFonts: () => { return Object.keys(data); }, - resolveFont: ({ familyName, ...rest }) => { + // options is typed as FamilyOptions + resolveFont: ({ familyName, options, ...rest }) => { const fonts = data[familyName]; if (fonts) { return { fonts }; } return undefined; }, }; }Once the font provider is registered in the Astro config, types are automatically inferred:
// astro.config.ts import { defineConfig } from "astro/config"; import { registryFontProvider } from "./font-provider"; export default defineConfig({ experimental: { fonts: [{ provider: registryFontProvider({ token: "..." }), name: "Custom", cssVariable: "--font-custom", + options: { + minimal: true + } }] } }); -
#15175
47ae148Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyUpdates how options are passed to the Google and Google Icons font providers when using the experimental Fonts API
Previously, the Google and Google Icons font providers accepted options that were specific to given font families.
These options must now be set using the
optionsproperty instead. For example using the Google provider:import { defineConfig, fontProviders } from "astro/config"; export default defineConfig({ experimental: { fonts: [{ name: 'Inter', cssVariable: '--astro-font-inter', weights: ['300 900'], - provider: fontProviders.google({ - experimental: { - variableAxis: { - Inter: { opsz: ['14..32'] } - } - } - }), + provider: fontProviders.google(), + options: { + experimental: { + variableAxis: { opsz: ['14..32'] } + } + } }] } }) -
#15200
c0595b3Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyRemoves
getFontData()exported fromastro:assetswithfontDatawhen using the experimental Fonts APIAccessing font data can be useful for advanced use cases, such as generating meta tags or Open Graph images. Before, we exposed a
getFontData()helper function to retrieve the font data for a givencssVariable. That was however limiting for programmatic usages that need to access all font data.The
getFontData()helper function is removed and replaced by a newfontDataobject:-import { getFontData } from "astro:assets"; -const data = getFontData("--font-roboto") +import { fontData } from "astro:assets"; +const data = fontData["--font-roboto"]
We may reintroduce
getFontData()later on for a more friendly DX, based on your feedback. -
#15254
8d84b30Thanks @lamalex! - Fixes CSSassetsPrefixwith remote URLs incorrectly prepending a forward slashWhen using
build.assetsPrefixwith a remote URL (e.g.,https://cdn.example.com) for CSS assets, the generated<link>elements were incorrectly getting a/prepended to the full URL, resulting in invalid URLs like/https://cdn.example.com/assets/style.css.This fix checks if the stylesheet link is a remote URL before prepending the forward slash.
-
#15178
731f52dThanks @kedarvartak! - Fixes an issue where stopping the dev server withq+enterincorrectly created adistfolder and copied font files when using the experimental Fonts API -
#15230
3da6272Thanks @rahuld109! - Fixes greedy regex in error message markdown rendering that caused link syntax examples to capture extra characters -
#15253
2a6315aThanks @matthewp! - Fixes hydration for React components nested inside HTML elements in MDX files -
#15227
9a609f4Thanks @matthewp! - Fixes styles not being included for conditionally rendered Svelte 5 components in production builds -
#14607
ee52160Thanks @simensfo! - Reintroduces css deduplication for hydrated client components. Ensures assets already added to a client chunk are not flagged as orphaned
Changes
When Svelte 5 components are conditionally rendered (e.g., inside {#if} blocks with an initially false condition), their styles were not being included in production builds. This happened because:
- Svelte 5.26+ added css.hasGlobal flag to compiler output
- vite-plugin-svelte 5.1.0+ uses this to add cssScopeTo metadata
- Vite 6.2+ cssScopeTo allows CSS treeshaking if the export isn't "used"
During SSR, conditionally rendered components aren't included in the server build (tree-shaken), but they are in the client build. Astro's CSS-to-page mapping primarily happens during the server build, so the CSS gets orphaned.
The fix adds logic in the client build's generateBundle to:
- Track which component exports are actually rendered (renderedComponentExports)
- For CSS modules with cssScopeTo metadata where the export IS rendered, walk up the module graph to find pages and ensure the CSS is included
Fixes #14252
Testing
Test case added based on the provided issue reproduction.
Docs
Bug fix
Changes
What the title says
Testing
N/A
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
@astrojs/starlight@0.37.4
Patch Changes
-
#3534
703fab0Thanks @HiDeoo! - Fixes support for running builds whennpxis unavailable.Previously, Starlight would spawn a process to run the Pagefind search indexing binary using
npx. On platforms wherenpxisn’t available, this could cause issues. Starlight now runs Pagefind using its Node.js API to avoid a separate process. As a side effect, you may notice that logging during builds is now less verbose. -
#3656
a0e6368Thanks @delucis! - Fixes several edge cases in highlighting the current page heading in Starlight’s table of contents -
#3663
00cbf00Thanks @lines-of-codes! - Adds Thai language support -
#3658
ac79329Thanks @delucis! - Avoids adding redundantaria-current="false"attributes to sidebar entries -
#3382
db295c2Thanks @trueberryless! - Fixes an issue where the mobile table of contents is unable to find the first heading when a page has a tall banner.
Description
This PR fixes handling of a boolean attribute in our sidebar code to avoid adding redundant aria-current="false" attributes. Before Astro v5, passing false to aria-current resulted in omitting the attribute in the HTML output. But since v5, this is now stringified to "false" (Astro only omits the attribute for officially boolean attributes in the HTML spec now).
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.16.11
Patch Changes
Changes
Updates devalue to the latest
I commented minimumReleaseAge, installed the library, and uncommented it minimumReleaseAge
Testing
I believe I needed to add devalue to minimumReleaseAgeExclude so that it will be installed in fresh installs too, but I might be wrong.
CI should stay green.
Docs
N/A
This PR includes an addition of a link to a new Starlight community plugin.
ℹ️ Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| svelte (source) | ^4.2.20 → ^5.0.0 |
||
| svelte (source) | 5.46.1 → 5.46.4 |
GitHub Vulnerability Alerts
CVE-2025-15265
Summary
An XSS vulnerability exists in Svelte 5.46.0-2 resulting from improper escaping of hydratable keys. If these keys incorporate untrusted user input, arbitrary JavaScript can be injected into server-rendered HTML.
Details
When using the hydratable function, the first argument is used as a key to uniquely identify the data, such that the value is not regenerated in the browser.
This key is embedded into a <script> block in the server-rendered <head> without escaping unsafe characters. A malicious key can break out of the script context and inject arbitrary JavaScript into the HTML response.
Impact
This is a cross-site scripting vulnerability affecting applications that have the experimental.async flag enabled and use hydratable with keys incorporating untrusted user input.
- Impact: Arbitrary JS execution in the client’s browser.
- Exploitability: Remote, single-request if key is attacker-controlled.
- Typical Outcomes:
- Session/token theft
- DOM defacement
- CSRF bypass via injected JS
- Account takeover depending on cookie/session strategy
Affected applications should upgrade to a patched version immediately.
Release Notes
sveltejs/svelte (svelte)
v5.46.4
Patch Changes
- fix: use
devalue.unevalto serializehydratablekeys (ef81048e238844b729942441541d6dcfe6c8ccca)
v5.46.3
Patch Changes
-
fix: reconnect clean deriveds when they are read in a reactive context (#17362)
-
fix: don't transform references of function declarations in legacy mode (#17431)
-
fix: notify deriveds of changes to sources inside forks (#17437)
-
fix: always reconnect deriveds in get, when appropriate (#17451)
-
fix: prevent derives without dependencies from ever re-running (
286b40c4526ce9970cb81ddd5e65b93b722fe468) -
fix: correctly update writable deriveds inside forks (#17437)
-
fix: remove
$inspectcalls after await expressions when compiling for production server code (#17407) -
fix: clear batch between runs (#17424)
-
fix: adjust
locproperty ofProgramnodes created from<script>elements (#17428) -
fix: don't revert source to UNINITIALIZED state when time travelling (#17409)
v5.46.1
Patch Changes
-
fix: type
currentTargetinonfunction (#17370) -
fix: skip static optimisation for stateless deriveds after
await(#17389) -
fix: prevent infinite loop when HMRing a component with an
await(#17380)
v5.46.0
Minor Changes
- feat: Add
cspoption torender(...), and emit hashes when usinghydratable(#17338)
v5.45.10
Patch Changes
- fix: race condition when importing
AsyncLocalStorage(#17350)
v5.45.9
Patch Changes
-
fix: correctly reschedule deferred effects when reviving a batch after async work (#17332)
-
fix: correctly print
!doctypeduringprint(#17341)
v5.45.8
Patch Changes
-
fix: set AST
root.startto0androot.endtotemplate.length(#17125) -
fix: prevent erroneous
state_referenced_locallywarnings on prop fallbacks (#17329)
v5.45.7
Patch Changes
-
fix: Add
<textarea wrap="off">as a valid attribute value (#17326) -
fix: add more css selectors to
print()(#17330) -
fix: don't crash on
hydratableserialization failure (#17315)
v5.45.6
Patch Changes
-
fix: don't issue a11y warning for
<video>without captions if it has nosrc(#17311) -
fix: add
srcObjectto permitted<audio>/<video>attributes (#17310)
v5.45.5
Patch Changes
-
fix: correctly reconcile each blocks after outroing branches are resumed (#17258)
-
fix: destroy each items after siblings are resumed (#17258)
v5.45.4
Patch Changes
-
chore: move DOM-related effect properties to
effect.nodes(#17293) -
fix: allow
$props.id()to occur after anawait(#17285) -
fix: keep reactions up to date even when read outside of effect (#17295)
v5.45.3
Patch Changes
-
add props to state_referenced_locally (#17266)
-
fix: preserve node locations for better sourcemaps (#17269)
-
fix: handle cross-realm Promises in
hydratable(#17284)
v5.45.2
Patch Changes
v5.45.1
Patch Changes
- fix: link offscreen items and last effect in each block correctly (#17240)
v5.45.0
Minor Changes
- feat: add
print(...)function (#16188)
v5.44.1
Patch Changes
-
fix: await blockers before initialising const (#17226)
-
fix: link offscreen items and last effect in each block correctly (#17244)
-
fix: generate correct code for simple destructurings (#17237)
-
fix: ensure each block animations don't mess with transitions (#17238)
v5.44.0
Minor Changes
- feat:
hydratableAPI (#17154)
v5.43.15
Patch Changes
-
fix: don't execute attachments and attribute effects eagerly (#17208)
-
chore: lift "flushSync cannot be called in effects" restriction (#17139)
-
fix: store forked derived values (#17212)
v5.43.14
Patch Changes
-
fix: correctly migrate named self closing slots (#17199)
-
fix: error at compile time instead of at runtime on await expressions inside bindings/transitions/animations/attachments (#17198)
-
fix: take async blockers into account for bindings/transitions/animations/attachments (#17198)
v5.43.13
Patch Changes
- fix: don't set derived values during time traveling (#17200)
v5.43.12
Patch Changes
- fix: maintain correct linked list of effects when updating each blocks (#17191)
v5.43.11
Patch Changes
-
perf: don't use tracing overeager during dev (#17183)
-
fix: don't cancel transition of already outroing elements (#17186)
v5.43.10
Patch Changes
- fix: avoid other batches running with queued root effects of main batch (#17145)
v5.43.9
Patch Changes
-
fix: correctly handle functions when determining async blockers (#17137)
-
fix: keep deriveds reactive after their original parent effect was destroyed (#17171)
-
fix: ensure eager effects don't break reactions chain (#17138)
-
fix: ensure async
@constin boundary hydrates correctly (#17165) -
fix: take blockers into account when creating
#awaitblocks (#17137) -
fix: parallelize async
@consts in the template (#17165)
v5.43.8
Patch Changes
- fix: each block losing reactivity when items removed while promise pending (#17150)
v5.43.7
Patch Changes
-
fix: properly defer document title until async work is complete (#17158)
-
fix: ensure deferred effects can be rescheduled later on (#17147)
-
fix: take blockers of components into account (#17153)
v5.43.6
Patch Changes
- fix: don't deactivate other batches (#17132)
v5.43.5
Patch Changes
-
fix: ensure async static props/attributes are awaited (#17120)
-
fix: wait on dependencies of async bindings (#17120)
-
fix: await dependencies of style directives (#17120)
v5.43.4
Patch Changes
-
chore: simplify connection/disconnection logic (#17105)
-
fix: reconnect deriveds to effect tree when time-travelling (#17105)
v5.43.3
Patch Changes
-
fix: ensure fork always accesses correct values (#17098)
-
fix: change title only after any pending work has completed (#17061)
-
fix: preserve symbols when creating derived rest properties (#17096)
v5.43.2
Patch Changes
- fix: treat each blocks with async dependencies as uncontrolled (#17077)
v5.43.1
Patch Changes
- fix: transform
$bindableafterawaitexpressions (#17066)
v5.43.0
Minor Changes
- feat: out-of-order rendering (#17038)
Patch Changes
- fix: settle batch after DOM updates (#17054)
v5.42.3
Patch Changes
-
fix: handle
<svelte:head>rendered asynchronously (#17052) -
fix: don't restore batch in
#await(#17051)
v5.42.2
Patch Changes
-
fix: better error message for global variable assignments (#17036)
-
chore: tweak memoizer logic (#17042)
v5.42.1
Patch Changes
- fix: ignore fork
discard()aftercommit()(#17034)
v5.42.0
Minor Changes
- feat: experimental
forkAPI (#17004)
Patch Changes
-
fix: always allow
setContextbefore first await in component (#17031) -
fix: less confusing names for inspect errors (#17026)
v5.41.4
Patch Changes
-
fix: take into account static blocks when determining transition locality (#17018)
-
fix: coordinate mount of snippets with await expressions (#17021)
-
fix: better optimization of await expressions (#17025)
-
fix: flush pending changes after rendering
failedsnippet (#16995)
v5.41.3
Patch Changes
-
chore: exclude vite optimized deps from stack traces (#17008)
-
perf: skip repeatedly traversing the same derived (#17016)
v5.41.2
Patch Changes
-
fix: keep batches alive until all async work is complete (#16971)
-
fix: don't preserve reactivity context across function boundaries (#17002)
-
fix: make
$inspectlogs come from the callsite (#17001) -
fix: ensure guards (eg. if, each, key) run before their contents (#16930)
v5.41.1
Patch Changes
-
fix: place
let:declarations before{@​const}declarations (#16985) -
fix: improve
each_key_without_aserror (#16983) -
chore: centralise branch management (#16977)
v5.41.0
Minor Changes
- feat: add
$state.eager(value)rune (#16849)
Patch Changes
-
fix: preserve
<select>state while focused (#16958) -
chore: run boundary async effects in the context of the current batch (#16968)
-
fix: error if
eachblock haskeybut noasclause (#16966)
v5.40.2
Patch Changes
- fix: add hydration markers in
pendingbranch of SSR boundary (#16965)
v5.40.1
Patch Changes
- chore: Remove sync-in-async warning for server rendering (#16949)
v5.40.0
Minor Changes
- feat: add
createContextutility for type-safe context (#16948)
Patch Changes
v5.39.13
Patch Changes
-
fix: add missing type for
frattribute forradialGradienttags in svg (#16943) -
fix: unset context on stale promises (#16935)
v5.39.12
Patch Changes
-
fix: better input cursor restoration for
bind:value(#16925) -
fix: track the user's getter of
bind:this(#16916) -
fix: generate correct SSR code for the case where
pendingis an attribute (#16919) -
fix: generate correct code for
eachblocks with async body (#16923)
v5.39.11
Patch Changes
- fix: flush batches whenever an async value resolves (#16912)
v5.39.10
Patch Changes
-
fix: hydrate each blocks inside element correctly (#16908)
-
fix: allow await in if block consequent and alternate (#16890)
-
fix: don't replace rest props with
$$propsfor excluded props (#16898) -
fix: correctly transform
$derivedprivate fields on server (#16894) -
fix: add
UNKNOWNevaluation value before breaking forbinding.initial===SnippetBlock(#16910)
v5.39.9
Patch Changes
- fix: flush when pending boundaries resolve (#16897)
v5.39.8
Patch Changes
-
fix: check boundary
pendingattribute at runtime on server (#16855) -
fix: preserve tuple type in
$state.snapshot(#16864) -
fix: allow await in svelte:boundary without pending (#16857)
-
fix: update
bind:checkederror message to clarify usage with radio inputs (#16874)
v5.39.7
Patch Changes
-
chore: simplify batch logic (#16847)
-
fix: rebase pending batches when other batches are committed (#16866)
-
fix: wrap async
childrenin$$renderer.async(#16862) -
fix: silence label warning for buttons and anchor tags with title attributes (#16872)
-
fix: coerce nullish
<title>to empty string (#16863)
v5.39.6
Patch Changes
-
fix: depend on reads of deriveds created within reaction (async mode) (#16823)
-
fix: SSR regression of processing attributes of
<select>and<option>(#16821) -
fix: async
class:+ spread attributes were compiled into sync server-side code (#16834) -
fix: ensure tick resolves within a macrotask (#16825)
v5.39.5
Patch Changes
-
fix: allow
{@​html await ...}and snippets with async content on the server (#16817) -
fix: use nginx SSI-compatible comments for
$props.id()(#16820)
v5.39.4
Patch Changes
- fix: restore hydration state after
awaitin<script>(#16806)
v5.39.3
Patch Changes
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: add missing type for
frattribute forradialGradienttags in svg (#16943) -
fix: unset context on stale promises (#16935)
v5.39.0
Minor Changes
- feat: experimental async SSR (#16748)
Patch Changes
- fix: correctly SSR hidden="until-found" (#16773)
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:boundaryunless the boundary is an error boundary (#16746)
v5.38.8
Patch Changes
- fix: send
$effect.pendingcount to the correct boundary (#16732)
v5.38.7
Patch Changes
-
fix: replace
undefinedwithvoid(0)in CallExpressions (#16693) -
fix: ensure batch exists when resetting a failed boundary (#16698)
-
fix: place store setup inside async body (#16687)
v5.38.6
Patch Changes
- fix: don't fail on
flushSyncwhile flushing effects (#16674)
v5.38.5
Patch Changes
- fix: ensure async deriveds always get dependencies from thennable (#16672)
v5.38.3
Patch Changes
-
fix: ensure correct order of template effect values (#16655)
-
fix: allow async
{@​const}in more places (#16643) -
fix: properly catch top level await errors (#16619)
-
perf: prune effects without dependencies (#16625)
-
fix: only emit
for_await_track_reactivity_lossin async mode (#16644)
v5.38.2
Patch Changes
-
perf: run blocks eagerly during flush instead of aborting (#16631)
-
fix: don't clone non-proxies in
$inspect(#16617) -
fix: avoid recursion error when tagging circular references (#16622)
v5.38.1
Patch Changes
- fix: flush effects scheduled during boundary's pending phase (#16738)
v5.38.0
Minor Changes
- feat: allow
awaitinside@constdeclarations (#16542)
Patch Changes
-
fix: remount at any hydration error (#16248)
-
chore: emit
await_reactivity_lossinfor awaitloops (#16521) -
fix: emit
snippet_invalid_exportinstead ofundefined_exportfor exported snippets (#16539)
v5.37.3
Patch Changes
- fix: reset attribute cache after setting corresponding property (#16543)
v5.37.2
Patch Changes
-
fix: double event processing in firefox due to event object being garbage collected (#16527)
-
fix: add bindable dimension attributes types to SVG and MathML elements (#16525)
-
fix: correctly differentiate static fields before emitting
duplicate_class_field(#16526) -
fix: prevent last_propagated_event from being DCE'd (#16538)
v5.37.1
Patch Changes
-
chore: remove some todos (#16515)
-
fix: allow await expressions inside
{#await ...}argument (#16514) -
fix:
append_stylesin an effect to make them available on mount (#16509) -
chore: remove
parser.template_untrimmed(#16511) -
fix: always inject styles when compiling as a custom element (#16509)
v5.37.0
Minor Changes
- feat: ignore component options in
compileModule(#16362)
Patch Changes
- fix: always mark props as stateful (#16504)
v5.36.17
Patch Changes
-
fix: throw on duplicate class field declarations (#16502)
-
fix: add types for
partattribute to svg attributes (#16499)
v5.36.16
Patch Changes
-
fix: don't update a focused input with values from its own past (#16491)
-
fix: don't destroy effect roots created inside of deriveds (#16492)
v5.36.15
Patch Changes
- fix: preserve dirty status of deferred effects (#16487)
v5.36.14
Patch Changes
-
fix: keep input in sync when binding updated via effect (#16482)
-
fix: rename form accept-charset attribute (#16478)
-
fix: prevent infinite async loop (#16482)
-
fix: exclude derived writes from effect abort and rescheduling (#16482)
v5.36.13
Patch Changes
- fix: ensure subscriptions are picked up correctly by deriveds (#16466)
v5.36.12
Patch Changes
- chore: move
capture_signalsto legacy module (#16456)
v5.36.10
Patch Changes
- fix: prevent batches from getting intertwined (#16446)
v5.36.9
Patch Changes
-
fix: don't reexecute derived with no dependencies on teardown (#16438)
-
fix: disallow
export { foo as default }in<script module>(#16447) -
fix: move ownership validation into async component body (#16449)
-
fix: allow async destructured deriveds (#16444)
-
fix: move store setup/cleanup outside of async component body (#16443)
v5.36.8
Patch Changes
-
fix: keep effect in the graph if it has an abort controller (#16430)
-
chore: Switch
payload.outto an array (#16428)
v5.36.7
Patch Changes
- fix: allow instrinsic
<svelte:...>elements to inherit fromSvelteHTMLElements(#16424)
v5.36.6
Patch Changes
-
fix: delegate functions with shadowed variables if declared locally (#16417)
-
fix: handle error in correct boundary after reset (#16171)
-
fix: make
<svelte:boundary>reset function a noop after the first call (#16171)
v5.36.5
Patch Changes
-
fix: silence
$inspecterrors when the effect is about to be destroyed (#16391) -
fix: more informative error when effects run in an infinite loop (#16405)
v5.36.4
Patch Changes
-
fix: avoid microtask in flushSync (#16394)
-
fix: ensure compiler state is reset before compilation (#16396)
v5.36.3
Patch Changes
-
fix: don't log
await_reactivity_losswarning when signal is read inuntrack(#16385) -
fix: better handle $inspect on array mutations (#16389)
-
fix: leave proxied array
lengthuntouched when deleting properties (#16389) -
fix: update
$effect.pending()immediately after a batch is removed (#16382)
v5.36.2
Patch Changes
-
fix: add
$effect.pending()to types (#16376) -
fix: add
pendingsnippet to<svelte:boundary>types (#16379)
v5.36.1
Patch Changes
-
fix: throw on duplicate class field declarations (#16502)
-
fix: add types for
partattribute to svg attributes (#16499)
v5.36.0
Minor Changes
- feat: support
awaitin components when using theexperimental.asynccompiler option (#15844)
Patch Changes
v5.35.7
Patch Changes
-
fix: silence autofocus a11y warning inside
<dialog>(#16341) -
fix: don't show adjusted error messages in boundaries (#16360)
-
chore: replace inline regex with variable (#16340)
v5.35.6
Patch Changes
-
chore: simplify reaction/source ownership tracking (#16333)
-
chore: simplify internal component
pop()(#16331)
v5.35.5
Patch Changes
-
fix: associate sources in Spring/Tween/SvelteMap/SvelteSet with correct reaction (#16325)
-
fix: re-evaluate derived props during teardown (#16278)
v5.35.4
Patch Changes
- fix: abort and reschedule effect processing after state change in user effect (#16280)
v5.35.3
Patch Changes
-
fix: account for mounting when
select_optioninattribute_effect(#16309) -
fix: do not proxify the value assigned to a derived (#16302)
v5.35.2
Patch Changes
- fix: bump esrap (#16295)
v5.35.1
Patch Changes
- feat: add parent hierarchy to
__svelte_metaobjects (#16255)
v5.35.0
Minor Changes
- feat: add
getAbortSignal()(#16266)
Patch Changes
- chore: simplify props (#16270)
v5.34.9
Patch Changes
- fix: ensure unowned deriveds can add themselves as reactions while connected (#16249)
v5.34.8
Patch Changes
-
fix: untrack
$inspect.withand add check for unsafe mutation (#16209) -
fix: use fine grained for template if the component is not explicitly in legacy mode (#16232)
-
lift unsafe_state_mutation constraints for SvelteSet, SvelteMap, SvelteDate, SvelteURL and SvelteURLSearchParams created inside the derived (#16221)
[v5.34.7](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5347
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 these updates 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
- Upstream package that's now on version 8.
- Removed types dep since types are built-in now.
Testing
Tests should pass
Docs
N/A, bug fix
Changes
Format moved this comment, which broke the check
Testing
No errors in my editor
Docs
N/A
Description
This PR fixes an issue with Starlight’s intersection observer used for updating table of contents state, which we discovered while reviewing #3382 during Talking & Doc’ing today.
We found multiple issues:
- After we added anchor link support, headings in sites with this enabled are wrapped in a
<div>breaking an assumption in the table of contents logic. - After moving Markdown styles to an external CSS file, we renamed
.contentto.sl-markdown-content, but forgot to rename the same in a query selector here.
This caused some subtle issues that were not super obvious, but we noticed them while digging deeper.
This PR also adds some Playwright tests to make sure highlighting behaves as expected in the browser.
Changes
Fixed an issue where the internal timers weren't updated after the internal refactor.
Testing
Maybe with a review PR?
Docs
N/A
Changes
- Depends on #15175
- Updates the local provider to be a regular provider (see changeset for change), consistency FTW! This allows to simplify code and docs by a lot
- I used it as an opportunity to simplify fonts internals, thanks to the learnings of when we coded with Joe Rainsberger in December. I know the diff is massive so really it's not worth reviewing (altho it's doable), as long as the tests pass we're safe
- TLDR: unified API for font providers, removed some internal abstractions, more tests!
Testing
- Added a lot more tests for the core logic
- Added tests for some infra
- Added in memory e2e tests
- All other tests should pass
Docs
- local provider jsdoc
- Changesets
- local provider breaking change
- provider api init root
- RFC
- withastro/docs#13084
Adapters like Cloudflare, Netlify, and Node provide default session drivers, so users should be able to configure session options (like ttl) without explicitly specifying a driver.
Changes
- Fixes #15202
- Mostly this just uses .optional() in the schema.
Testing
Added test case to packages/astro/test/units/config/config-validate.test.js
Docs
N/A, bug fix
Changes
Removed a cyclic module dependency between router.js and event.js, which could explain the behavior observed in #15191.
While investigating why our existing end to end tests did not fail, I found that I could reproduce the issue with 6.0.0-beta.1, but not with the current tip of next.
Breaking the cycle seems still the right thing to do.
Closes #15191
Testing
We already have an e2e test for that case.
Docs
n.a.
Changes
- Depends on #15181
- At ViteConf, I got some feedback that
getFontData()was a bit limiting. So this PR replaces it withfontData - This change should affect very few users, as this is an advanced API
Testing
Updated
Docs
- Changeset
- withastro/docs#13047
Changes
This PR updates the version of @astrojs/check to fix its current versioning:
- On 10/20/2025,
0.9.5was released. - On 11/10/2025,
0.9.6-alpha.0was released as part of the Astro v6alpha. - On 11/26/2025,
0.9.6was released due to some changes inmain. - On 01/13/2026,
0.9.6-beta.1was released yesterday as part of the Astro v6beta.
This versioning goes backwards with 0.9.6-beta.1 having more recent changes than 0.9.6 and, when exiting beta, changesets will automatically try publishing 0.9.6 and skip it as it's already published on npm.
This PR does 2 things:
- Manually edit the
package.jsonfileversionof@astrojs/checkto0.9.7-beta.0 - Add a patch changeset for this package
If my understanding is correct, this would mean that with the next release, it'll be published as 0.9.7-beta.1, and then when exiting beta, it'll be published as 0.9.7.
Testing
No testing; not aware of any testing possible for this.
Docs
This is a version fix; no doc updates are needed.
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 next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
astro@6.0.0-beta.2
Major Changes
-
#15192
ada2808Thanks @gameroman! - Removes support for CommonJS config files - (v6 upgrade guidance) -
#15266
f7c9365Thanks @florian-lefebvre! - AllowsAstro.cspandcontext.cspto be undefined instead of throwing errors whencsp: trueis not configuredWhen using the experimental Content Security Policy feature in Astro 5.x,
context.cspwas always defined but would throw ifexperimental.cspwas not enabled in the Astro config.For the stable version of this API in Astro 6,
context.cspcan now be undefined if CSP is not enabled and its methods will never throw.What should I do?
If you were using experimental CSP runtime utilities, you must now access methods conditionally:
-Astro.csp.insertDirective("default-src 'self'"); +Astro.csp?.insertDirective("default-src 'self'");
Patch Changes
-
#15208
8dbdd8eThanks @matthewp! - Makessession.driveroptional in config schema, allowing adapters to provide default driversAdapters like Cloudflare, Netlify, and Node provide default session drivers, so users can now configure session options (like
ttl) without explicitly specifying a driver. -
#15260
abca1ebThanks @ematipico! - Fixes an issue where adding new pages weren't correctly shown when using the development server. -
#15214
6bab8c9Thanks @ematipico! - Fixes an issue where the internal perfomance timers weren't correctly updated to reflect new build pipeline. -
#15259
8670a69Thanks @ematipico! - Fixes an issue where styles weren't correctly reloaded when using the@astrojs/cloudflareadapter. -
#15205
12adc55Thanks @martrapp! - Fixes an issue where theastro:page-loadevent did not fire on initial page loads. -
#15269
6f82aaeThanks @ematipico! - Fixes a regression wherebuild.serverEntrystopped working as expected.
@astrojs/cloudflare@13.0.0-beta.1
Patch Changes
-
#15269
6f82aaeThanks @ematipico! - Fixes a regression wherebuild.serverEntrystopped working as expected. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/check@0.9.7-beta.1
Patch Changes
Changes
Closes #14625
This issue is weird. Somehow the tool wrk is able to send HTTP requests where the URL contains the # inside the type req.url. I believe this is a bug coming from wrk, because the hash inside the URL is a browser thing.
As for the fix, I didn't want to use the URL object on purpose to avoid too many changes, so I added a check for the # and stripped it out
Testing
Only manually, because our internal tests already remove the hash from the URL
Docs
N/A
Changes
update esbuild
Testing
existing tests should pass
Docs
not needed
Changes
Drop cjs config support
Testing
Existing tests should pass
Docs
Might be needed
/cc @withastro/maintainers-docs for feedback!
Changes
- Instead of mutating the provider name, we keep the mapping from the provider object to an ID inside the font resolver
Testing
Updated
Docs
N/A, internal refactor
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 next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
astro@6.0.0-beta.1
Patch Changes
- Updated dependencies [
bbb5811]:- @astrojs/markdown-remark@7.0.0-beta.1
@astrojs/prism@4.0.0-beta.1
Patch Changes
@astrojs/rss@4.0.15-beta.1
Patch Changes
create-astro@5.0.0-beta.1
Patch Changes
@astrojs/db@0.19.0-beta.2
Patch Changes
@astrojs/alpinejs@0.5.0-beta.1
Patch Changes
@astrojs/markdoc@1.0.0-beta.4
Patch Changes
- Updated dependencies [
bbb5811,bbb5811]:- @astrojs/markdown-remark@7.0.0-beta.1
- @astrojs/prism@4.0.0-beta.1
@astrojs/mdx@5.0.0-beta.1
Patch Changes
-
Updated dependencies [
bbb5811]:- @astrojs/markdown-remark@7.0.0-beta.1
@astrojs/netlify@7.0.0-beta.5
Patch Changes
-
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/preact@5.0.0-beta.1
Patch Changes
@astrojs/react@5.0.0-beta.1
Patch Changes
@astrojs/sitemap@3.6.1-beta.2
Patch Changes
@astrojs/solid-js@6.0.0-beta.1
Patch Changes
@astrojs/check@0.9.6-beta.1
Patch Changes
-
Updated dependencies [
bbb5811]:- @astrojs/language-server@2.16.1-beta.1
@astrojs/language-server@2.16.1-beta.1
Patch Changes
@astrojs/markdown-remark@7.0.0-beta.1
Patch Changes
-
Updated dependencies [
bbb5811]:- @astrojs/prism@4.0.0-beta.1
@astrojs/upgrade@0.7.0-beta.1
Patch Changes
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/sitemap@3.7.0
Minor Changes
-
#14471
4296373Thanks @Slackluky! - Adds the ability to split sitemap generation into chunks based on customizable logic. This allows for better management of large sitemaps and improved performance. The newchunksoption in the sitemap configuration allows users to define functions that categorize sitemap items into different chunks. Each chunk is then written to a separate sitemap file.integrations: [ sitemap({ serialize(item) { th return item }, chunks: { // this property will be treated last on the configuration 'blog': (item) => { // will produce a sitemap file with `blog` name (sitemap-blog-0.xml) if (/blog/.test(item.url)) { // filter path that will be included in this specific sitemap file item.changefreq = 'weekly'; item.lastmod = new Date(); item.priority = 0.9; // define specific properties for this filtered path return item; } }, 'glossary': (item) => { if (/glossary/.test(item.url)) { item.changefreq = 'weekly'; item.lastmod = new Date(); item.priority = 0.7; return item; } } // the rest of the path will be stored in `sitemap-pages.0.xml` }, }), ],
astro@5.16.10
Patch Changes
-
2fa19c4- Improved error handling in the rendering phaseAdded defensive validation in
App.render()and#renderError()to provide a descriptive error message when a route module doesn't have a valid page function. -
#15199
d8e64efThanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure. -
#15169
b803d8bThanks @rururux! - fix: fix image 500 error when moving dist directory in standalone Node -
#14622
9b35c62Thanks @aprici7y! - Fixes CSS url() references to public assets returning 404 in dev mode when base path is configured -
#15219
43df4ceThanks @matthewp! - Upgrades thediffpackage to v8
@astrojs/rss@4.0.15
Patch Changes
- #15199
d8e64efThanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure.
@astrojs/netlify@6.6.4
Patch Changes
-
#15199
d8e64efThanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/node@9.5.2
Patch Changes
-
#15196
a8317c1Thanks @ematipico! - Fixes an issue where some prendered pages weren't correctly rendered when using the Node.js adapter in middleware mode. -
#15169
b803d8bThanks @rururux! - fix: fix image 500 error when moving dist directory in standalone Node
@astrojs/vercel@9.0.4
Patch Changes
- #14863
29fd188Thanks @drwpow! - Improves error message when using Node builtins inside Edge middlewares
@astrojs/language-server@2.16.3
Patch Changes
- #15199
d8e64efThanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure.
Adds missing changesets for packages not published.
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 next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
@astrojs/markdoc@1.0.0-beta.3
Patch Changes
- #15184
f47c071Thanks @ematipico! - Fixes an issue where the package wasn't correctly published
Summary
When running astro add vercel, the Vercel adapter creates build artifacts in .vercel/output/. This directory should be gitignored to avoid committing build artifacts.
This PR adds automatic .gitignore handling for the Vercel adapter, following the same pattern already used for Cloudflare, Tailwind, Svelte, and other integrations:
- If
.gitignoreexists but doesn't contain.vercel, prompts to add it - If
.gitignoredoesn't exist, prompts to create it with.vercel - If
.vercelis already in.gitignore, skips silently
Closes #15058
Test plan
- Run
astro add vercelin a project without.gitignore- should prompt to create one - Run
astro add vercelin a project with.gitignorewithout.vercel- should prompt to add it - Run
astro add vercelin a project with.gitignorecontaining.vercel- should skip silently
🤖 Generated with Claude Code
Changes
Should fix the package publishing
Testing
Docs
Changes
- We have APIs to allow using font data programmatically, which was mainly designed for advanced usage such as OG images
- However, getting the font buffer has always been clunky. It actually didn't work during prererendering (which is the main usecase)
- This PR introduces a new
getFontBuffer()function that get the buffer using a url from the result ofgetFontData() - In SSR if
getFontData()is used, a js file is created per buffer in the server output in addition to actual files in the client output. Not sure there's much we can do about it - On the client, calling the function always throws. This is avoid making the client bundle size huge
Testing
- New unit test
- Add ssr integrated tests
- Add integrated tests
Docs
- Changeset
- RFC
- withastro/docs#13041
Changes
- Makes so that the fonts runtime is type checked and used as an entrypoint only. It matches the work made for actions virtual modules in v6
- This PR is mostly about moving code around, which makes the diff big
- Moves the functions that were defined in
runtime.tstocore/<name>.ts - Moves the code that was defined inline in the assets virtual module to
runtime.ts - Moves tests
Testing
Updated. Tests are added for createGetFontData()
Docs
N/A, internal refactor
Changes
Based of #15154, original branch didn't have push rights for maintainers. This is the same PR just rebased of next instead of main.
Testing
See original PR
Docs
Changes
Initially reported on Discord, this PR fixes an issue when importing using an import alias a file with a name matching a directory name.
- Repro
- The custom resolver used in the vite plugin to alias paths now checks if a match is a file instead of only relying on
fs.existsSync(), which returnstruefor both files and directories.
Testing
- Added a new
src/pages.tsfile in the existingalias-tsconfigfixture, matching the name of thesrc/pages/directory, and imported it using an alias.- The associated test fails before the fix.
- The test succeeds after the fix.
Docs
This is a bug fix; no doc updates are needed.
Changes
- Closes #15091
- Added
isBuildcheck inbuildEnd()hook to prevent font copying during dev server shutdown - Font copying now only occurs during
astro build, not when stopping dev server with q+enter - Added test case to verify no dist folder is created when dev server stops
- Changeset added:
fix-dev-quit-fonts-dist-creation.md
Testing
- Added test: "Does not create dist folder or copy fonts when dev server stops"
- Manual verification that q+enter no longer creates dist folder or copies fonts
- Verified fonts still work correctly in dev mode
- Verified astro build still copies fonts as expected
Docs
No docs changes needed. This fixes incorrect behavior in dev mode. User-facing behavior remains the same.
Switches the tag to beta for the beta release.
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.37.3
Patch Changes
- #3648
292666cThanks @maxchang3! - Prevents unwanted font size adjustments on iOS after orientation changes.
Changes
- Allows font providers to specify family specific options. That allows for a better DX (before it was a beir weird, see the diff of the changeset about the breaking change)
- Figuring out how to make the types work in
defineConfig()was an absolute nightmare. We have types tests to avoid regressions
Testing
- Manually
- Types tests
- Config tests
Docs
- Changesets
- withastro/docs#13037
Changes
- After T&D feedback
- Since the beginning of the experimental fonts API, I have always omitted the Google Icons provider, which made things more confusing to document and support
- We now re-export all unifont providers
Testing
Updated
Docs
Changeset + withastro/docs#13035
Note: This PR body was truncated due to platform limits.
This PR contains the following updates:
Release Notes
withastro/astro (@astrojs/sitemap)
v3.6.1
Patch Changes
- #15033
dd06779Thanks @florian-lefebvre! - Updates how routes are retrieved to avoid relying on a deprecated API
withastro/astro (@astrojs/svelte)
v7.2.5
Patch Changes
- #15070
fa9c464Thanks @antonyfaris! - Improve Sveltechildrenprop type checking
withastro/astro (@astrojs/vue)
v5.1.4
Patch Changes
- #15016
12eb4cdThanks @rahuld109! - Adds support for arbitrary HTML attributes on Vue components
cloudflare/workerd (@cloudflare/workers-types)
v4.20260109.0
v4.20260108.0
v4.20260107.1
v4.20260103.0
rollup/rollup (rollup)
v4.55.1
2026-01-05
Bug Fixes
- Fix artifact reference for OpenBSD (#6231)
Pull Requests
- #6231: Fix OpenBSD artifacts and ensure OIDC is working (@lukastaegert)
cloudflare/workers-sdk (wrangler)
v4.58.0
Minor Changes
-
#11728
7d63fa5Thanks @NuroDev! - Add command categories towranglerhelp menuThe help output now groups commands by product category (Account, Compute & AI, Storage & Databases, Networking & Security) to match the Cloudflare dashboard organization:
$ wrangler --help COMMANDS wrangler docs [search..] 📚 Open Wrangler's command documentation in your browser ACCOUNT wrangler auth 🔓 Manage authentication wrangler login 🔑 Login to Cloudflare ... COMPUTE & AI wrangler ai 🤖 Manage AI models wrangler containers 📦 Manage Containers [open beta] ...This improves discoverability by organizing the 20+ wrangler commands into logical groups.
Patch Changes
-
#11822
97e67b9Thanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Dependency From To workerd 1.20260103.0 1.20260107.1 -
Updated dependencies [
97e67b9]:- miniflare@4.20260107.0
v4.57.0
Minor Changes
-
#11682
b993d95Thanks @ascorbic! - Addwrangler auth tokencommand to retrieve your current authentication credentials.You can now retrieve your authentication token for use with other tools and scripts:
wrangler auth token
The command returns whichever authentication method is currently configured:
- OAuth token from
wrangler login(automatically refreshed if expired) - API token from
CLOUDFLARE_API_TOKENenvironment variable
Use
--jsonto get structured output including the token type, which also supports API key/email authentication:wrangler auth token --json
This is similar to
gh auth tokenin the GitHub CLI. - OAuth token from
-
#11702
f612b46Thanks @gpanders! - Add support for trusted_user_ca_keys in WranglerYou can now configure SSH trusted user CA keys for containers. Add the following to your wrangler.toml:
[[containers.trusted_user_ca_keys]] public_key = "ssh-ed25519 AAAAC3..."
This allows you to specify CA public keys that can be used to verify SSH user certificates.
-
#11437
9e360f6Thanks @ichernetsky-cf! - Drop deprecated containersobservability.loggingfield -
#11616
fc95831Thanks @NuroDev! - Add type generation support towrangler devYou can now have your worker configuration types be automatically generated when the local Wrangler development server starts.
To use it you can either:
- Add the
--typesflag when runningwrangler dev. - Update your Wrangler configuration file to add the new
dev.generate_typesboolean property.
{ "$schema": "node_modules/wrangler/config-schema.json", "name": "example", "main": "src/index.ts", "compatibility_date": "2025-12-12", "dev": { "generate_types": true } } - Add the
-
#11524
b0dbf1aThanks @penalosa! - Add hidden CLI flags towrangler setupfor suppressing outputTwo new hidden flags have been added to
wrangler setup:--no-completion-message: Suppresses the deployment details message after setup completes--no-install-wrangler: Skips Wrangler installation during project setup
-
#11777
69979a3Thanks @MattieTK! - Add analytics properties to secret commands for better usage insightsSecret commands (
wrangler secret put,wrangler secret bulk, and their Pages/versions equivalents) now include additional analytics properties to help understand how secrets are being managed:secretOperation: Whether this is a "single" or "bulk" secret operationsecretSource: How the secret was provided ("interactive", "stdin", or "file")secretFormat: For bulk operations, the format used ("json" or "dotenv")hasEnvironment: Whether an environment was specified
These properties help improve the developer experience by understanding common usage patterns. No sensitive information (secret names, values, or counts) is tracked.
-
#11738
c54f8daThanks @jamesopstad! - Add defaultTextmodule rule for.sqlfiles.This enables importing
.sqlfiles directly in Wrangler and the Cloudflare Vite plugin without extra configuration. -
#11692
df1f9c9Thanks @dario-piotrowicz! - Support Waku in autoconfig -
#11549
d059f69Thanks @dario-piotrowicz! - Support Vike in autoconfig
Patch Changes
-
#11683
02fbd22Thanks @ascorbic! - Display a warning when authentication errors occur and theaccount_idin your Wrangler configuration does not match any of your authenticated accounts. This helps identify configuration issues where you may have the wrong account ID set in yourwrangler.tomlorwrangler.jsoncfile. -
#11704
77078efThanks @dario-piotrowicz! - Fix autoconfig handling of Next.js apps with CJS config files and incompatible Next.js versionsPreviously,
wrangler setupandwrangler deploy --x-autoconfigwould fail when working with Next.js applications that use CommonJS config files (next.config.cjs) or have versions of Next.js that don't match the required peer dependencies. The autoconfig process now uses dynamic imports and forced installation to handle these scenarios gracefully. -
#11796
2510723Thanks @dario-piotrowicz! -wrangler deploydelegates toopennextjs-cloudflare deployonly when the--x-autoconfigflag is usedThe
wrangler deploycommand has been updated to delegate to theopennextjs-cloudflare deploycommand when run in an open-next project. Once this behavior had been introduced it caused a few issues. So it's been decided to enable it for the time being only when the--x-autoconfigflag is set (since this behavior, although generally valid, is only strictly necessary for thewrangler deploy's autoconfig flow). -
#11764
9f6dd71Thanks @terakoya76! - Fix R2 Data Catalog snapshot-expiration API field namesThe
wrangler r2 bucket catalog snapshot-expiration enablecommand was sending incorrect field names
to the Cloudflare API, resulting in a 422 Unprocessable Entity error. This fix updates the API request
body to use the correct field names:olderThanDays->max_snapshot_age(as duration string, e.g., "30d")retainLast->min_snapshots_to_keep
The CLI options (
--older-than-daysand--retain-last) remain unchanged. -
#11651
d123ad0Thanks @dario-piotrowicz! - Surface a more helpful error message for TOML Date, Date-Time, and Time values invarsTOML parses unquoted date/time values like
DATE = 2024-01-01as objects. Previously this would cause an unhelpful error message further down the stack. Now wrangler surfaces a more helpful error message earlier, telling you to quote the value as a string, e.g.DATE = "2024-01-01". -
#11711
5121b23Thanks @southpolesteve! - Show an error when D1 migration commands are run without a configuration filePreviously, running
wrangler d1 migrations apply,wrangler d1 migrations list, orwrangler d1 migrations createin a directory without a Wrangler configuration file would silently exit with no feedback. Now these commands display a clear error message:"No configuration file found. Create a wrangler.jsonc file to define your D1 database."
-
#11710
82e7e90Thanks @dario-piotrowicz! - Fix arguments passed towrangler deploynot being forwarded toopennextjs-cloudflare deploywrangler deployrun in an open-next project delegates toopennextjs-cloudflare deploy, as part of this all the arguments passed towrangler deployneed be forwarded toopennextjs-cloudflare deploy, before the arguments would be lost, now they will be successfully forwarded (for examplewrangler deploy --keep-varswill callopennextjs-cloudflare deploy --keep-vars) -
#10750
4688f59Thanks @jacoblearned! - Notify user on local dev server reload.When running
wrangler dev, the local server suppresses Miniflare's reload messages to prevent duplicate log entries from the proxy and user workers. This update adds a reload complete message so users know their changes were applied, instead of only seeing "Reloading local server...". -
#11673
b827893Thanks @MattieTK! - Breaks out version numbers into sortable number types for analytics logging -
Updated dependencies [
65d1850,1615fce,b2769bf,554a4df,8eede3f,6a05b1c,62fd118,a7e9f80,eac5cf7]:- miniflare@4.20260103.0
- @cloudflare/unenv-preset@2.8.0
v4.56.0
Minor Changes
-
#11196
171cfd9Thanks @emily-shen! - For containers being created in a FedRAMP high environment, registry credentials are encrypted by the container platform.
Update wrangler to correctly send a request to configure a registry for FedRAMP containers. -
#11646
472cf72Thanks @vovacf201! - feat: add R2 Data Catalog snapshot expiration commandsAdds new commands to manage automatic snapshot expiration for R2 Data Catalog tables:
wrangler r2 bucket catalog snapshot-expiration enable- Enable automatic snapshot expirationwrangler r2 bucket catalog snapshot-expiration disable- Disable automatic snapshot expiration
Snapshot expiration helps manage storage costs by automatically removing old table snapshots while keeping a minimum number of recent snapshots for recovery purposes.
Example usage:
# Enable snapshot expiration for entire catalog (keep 10 snapshots, expire after 5 days) wrangler r2 bucket catalog snapshot-expiration enable my-bucket --token $R2_CATALOG_TOKEN --max-age 7200 --min-count 10 # Enable for specific table wrangler r2 bucket catalog snapshot-expiration enable my-bucket my-namespace my-table --token $R2_CATALOG_TOKEN --max-age 2880 --min-count 5 # Disable snapshot expiration wrangler r2 bucket catalog snapshot-expiration disable my-bucket
Patch Changes
-
#11649
428ae9eThanks @ascorbic! - fix: respect TypeScript path aliases when resolving non-JS modules with module rulesWhen importing non-JavaScript files (like
.graphql,.txt, etc.) using TypeScript path aliases defined intsconfig.json, Wrangler's module-collection plugin now correctly resolves these imports. Previously, path aliases were only respected for JavaScript/TypeScript files, causing imports likeimport schema from '~lib/schema.graphql'to fail when using module rules. -
#11647
c0e249eThanks @dario-piotrowicz! - The auto-configuration logic present inwrangler setupandwrangler deploy --x-autoconfigcannot reliably handle Hono projects, so in these cases make sure to properly error saying that automatically configuring such projects is not supported. -
#11694
3853200Thanks @dario-piotrowicz! - fix: improve the open-next detection thatwrangler deployperforms to eliminate false positives for non open-next projects -
Updated dependencies [
ae1ad22,737c0f4]:- miniflare@4.20251217.0
v4.55.0
Minor Changes
-
#11301
6c590a0Thanks @dario-piotrowicz! - Makewrangler deployrunopennextjs-cloudflare deploywhen executed in an open-next project -
#11045
12a63efThanks @edmundhung! - Add an internalunstable_printBindingsAPI for vite plugin integration -
#11590
7d8d4a6Thanks @pombosilva! - Add Workflows send-event to wrangler commands. -
#11301
6c590a0Thanks @dario-piotrowicz! - Support Next.js (via OpenNext) projects in autoconfig
Patch Changes
-
#11615
ed42010Thanks @elithrar! - Add helpful warning when SSL certificate errors occur due to corporate proxies or VPNs intercepting HTTPS traffic. When errors like "self-signed certificate in certificate chain" are detected, wrangler now displays guidance about installing missing system roots from your corporate proxy vendor. -
#11641
6b28de1Thanks @petebacondarwin! - update command status text and formatting -
#11578
4201472Thanks @gpanders! - Fixup UX papercuts in containers SSH -
#11550
95d81e1Thanks @hiendv! - Fix "TypeError: Body is unusable: Body has already been read" when failing to exchange oauth code because of doubleresponse.text(). -
Updated dependencies [
5d085fb,b75b710,1e9be12]:- miniflare@4.20251213.0
v4.54.0
Minor Changes
-
#11512
c15e99eThanks @emily-shen! - Enable usingctx.exportswith containersYou can now use containers with Durable Objects that are accessed via
ctx.exports.Now your config file can look something like this:
{ "name": "container-app", "main": "src/index.ts", "compatibility_date": "2025-12-01", "compatibility_flags": ["enable_ctx_exports"], // compat flag needed for now. "containers": [ { "image": "./Dockerfile", "class_name": "MyDOClassname", "name": "my-container" }, ], "migrations": [ { "tag": "v1", "new_sqlite_classes": ["MyDOClassname"], }, ], // no need to declare your durable object binding here }Note that when using
ctx.exports, where you previously accessed a Durable Object via something likeenv.DO, you should now access withctx.exports.MyDOClassname.Refer to the docs for more information on using
ctx.exports. -
#11508
b17797cThanks @dario-piotrowicz! - Wrangler will no longer try to add additional configuration to projects using@cloudflare/vite-pluginwhen deploying or runningwrangler setup -
#11508
b17797cThanks @dario-piotrowicz! - When a Vite project is detected, install@cloudflare/vite-plugin -
#11576
bb47e20Thanks @dario-piotrowicz! - Support Analog projects in autoconfig -
#10582
991760dThanks @flakey5! - Addcontainers sshcommand
Patch Changes
-
#11467
235d325Thanks @edmundhung! - fix: prevent reporting SQLite error fromwrangler d1 executeto Sentry -
#11414
41103f5Thanks @petebacondarwin! - add extra logging to user log-in flow for diagnosing failed login requests -
#11559
ea6fbecThanks @nikitassharma! - Remove image validation for containers on wrangler deploy.Internal customers are able to use additional image registries and will run into failures with this validation. Image registry validation will now be handled by the API.
-
Updated dependencies [
31c162a,bd5f087,c6dd86f]:- miniflare@4.20251210.0
v4.53.0
Minor Changes
-
#11500
af54c63Thanks @dario-piotrowicz! - Add newautoconfig_summaryfield to the deploy output entryThis change augments
wrangler deployoutput being printed toWRANGLER_OUTPUT_FILE_DIRECTORYorWRANGLER_OUTPUT_FILE_PATHto also include a newautoconfig_summaryfield containing the possible summary details for the autoconfig process (the field isundefinedif autoconfig didn't run).Note: the field is experimental and could change while autoconfig is not GA
-
#11477
9988cc9Thanks @ascorbic! - Support Nuxt in autoconfig -
#11472
ce295bfThanks @dario-piotrowicz! - Support Qwik projects in autoconfig -
#10937
9514c9aThanks @ReppCodes! - Add support for "targeted" placement mode with region, host, and hostname fieldsThis change adds a new mode to
placementconfiguration. You can specify one of the following fields to target specific external resources for Worker placement:region: Specify a region identifier (e.g., "aws:us-east-1") to target a region from another cloud service providerhost: Specify a host with (required) port (e.g., "example.com:8123") to target a TCP servicehostname: Specify a hostname (e.g., "example.com") to target an HTTP resource
These fields are mutually exclusive - only one can be specified at a time.
Example configuration:
[placement] host = "example.com:8123"
-
#11498
ac861f8Thanks @penalosa! - Add React Router support in autoconfig -
#11506
79d30d4Thanks @vicb! - Set the target JS version to ES2024
Patch Changes
-
#11393
45480b1Thanks @alsuren! - improved --help text for wrangler d1 subcommands -
#11523
94c67e8Thanks @jamesopstad! - fix: types from @cloudflare/workers-utils not being exported correctly from Wrangler -
#11483
f550b62Thanks @edmundhung! - stop runningnpm installwith--legacy-peer-depsflag when setting up a project -
Updated dependencies [
819e287,56e78c8,0aa959a]:- @cloudflare/unenv-preset@2.7.13
- miniflare@4.20251202.1
v4.52.1
Patch Changes
-
#11504
7e80340Thanks @dario-piotrowicz! - Fixwrangler deployfailing for new workers containing environment variables or bindings -
Updated dependencies [
59534ba]:- miniflare@4.20251202.0
v4.52.0
Minor Changes
-
#11416
abe49d8Thanks @dario-piotrowicz! - Remove thewrangler deploy's--x-remote-diff-checkexperimental flagThe remote diffing feature has been enabled by default for a while and its functionality is stable, as a result the experimental flag (only available for option-out of the feature right now) has been removed.
-
#11408
f29e699Thanks @ascorbic! - Export unstable helpers useful for generating wrangler config -
#11389
2342d2fThanks @dario-piotrowicz! - Improve thewrangler deployflow to also check for potential overrides of secrets.Now when you run
wrangler deployWrangler will check the remote secrets for your workers for conflicts with the names of the bindings you're about to deploy. If there are conflicts, Wrangler will warn you and ask you for your permission before proceeding. -
#11375
9a1de61Thanks @penalosa! - Support TanStack Start in autoconfig -
#11360
6b38532Thanks @emily-shen! - Containers: Allow users to directly authenticate external image registries in local devPreviously, we always queried the API for stored registry credentials and used those to pull images. This means that if you are using an external registry (ECR, dockerhub) then you have to configure registry credentials remotely before running local dev.
Now you can directly authenticate with your external registry provider (using
docker loginetc.), and Wrangler or Vite will be able to pull the image specified in thecontainers.imagefield in your config file.The Cloudflare-managed registry (registry.cloudflare.com) currently still does not work with the Vite plugin.
-
#11009
e4ddbc2Thanks @dario-piotrowicz! - Allow users to provide anaccount_idas part of theWorkerConfigObjectthey pass tomaybeStartOrUpdateRemoteProxySession -
#11478
2aec2b4Thanks @dario-piotrowicz! - Support SolidStart in autoconfig -
#11330
5a873bbThanks @dario-piotrowicz! - Support Angular projects in autoconfig -
#11449
e7b690bThanks @penalosa! - Delegate generation of HTTPS certificates to Miniflare -
#11448
2b4813bThanks @edmundhung! - Bumpsesbuildversion to 0.27.0 -
#11335
c47ad11Thanks @dario-piotrowicz! - Support internal-only undocumentedcross_account_grantservice binding property -
#11346
a977701Thanks @penalosa! - We're soon going to make backend changes that mean thatwrangler dev --remotesessions will no longer have an associated inspector connection. In advance of these backend changes, we've enabled a newwrangler tail-based logging strategy forwrangler dev --remote. For now, you can revert to the previous logging strategy withwrangler dev --remote --no-x-tail-logs, but in future it will not be possible to revert.The impact of this will be that logs that were previously available via devtools will now be provided directly to the Wrangler console and it will no longer be possible to interact with the remote Worker via the devtools console.
Patch Changes
-
#11397
b154de2Thanks @vicb! - Use more workerd native modulesNode modules
punycode,trace_events,cluster,wasi, anddomainswill be used when enabled
via a compatibility flag or by default when the compatibility date is greater or equal to 2025-12-04. -
#11452
76f0540Thanks @penalosa! - Remove uses ofeval()from the Wrangler bundle -
#11284
695fa25Thanks @dom96! - Removes duplicate module warnings when vendoring Python packages -
#11249
504e258Thanks @dario-piotrowicz! - fix: Generalize autoconfig wordingGeneralize the autoconfig wording so that when it doesn't specifically mention "deployment" (since it can be run via
wrangler setupor the autoconfig programmatic API) -
#11455
d25f7e2Thanks @dario-piotrowicz! - Fix autoconfig using absolute paths for static projectsRunning the experimental autoconfig logic through
wrangler setupandwrangler deploy --x-autoconfigon a static project results in absolute paths being used. This is incorrect, especially when such paths are being included in the generated wrangler.jsonc. The changes here fix the autoconfig logic to use paths relative to the project's root instead.For example given a project located in
/Users/usr/projects/sites/my-static-site, before:// wrangler.jsonc at /Users/usr/projects/sites/my-static-site { "$schema": "node_modules/wrangler/config-schema.json", "name": "static", "compatibility_date": "2025-11-27", "observability": { "enabled": true }, "assets": { "directory": "/Users/usr/projects/sites/my-static-site/public" } }
and after:
// wrangler.jsonc at /Users/usr/projects/sites/my-static-site { "$schema": "node_modules/wrangler/config-schema.json", "name": "static", "compatibility_date": "2025-11-27", "observability": { "enabled": true }, "assets": { "directory": "public" } }
-
#11484
1cfae2dThanks @edmundhung! - Explicitly close FileHandle inwrangler d1 executeto support Node 25 -
#11383
1d685cbThanks @dario-piotrowicz! - Fix: ensure that when a remote proxy session creation fails a hard error is surfaced to the user (both inwrangler devand in the programmatic API).When using remote bindings, either with
wrangler devor viastartRemoteProxySession/maybeStartOrUpdateRemoteProxySessionthe remote proxy session necessary to connect to the remote resources can fail to be created, this might happen if for example you try to set a binding with some invalid values such as:MY_R2: { type: "r2_bucket", bucket_name: "non-existent", // No bucket called "non-existent" exists remote: true, },
Before this could go undetected and cause unwanted behaviors such as requests handling hanging indefinitely, now wrangler will instead crash (or throw a hard error ion the programmatic API), clearly indicating that something went wrong during the remote session's creation.
-
#11366
edf896dThanks @ascorbic! - Use correctly-formatted names when displaying detected framework details -
#11461
9eaa9e2Thanks @dario-piotrowicz! - Update the structure of theconfiguremethod of autoconfig frameworksUpdate the signature of the
configurefunction of autoconfig frameworks (AutoconfigDetails#Framework), before they would return aRawConfigobject to use to update the project's wrangler config file, now they return an object that includes theRawConfigand that can potentially also hold additional data relevant to the configuration. -
Updated dependencies [
2b4813b,b154de2,5ee3780,6e63b57,71ab562,5e937c1]:- miniflare@4.20251128.0
- @cloudflare/unenv-preset@2.7.12
v4.51.0
Minor Changes
-
#11345
d524e55Thanks @penalosa! - Enable experimental support for autoconfig-powered Astro projects -
#11228
43903a3Thanks @petebacondarwin! - SupportCLOUDFLARE_ENVenvironment variable for selecting the active environmentThis change enables users to select the environment for commands such as
CLOUDFLARE_ENV=prod wrangler versions upload. The--envcommand line argument takes precedence.The
CLOUDFLARE_ENVenvironment variable is mostly used with the@cloudflare/vite-pluginto select the environment for building the Worker to be deployed. This build also generates a "redirected deploy config" that is flattened to only contain the active environment.
To avoid accidentally deploying a version that is built for one environment to a different environment, there is an additional check to ensure that if the user specifies an environment in Wrangler it matches the original selected environment from the build.
Patch Changes
-
Updated dependencies [
4d61fae,69f4dc3,1133c4d,4d61fae]:- @cloudflare/kv-asset-handler@0.4.1
- miniflare@4.20251125.0
v4.50.0
Minor Changes
-
#11219
524a6e5Thanks @Ltadrian! - Implement Hyperdrive binding TLS miniflare proxy. This will allow for wrangler dev hyperdrive bindings to connect to external
databases that require TLS. -
#11233
c922a81Thanks @emily-shen! - Addcontainers.unsafeto allow internal users to use additional container features
Patch Changes
-
#11353
0cf696dThanks @vicb! - Use the nativenode:domainmodule when availableIt is enabled when the
enable_nodejs_domain_modulecompatibility flag is set. -
#11328
bb44120Thanks @ascorbic! - Fixes a bug that causedwrangler deployto hang when deploying SvelteKit sites with experimental autoconfig -
#11025
4a158e9Thanks @devin-ai-integration! - Use the nativenode:wasimodule when availableIt is enabled when the
enable_nodejs_wasi_modulecompatibility flag is set. -
Updated dependencies [
0cf696d,524a6e5,4a158e9]:- @cloudflare/unenv-preset@2.7.11
- miniflare@4.20251118.1
[v4.49.1](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGE
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
Adds a kernel option to the default sharp image service to allow selecting something other than the default lanczos3. Resize kernel selection can be quite noticeable depending on various characteristics of the source image - you can see some examples in https://johncostella.com/magic/
export default defineConfig({
image: {
service: {
entrypoint: 'astro/assets/services/sharp',
config: {
kernel: "mks2021"
}
}
})Testing
Tested manually using pnpm link to a separate repository and adding a dumb little console.log(), modifying the kernel property inside of config.
kernel: undefined
11:36:43 [200] /_image 44ms
kernel: undefined
11:36:43 [200] /_image 33ms
[...]
kernel: mks2021
11:34:33 [200] /_image 83ms
kernel: mks2021
kernel: mks2021
11:34:33 [200] /_image 96ms
11:34:33 [200] /_image 68ms
Docs
The sharp image service isn't really documented in the docs, so uh...
/cc @withastro/maintainers-docs for feedback!
Summary
Fixes a crash when using @astrojs/sitemap with output: 'server' mode that results in:
Cannot read properties of undefined (reading 'reduce')
Problem
When using output: 'server' in Astro config, the astro:routes:resolved hook may not fire before astro:build:done, leaving the _routes variable undefined. When the sitemap integration tries to call _routes.reduce(), it crashes.
Solution
Added a nullish coalescing operator to default _routes to an empty array:
// Before
const routeUrls = _routes.reduce<string[]>((urls, r) => {
// After
const routeUrls = (_routes ?? []).reduce<string[]>((urls, r) => {This prevents the crash while maintaining existing behavior - if routes aren't available, the sitemap will simply not include route-based URLs (falling back to pages and customPages).
Testing
Tested with an Astro project using:
output: 'server'@astrojs/nodeadapter- Build previously crashed, now completes successfully
Related Issues
- #3682 - Sitemap Generation Does Not Work with SSR
- #12437 - Sitemap not included in static output with SSR
Changeset
Included a patch changeset for @astrojs/sitemap.
fixes: #15087
Changes
In the previous implementation, the loadLocalImage function resolved image paths based on the outDir path set at build time. This caused an issue where the function would fail to work correctly if the dist (outDir) folder was moved.
This fix avoids this problem by identifying the current dist folder at runtime when resolving image paths.
- The newly added
resolveOutDirfunction is based onresolveClientDirfound in the Node adapter's serve-static.ts file. - The
assetsDirvariable previously exported from vite-plugin-assets.ts was not imported by any files, so it has been removed. Instead,serverDiris now exported. - I have implemented a test to verify that the functionality works correctly even after copying the dist folder to a different location.
Testing
To verify that moving the dist folder does not cause any issues, the test copies the dist folder generated at build time to a different directory.
It then starts a new preview server pointing to that copied directory, confirming that images are correctly loaded without performing a rebuild.
In the tests conducted after moving the dist folder, I only included tests for local images.
This is because, in my environment, all tests except for local images were already passing with the original implementation, so I deemed additional tests unnecessary.
However, I can add the remaining tests if required.
Docs
There is no impact on users who do not move their dist folder, as it will continue to function as before.
Changes
Initially reported on Discord, this PR fixes an issue in development mode, when using content collections, where CSS from a previously visited page would incorrectly apply to other pages not using the components with that CSS.
- Repro
- Definitely a bit tricky to reproduce as a file importing
astro:contentneeds to be imported in different pages to trigger the issue. - In the
vite-plugin-css, I think we need to stop traversing when collecting CSS when a propagation stopping point is reached, like we do in thevite-plugin-astro-serverwhen recursively crawling the module graph to get all style files.
Testing
I updated a fixture to reproduce the issue and added a test to verify the fix by visting two different pages. Before the changes, the second page would incorrectly include CSS from a componment used only in the first page. After the changes, the second page correctly does not include that CSS.
Docs
This is a bug fix; no doc updates are needed.
Changes
Initially reported on Discord, this PR fixes an issue where visiting an unknown route matching the pattern of a pre-rendered dynamic route (e.g., /dogs/unknown when /dogs/[dog] is pre-rendered) would cause the Node.js adapter to fail to serve the expected 404 page.
- Repro
- Previously, pre-rendered routes were not part of the manifest due to this condition. When matching all routes (including pre-rendered ones to include redirects), the Node.js adapter would now attempt to ssr pre-rendered pages matching the request.
Testing
I added a pre-rendered dynamic route in an existing fixture and added tests to verify that visiting both the pre-rendered route and an unknown route matching its pattern behaves as expected.
Docs
This is a bug fix; no doc updates are needed.
Changes
This replaces some bytes parsing with metadata obtained from sharp.
Testing
Existing unit tests passing.
Docs
No doc update needed, since this has no impact.
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.16.9
Patch Changes
-
#15174
37ab65aThanks @florian-lefebvre! - Adds Google Icons to built-in font providersTo start using it, access it on
fontProviders:import { defineConfig, fontProviders } from 'astro/config'; export default defineConfig({ experimental: { fonts: [ { name: 'Material Symbols Outlined', provider: fontProviders.googleicons(), cssVariable: '--font-material', }, ], }, });
-
#15150
a77c4f4Thanks @matthewp! - Fixes hydration for framework components inside MDX when usingAstro.slots.render()Previously, when multiple framework components with
client:*directives were passed as named slots to an Astro component in MDX, only the first slot would hydrate correctly. Subsequent slots would render their HTML but fail to include the necessary hydration scripts. -
#15130
9b726c4Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyChanges how font providers are implemented with updates to the
FontProvidertypeThis is an implementation detail that changes how font providers are created. This process allows Astro to take more control rather than relying directly on
unifonttypes. All of Astro's built-in font providers have been updated to reflect this new type, and can be configured as before. However, using third-party unifont providers that rely onunifonttypes will require an update to your project code.Previously, an Astro
FontProviderwas made of a config and a runtime part. It relied directly onunifonttypes, which allowed a simple configuration for third-party unifont providers, but also coupled Astro's implementation to unifont, which was limiting.Astro's font provider implementation is now only made of a config part with dedicated hooks. This allows for the separation of config and runtime, but requires you to create a font provider object in order to use custom font providers (e.g. third-party unifont providers, or private font registeries).
What should I do?
If you were using a 3rd-party
unifontfont provider, you will now need to write an AstroFontProviderusing it under the hood. For example:// astro.config.ts import { defineConfig } from "astro/config"; import { acmeProvider, type AcmeOptions } from '@acme/unifont-provider' +import type { FontProvider } from "astro"; +import type { InitializedProvider } from 'unifont'; +function acme(config?: AcmeOptions): FontProvider { + const provider = acmeProvider(config); + let initializedProvider: InitializedProvider | undefined; + return { + name: provider._name, + config, + async init(context) { + initializedProvider = await provider(context); + }, + async resolveFont({ familyName, ...rest }) { + return await initializedProvider?.resolveFont(familyName, rest); + }, + async listFonts() { + return await initializedProvider?.listFonts?.(); + }, + }; +} export default defineConfig({ experimental: { fonts: [{ - provider: acmeProvider({ /* ... */ }), + provider: acme({ /* ... */ }), name: "Material Symbols Outlined", cssVariable: "--font-material" }] } }); -
#15147
9cd5b87Thanks @matthewp! - Fixes scripts in components not rendering when a sibling<Fragment slot="...">exists but is unused
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-vscode@2.16.8
Patch Changes
- #15156
9cc2c71Thanks @Princesseuh! - Fixes TypeScript plugin not working
Changes
#15083 did not actually fix the ts-plugin, because the path property doesn't actually exists. When you try it locally, it ends up working by accident because the node_modules structure is different than in CI, which probably caused confusion as to if the fix was proper or not.
Testing
Works in local both packaged and unpackaged, but the CI setup is different and so well
Docs
N/A
Changes
This adds support for providing a background color in image transforms. Right now Astro has no support for that, so the background of anything converted to e.g. jpeg is always Sharp's default black.
Testing
I'd need some help figuring how to implement a test for this. Is there a way to render a JPEG to a <canvas> in a headless browser inside Astro tests?
Docs
Some documentation updates are definitely needed for this, to document the new field.
/cc @withastro/maintainers-docs for feedback!
fixes: #15076
Changes
In the previous implementation, if you added a cookie using context.cookies.set() and then updated the Set-Cookie header with Headers.append(), the cookie added via the context would be overwritten.
This fix changes the behavior to avoid overwriting by first reading both before setting them.
Testing
I added a test to verify that cookies set using both methods are included in the response.
Docs
Could this affect a user’s behavior?
In previous implementations, cookies added via context.cookies.set() were overwritten and deleted, so this change prevents that from happening.
We probably need to update docs!
If any documentation update is needed, it would likely be to explicitly state that “cookies added via context.cookies.set() come before cookies added via Headers.”
If docs will be needed or you’re not sure, uncomment the next line
/cc @withastro/maintainers-docs
Changes
- Fixes #14518
- Framework components with
client:*directives inside named slots now correctly hydrate when usingAstro.slots.render()in MDX - Previously, only the first slot would hydrate; subsequent slots rendered HTML but lost hydration scripts
Testing
Added test case in packages/integrations/mdx/test/mdx-plus-react.test.js that verifies both /foo and /bar pages have hydration scripts when using named slots with Astro.slots.render().
Docs
No docs changes needed - this is a bug fix for existing behavior.
Summary
Skips the "Use the Image component" audit warning for images inside framework components (React, Vue, Svelte, etc.).
Images inside <astro-island> elements now skip the warning, since these components can't directly use Astro's <Image> component.
Changes
- Added check in
perf.tsto skip the audit if the image is inside an<astro-island>element
Note
This only covers hydrated components (with client:* directives). Server-only framework components don't get the astro-island wrapper, so they'd still see the warning - but as the docs mention, those can receive optimized URLs from Astro.
Fixes #15048
Changes
Improved error handling in the rendering phase by adding defensive validation in App.render() and #renderError() to provide a descriptive error message when a route module doesn't have a valid page function.
Testing
Existing tests pass.
Docs
N/A
Contribution by Gittensor, see my contribution statistics at https://gittensor.io/miners/details?githubId=94194147
Changes
- Previously script rendered would fail on unused fragments because the logic to check to render a script ran anyways.
- Moved everything into a RenderInstruction which handles deduplication better.
- Fixes #13847
Testing
- New test added
Docs
N/A, bug fix
Fixes hydration mismatch when using experimentalReactChildren option.
Problem
When experimentalReactChildren=true, children passed to React components had inconsistent prop handling between server and client:
- Server correctly mapped
classtoclassNameand generated uniquekeyprops - Client read DOM attributes directly without applying the same transformations
This caused React warnings and hydration errors:
- "Invalid DOM property 'class'. Did you mean 'className'?"
- "Each child in a list should have a unique 'key' prop."
Solution
Updated the client-side createReactElementFromDOMElement function in client.ts to:
- Map DOM attribute names to React prop names (class to className, for to htmlFor)
- Generate unique key props for each child element
Testing
Added unit tests for class-to-className mapping and key generation. All existing tests pass.
Closes #15102
Changes
This adds benchmarks for build times for a static, hybrid and server websites. The examples are a bit small, but should be representative of an average Astro website regarding what they have, between 5 to 100 pages, an endpoint or a few ones, for the hybrid setup a mix of static and non-static pages etc.
Testing
N/A
Docs
N/A
Changes
As per title
Testing
Docs
Changes
Tests fail due to race conditions.
The way we count page loads might take to long to deliver the results before they are tested.
We can't await "until no further console output arrives".
It would be possible to just wait 500ms or so for the data.
Instead of adding random waits, I'll first try whether awaiting the URL might bring some release.
The problem mainly exists with Firefox on Windows.
Edit:
Tried a few options. Sadly, ended up with some random waits, too.
Testing
Docs
n.a.
Closes #15136
Changes
Initially reported on Discord, this PR fixes an issue where adding or removing <style> tags in Astro components would result in no visual update of styles during development, unless the dev server was restarted.
- Repro
- After invalidating modules in the
astro:hmr-reloadVite plugin, if one of the invalidated modules is the virtual module of a page, the associated virtual module for a dev CSS import is not invalidated. - This PR checks the list of invalidated modules for any page virtual modules, and invalidates the associated dev CSS virtual modules as well.
- This is not done in the
vite-plugin-csshotUpdateplugin hook as initially suggested by Matthew as it would require recursively checking all modules importers for page virtual modules, whereas a similar recursion is already done when callinginvalidateModule()which gives us back the list all affected modules that we can iterate over.
Open to suggestions as I may not have the full context over the new vite-plugin-css implementation and may have gone about this the wrong way.
Testing
I added new E2E tests to simulate adding and removing style tags in an Astro component and verifying that the styles are updated.
Docs
This is a bug fix; no doc updates are needed.
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.16.8
Patch Changes
-
#15124
81db3c0Thanks @leonace924! - Fixes an issue where requests with query parameters to thebasepath would return a 404 if trailingSlash was not'ignore'in development -
#15152
39ee41fThanks @rururux! - Fixes a case wherecontext.cookies.set()would be overriden when setting cookies via response headers in development -
#15140
6f6f8f8Thanks @cameronraysmith! - Fixes esbuild warning due to dead code in assets virtual module -
#15127
2cff904Thanks @Princesseuh! - Updates "Unsupported page types found" error to only appear in more realistic cases -
#15149
34f84c2Thanks @rahuld109! - Skips "Use the Image component" audit warning for images inside framework components (React, Vue, Svelte, etc.)
astro-vscode@2.16.7
Patch Changes
- #15131
d40ff7dThanks @Princesseuh! - Fixes extension asking for the wrong version of VS Code
Changes
VS Code updates needs to be done manually because we support a few versions, this PR prevents renovate from updating it
Testing
N/A
Docs
N/A
Changes
- Supersedes #14980
- Fonts in Astro rely on unifont. However we've seen recently with zod that having public API rely on 3rd party libs directly is quite dangerous.
- To avoid this, I've been doing a similar thing with sessions driver on v6 by introducing an Astro specific API
- This PR introduces a new
FontProvidertype not relying directly on unifont types. We still use unifont under the hood and it is still possible to use a unifont provider with a bit of config (documented in the docs PR) - As part of this API change, a font provider object is passed in the astro config with methods directly (VS loading the entrypoint with Vite). That is because it didn't really make sense after all and caused a bunch of issues (closes #14933)
- There is no breaking change for end users, only for font provider authors (who are pretty rare AFAIK)
Testing
Updates existing unit tests and add more as needed
Docs
- Changeset
- RFC
- withastro/docs#13025
Changes
- Invalidate changed SSR modules and their importers on HMR, including runner cache
- Prevent false full reloads while still re-executing SSR on the next request
- Add e2e coverage for SSR-only dependency invalidation
Fixes #15021
Testing
pnpm exec playwright test e2e/hmr.test.js --config ./playwright.config.js --project="Chrome Stable"
Before
Server-side logs did not update when an imported dependency changed.
After
Server-side logs update immediately when the dependency changes.
Demo: https://youtu.be/-wjCxZHey7M
Docs
- Not needed (no user-facing changes).
Issue
Changes
Realistically there's no point in showing this warning all the time, no one is confusing a .png to be a page. As such, I think it's better to only show the warning whenever it'd be possible for users to be confused
Fixes #14321
Testing
N/A
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 next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
astro@6.0.0-beta.0
Patch Changes
-
#15125
6feb0d7Thanks @florian-lefebvre! - Improves JSDoc annotations forAstroGlobal,AstroSharedContextandAPIContexttypes -
#15176
9265546Thanks @matthewp! - Fixes hydration for framework components inside MDX when usingAstro.slots.render()Previously, when multiple framework components with
client:*directives were passed as named slots to an Astro component in MDX, only the first slot would hydrate correctly. Subsequent slots would render their HTML but fail to include the necessary hydration scripts. -
#15125
6feb0d7Thanks @florian-lefebvre! - Fixes remote imagesEtagheader handling by disabling internal cache -
#15121
06261e0Thanks @ematipico! - Fixes a bug where the Astro, with the Cloudlfare integration, couldn't correctly serve certain routes in the development server. -
#15125
6feb0d7Thanks @florian-lefebvre! - Fixes images not working in development when using setups with port forwarding -
#15137
2f70bf1Thanks @matthewp! - Addslegacy.collectionsBackwardsCompatflag that restores v5 backwards compatibility behavior for legacy content collections - (v6 upgrade guidance)When enabled, this flag allows:
- Collections defined without loaders (automatically get glob loader)
- Collections with
type: 'content'ortype: 'data' - Config files located at
src/content/config.ts(legacy location) - Legacy entry API:
entry.slugandentry.render()methods - Path-based entry IDs instead of slug-based IDs
// astro.config.mjs export default defineConfig({ legacy: { collectionsBackwardsCompat: true, }, });
This is a temporary migration helper for v6 upgrades. Migrate collections to the Content Layer API, then disable this flag.
-
#15125
6feb0d7Thanks @florian-lefebvre! - Reduces Astro’s install size by around 8 MB -
#15125
6feb0d7Thanks @florian-lefebvre! - Enables the ClientRouter to preserve the original hash part of the target URL during server side redirects. -
#15125
6feb0d7Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyChanges the font format downloaded by default when using the experimental Fonts API. Additionally, adds a new
formatsconfiguration option to specify which font formats to download.Previously, Astro was opinionated about which font sources would be kept for usage, mainly keeping
woff2andwofffiles.You can now specify what font formats should be downloaded (if available). Only
woff2files are downloaded by default.What should I do?
If you were previously relying on Astro downloading the
woffformat, you will now need to specify this explicitly with the newformatsconfiguration option. Additionally, you may also specify any additional file formats to download if available:// astro.config.mjs import { defineConfig, fontProviders } from 'astro/config' export default defineConfig({ experimental: { fonts: [{ name: 'Roboto', cssVariable: '--font-roboto', provider: fontProviders.google(), + formats: ['woff2', 'woff', 'otf'] }] } }) -
#15179
8c8aee6Thanks @HiDeoo! - Fixes an issue when importing using an import alias a file with a name matching a directory name. -
#15176
9265546Thanks @matthewp! - Fixes scripts in components not rendering when a sibling<Fragment slot="...">exists but is unused
@astrojs/cloudflare@13.0.0-beta.0
Patch Changes
-
#15080
f67b738Thanks @gameroman! - Updateswranglerdependency to be apeerDependencyover adependency -
#15121
06261e0Thanks @ematipico! - Fixes a bug where the Astro, with the Cloudlfare integration, couldn't correctly serve certain routes in the development server. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/node@10.0.0-beta.0
Patch Changes
- #15164
54dc11dThanks @HiDeoo! - Fixes an issue where the Node.js adapter could fail to serve a 404 page matching a pre-rendered dynamic route pattern.
@astrojs/svelte@8.0.0-beta.0
Patch Changes
- #15125
6feb0d7Thanks @florian-lefebvre! - Improve Sveltechildrenprop type checking
@astrojs/vercel@10.0.0-beta.0
Patch Changes
- #15125
6feb0d7Thanks @florian-lefebvre! - Updates Node versions data to account for v24 as the default
@astrojs/vue@6.0.0-beta.0
Patch Changes
- #15125
6feb0d7Thanks @florian-lefebvre! - Adds support for arbitrary HTML attributes on Vue components
astro-vscode@2.16.9-beta.0
Patch Changes
-
#15125
6feb0d7Thanks @florian-lefebvre! - Fix "Find All References" and other TypeScript features by ensuring the plugin bundle is correctly included -
#15125
6feb0d7Thanks @florian-lefebvre! - Fixes syntax highlighting sometimes not working when the frontmatter or script tags ended with certain TypeScript constructs
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
Fixes #15095
Changes
- What does this change?
Updated baseMiddleware to ensure that after stripping the base path, the resulting URL always starts with / when it's not empty. This preserves query parameters and ensures proper URL parsing downstream.
After:
let newUrl = url.replace(devRoot, devRootReplacement);
// Ensure the URL is a valid path (e.g., /base?foo=bar -> /?foo=bar, not ?foo=bar)
if (newUrl !== '' && !newUrl.startsWith('/')) {
newUrl = '/' + newUrl;
}
req.url = newUrl;packages/astro/src/vite-plugin-astro-server/base.ts: Added logic to prepend/when the stripped URL doesn't start with/and isn't emptypackages/astro/src/vite-plugin-astro-server/request.ts: Already had normalization logic that handles the empty string pathname case (no changes needed)packages/astro/test/units/routing/trailing-slash.test.js: Test already exists for this scenario (issue #15095)
Testing
The fix ensures that:
/base?query=test→ strips to/?query=test→ normalizes to empty string pathname for route matching ✅/base→ strips to empty string → normalizes correctly ✅/base/→ strips to/→ normalizes correctly ✅
- tested with minimal example
Docs
Contribution by Gittensor, see my contribution statistics at https://gittensor.io/miners/details?githubId=42954461
When we render to an async iterable, we basically start rendering the
given template into chunks and return an iterator which reads from that
same queue of chunks in parallel.
The rendering causes the following process:
- Convert the rendered chunk into a byte array if it isn't one already
- Add the byte array to the queue
- Resolve if nothing left in the queue
The iterator then reads from this same queue and does the following:
- Take the entire contents of the queue right now
- Concat them into one array
- Yield the concatenated array
The bottleneck in this process is Convert the rendered chunk into a byte array.
Basically, if a chunk isn't already a Uint8Array, we pass the string
representation through a TextEncoder to turn it into one.
This means for 10,000 string chunks, we call encode 10,000 times.
It turns out TextEncode#encode is costly.
This PR reworks this process to the following:
Rendering:
- Convert the rendered chunk into a string or byte array if it isn't one
already - Add the string or byte array to the queue
- Resolve if nothing left in the queue
Iterator:
- Take the entire contents of the queue right now
- Merge consecutive strings into one string, and convert that into a
byte array - Concat them into one array (now the set of arrays consists only of
byte arrays again) - Yield the concatenated array
This means we call TextEncode#encode on larger strings, and fewer
times - which it turns out is a lot more performant.
Benchmarks
Given this astro file:
<h1>Foo</h1>
<div style="display:none">
{
new Array(50_000).fill(0).map((_, i) => (
<div>
Go to <a href={`/${i}`}>{i}</a>
</div>
))
}
</div>I can use wrk to benchmark server response times directly:
# Before
wrk http://localhost:4321/astro
Running 10s test @ http://localhost:4321/astro
2 threads and 10 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.04s 303.51ms 1.91s 71.60%
Req/Sec 5.56 4.30 20.00 64.94%
85 requests in 10.10s, 180.61MB read
Socket errors: connect 0, read 0, write 0, timeout 4
Requests/sec: 8.42
Transfer/sec: 17.88MB
# Ater
wrk http://localhost:4321/astro
Running 10s test @ http://localhost:4321/astro
2 threads and 10 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 553.97ms 154.48ms 1.57s 82.78%
Req/Sec 9.68 5.28 29.00 58.57%
178 requests in 10.09s, 378.34MB read
Requests/sec: 17.64
Transfer/sec: 37.49MBThis seems to show 17 requests/sec vs 8 requests/sec.
Meanwhile, if I do a CPU profile and check out the top functions:
Before:
| Flat | Flat % | Sum % | Cumulative | Cumulative % | Function |
|---|---|---|---|---|---|
| 49.41ms | 17.81% | 17.81% | 49.41ms | 17.81% | Garbage |
| 41.81ms | 15.07% | 32.88% | 53.21ms | 19.18% | encode |
| 11.40ms | 4.11% | 36.99% | 68.42ms | 24.66% | write |
| 11.40ms | 4.11% | 41.10% | 11.40ms | 4.11% | encodeUtf8String |
| 11.40ms | 4.11% | 45.21% | 11.40ms | 4.11% | (anonymous:L#722) |
| 10.14ms | 3.65% | 48.86% | 87.42ms | 31.51% | iterate |
After:
| Flat | Flat % | Sum % | Cumulative | Cumulative % | Function |
|---|---|---|---|---|---|
| 32.86ms | 15.29% | 15.29% | 32.86ms | 15.29% | Garbage |
| 11.38ms | 5.29% | 20.59% | 11.38ms | 5.29% | (anonymous:L#722) |
| 8.85ms | 4.12% | 24.71% | 16.43ms | 7.65% | write |
| 8.85ms | 4.12% | 28.82% | 22.75ms | 10.59% | next |
| 7.58ms | 3.53% | 32.35% | 7.58ms | 3.53% | stringifyChunk |
| 7.58ms | 3.53% | 35.88% | 21.49ms | 10.00% | flush |
Testing
Existing tests should cover this.
Docs
No changes to functionality.
Changes
- Found in #15120
- Many types were duplicated, this cleans them up
Testing
Manually in examples, should pass
Docs
Changeset + jsdoc
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.37.2
Patch Changes
- #3647
9f4efc3Thanks @gerstenbergit! - Adds Greek language support
Changes
This PR fixes an issue where the route matching logic we in the Astro development server (AstroServerApp) didn't align with the route matching we use in non-runnable environments (DevApp).
I created a devMatch that returns the RouteData found, and the resolved pathname.
I also removed the internal caching of the pipeline because it was returning old modules, creating false positives in some other tests, such as the content layer. Removing the caching fixed the issue.
Testing
I copied to the routing-priority.test.js test cases inside the cloudflare testing suite.
Ideally we could have our own "non-runnable testing environment", but it could take a while.
Docs
N/A
Changes
- Stacked on top of #15117
- Cleans types to be more consistent with other Astro APIs
Testing
Should pass
Docs
- Changeset
- withastro/docs#13020
Changes
- Stacked on top of #15111
- Closes #14819
- Removes the
dedupeFontFaces()function and its associated tests since the logic now lives inunifontitself - Upgrades
unifontto latest. This version comes with new stuff and this PR updates Astro accordingly to allow passingformatsmanually
Testing
Updated, should pass
Docs
- Changeset
- withastro/docs#13017
- RFC: withastro/roadmap@
8de85f7(#1039)
Changes
Support Node 24 for Vercel builds. Closes #15115
Testing
No tests added (just a config change)
Docs
No docs changed (docs are correct, just the code isn't)
Changes
Moving e2e tests to Firefox 144 showed a race condition on the order in which animations are canceled when a view transition get aborted. The fix makes the animation names indistinguishable in the test output, ensuring that the order does not matter.
A second test tested fallback behavior for browsers that do not support view transitions.
Skipped that one as we do not have such browsers in our playwright setup anymore
(and also won't suggest to add one)
Testing
right.
Docs
n.a.
Description
Closes #3615
This PR adds text-size-adjust rules on the html element in reset.css to prevent platform-specific, inconsistent font scaling on iOS WebKit when the device orientation changes.
Problem
On iOS Safari (WebKit), rotating to landscape can trigger text autosizing that causes unwanted font-size adjustments across various UI elements, and the sizes may not revert when rotating back.
Solution
Apply -webkit-text-size-adjust: 100% and text-size-adjust: 100% on the html element to keep sizes consistent across orientation changes without affecting user zoom or accessibility settings.
This approach is widely used in mainstream CSS resets, including: normalize.css, tailwindcss/preflight, and modern-normalize.
This feature was originally introduced by Apple and is non-standard in origin1. Although
text-size-adjustis now standardized, regarding Safari, only the mobile version2 supports the prefixed-webkit-text-size-adjust, while Chromium supports the unprefixed version34.
Testing
Tested on iOS Safari (iOS 26.1, iPhone 15 Pro). Further testing can be done via the deploy preview provided by this PR.
Before and After Video
| Before | After |
|---|---|
before.mp4 |
after.mp4 |
Background reading:
Footnotes
Adds complete Greek (el) translations for Starlight’s UI.
Based on en.json, all keys included.
Changes
Initially reported on Discord, this PR fixes a Windows-specific build issue when importing an Astro component with a <script> tag using an import alias.
- Repro (the repro includes MDX, but turns out the issue is not MDX-related)
- The custom resolver used in the vite plugin to alias paths needs to return normalized paths.
Testing
- Added a new component
Qux.astrowith a<script>tag to the existingalias-tsconfigfixture, imported it using an alias.- The associated test fails to build the fixture on Windows before the fix.
- The build succeeds after the fix.
- Also tested the fix with a local patch on the Starlight repo where the issue was originally reported.
- The build succeeds on Windows after applying the fix.
Docs
This is a bug fix; no doc updates are needed.
Changes
- Internal refactoring, extracted from my research in #14980. In preparation for some future changes, I decided to make this PR to make diffs smaller later on
- It introduces a new
FontResolverdefinition, which allows abstracting unifont away. It allowed moving some logic around and make tests not rely on unifont directly
Testing
Tests are added for the new UnifontFontResolver class. All tests should pass
Docs
N/A. This is an internal refactor
Updates the changeset to minor as well as explain a little more the reasoning.
Changes
I always thought this was impossible to fix, but a solution was figured out over the holidays over at Svelte and Vue: sveltejs/language-tools#2905 so this PR applies the same strategy for Astro.
Fix #14685
Testing
Added a test and tested manually
Docs
N/A
Changes
Update prettier extension to new one
Testing
Not needed
Docs
Not needed
Changes
- Found in #15104
- Updates the imports paths to use a file extension, otherwise it may fail with
astro check. Doing it here and not on the renovate PR directly will allow renovate to push updates to said PR
Testing
Should pass
Docs
N/A
updates vendored image-size to 2.0.2 and refactors the patch slightly (same core idea, the only changes we make are to add avis and handle out of order brands/ brands that are in the compat box)
Note: This PR body was truncated due to platform limits.
This PR contains the following updates:
Release Notes
Microsoft/vsce (@vscode/vsce)
v2.32.0
Changes:
- #1034: Revert "Update deprecated dependencies"
- #1032: fix: probabilistic trigger v8 crash
- #1028: Remove need-more-info-closer workflow
This list of changes was auto generated.
v2.31.1
Changes:
- #1027: Update deprecated dependencies
- #1025: Don't package default readme if a path is provided and default is ignored
- #1024: add executes code property
This list of changes was auto generated.
v2.31.0
Changes:
- #1022: Throw error if provided readmePath or provided changelogPath could not be found
- #1020: Throw when unused files pattern in package.json
- #1015: Support "ls --tree"
This list of changes was auto generated.
microsoft/vscode (vscode)
v1.999.0
v1.107.1: November 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.107.0: November 2025
Welcome to the November 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
VS Code now includes Agent HQ, background agents and custom agents for your org.
- Agent HQ: You can use GitHub Copilot alongside your other coding agents to complete multiple tasks. Leverage background, cloud, or local agents and their relative strengths for the right job, all at the same time.
- Background agents work in their own isolated workspaces, managed for you by VS Code.
- Custom agents for organizations: Your team can now share custom agents at the org level.
v1.106.3: October 2025 Recovery 3
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.106.2: October 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.106.1: October 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.106.0: October 2025
Welcome to the October 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
| AI | Productivity and UX | Enterprise |
|---|---|---|
| Plan complex coding tasks with the plan agent and monitor agent sessions across background agents Show more |
Select text from deleted code in the diff editor Show more |
Manage MCP server access with custom MCP registry Show more |
| Inline suggestions are now open source Show more |
Experience the more modern, refreshed product icons Show more |
Manage Linux devices with JSON policies Show more |
v1.105.1: September 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.105.0: September 2025
Welcome to the September 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
| OS integration | Developer productivity | Agent tools |
|---|---|---|
| Get notified about task completion and chat responses Show more |
Resolve merge conflicts with AI assistance Show more |
Install MCP servers from the MCP marketplace Show more |
| Native authentication experience on macOS Show more |
Pick up where you left off with the recent chats Show more |
Use fully-qualified tool names to avoid conflicts Show more |
v1.104.3: August 2025 Recovery 3
The update addresses these issues.
v1.104.2: August 2025 Recovery 2
The update addresses these issues.
v1.104.1: August 2025 Recovery 1
The update addresses these issues.
v1.104.0: August 2025
Welcome to the August 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
| Model flexibility | Security | Productivity |
|---|---|---|
| Let VS Code select the best model Show more |
Confirm edits for sensitive files Show more |
Remove distractions from chat file edits Show more |
| Contribute models through VS Code extensions Show more |
Let agents run terminal commands safely Show more |
Use AGENTS.md to add chat context Show more |
v1.103.2: July 2025 Recovery 2
The update addresses these issues.
v1.103.1: July 2025 Recovery 1
The update adds GPT-5 prompt improvements, support for GPT-5 mini, and addresses these issues.
v1.103.0: July 2025
Welcome to the July 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
| MCP | Chat | Productivity |
|---|---|---|
| Revamped tool picker experience Show more |
Use GPT-5 in VS Code Show more |
Check out multiple branches simultaneously with Git worktrees Show more |
| Enable more than 128 tools per agent request Show more |
Restore to a previous good state with chat checkpoints Show more |
Manage coding agent sessions in a dedicated view Show more |
v1.102.3: June 2025 Recovery 3
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.102.2: June 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.102.1: June 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.102.0: June 2025
Welcome to the June 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
Chat
- Explore and contribute to the open sourced GitHub Copilot Chat extension (Read our blog post).
- Generate custom instructions that reflect your project's conventions (Show more).
- Use custom modes to tailor chat for tasks like planning or research (Show more).
- Automatically approve selected terminal commands (Show more).
- Edit and resubmit previous chat requests (Show more).
MCP
- MCP support is now generally available in VS Code (Show more).
- Easily install and manage MCP servers with the MCP view and gallery (Show more).
- MCP servers as first-class resources in profiles and Settings Sync (Show more).
Editor experience
- Delegate tasks to Copilot coding agent and let it handle them in the background (Show more).
- Scroll the editor on middle click (Show more).
If you'd like to read these release notes online, go to Updates on code.visualstudio.com. Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.
v1.101.2: May 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.101.1: May 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.101.0: May 2025
Welcome to the May 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
MCP
- Expand your agent coding flow with support for prompts, resources, and sampling (Show more).
- Access MCP servers that require authentication (Show more).
- Debug MCP servers with development mode (Show more).
- Publish MCP servers from an extension (Show more).
Chat
- Group and manage related tools by combining them in a tool set (Show more).
Source Control
- View files in Source Control Graph view (Show more).
- Assign and track work for GitHub Copilot Coding Agent from within VS Code (Show more).
If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.
v1.100.3: April 2025 Recovery 3
The update addresses these issues, including a fix for a security vulnerability.
For the complete release notes go to Updates on code.visualstudio.com.
v1.100.2: April 2025 Recovery 2
The update addresses these issues, including a fix for a security vulnerability.
For the complete release notes go to Updates on code.visualstudio.com.
v1.100.1: April 2025 Recovery 1
The update addresses these issues, including a fix for a security vulnerability.
For the complete release notes go to Updates on code.visualstudio.com.
v1.100.0: April 2025
Welcome to the April 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
-
Chat
-
Chat performance
-
Editor experience
For the complete release notes go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.
v1.99.3: March 2025 Recovery 3
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.99.2: March 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.99.1: March 2025 Recovery 1
The update has a fix for the security vulnerability in this issue.
For the complete release notes go to Updates on code.visualstudio.com.
v1.99.0: March 2025
Welcome to the March 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
-
Agent mode
-
Code editing
-
Chat
-
Notebook editing
- Create and edit notebooks as easily as code files with support for edit and agent mode (more...).
For the complete release notes go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.
v1.98.2: February 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.98.1: February 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.98.0: February 2025
Welcome to the February 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
- Next Edit Suggestions (preview) - Copilot predicts the next edit you are likely to make.
- Agent mode (preview) - Copilot autonomously completes tasks.
- Copilot Edits for notebooks - Iterate quickly on edits for your notebooks.
- Code search - Let Copilot find relevant files for your chat prompt.
- Terminal IntelliSense (preview) - Rich completion support for your terminal.
- Drag & drop references - Quickly open peek references in a new editor.
- Linux custom title bar - Custom title bar support for Linux enabled by default.
- [Unresolved diagnostics (preview)](https://code.
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
withastro/astro (@astrojs/check)
v0.9.6
Patch Changes
-
#14740
abfed97Thanks @ArmandPhilippot! - Fixes link targets in documentation following repository relocation. -
Updated dependencies [
abfed97]:- @astrojs/language-server@2.16.1
jshttp/cookie (cookie)
v1.1.1
Fixed
- Overwrite value in passed in options (#253)
c66147c- When
valuewas provided inserialize(key, value, { value })the value inoptionswas used instead of the value passed as an argument
- When
v1.1.0
lit/lit (lit)
v3.3.2
Patch Changes
-
#5044
0d0170e87b06edd8295a31893c820162d0f16a23Thanks @ava-cassiopeia! - Make ClassInfo mutable -
#4999
6c174c8d0ed0230ba765d699591d933d7ab5d4bb- Fix a bug in change detection with decorated standard private accessors.
csstools/postcss-plugins (postcss-preset-env)
v10.6.0
December 27, 2025
- Added
@csstools/postcss-property-rule-prelude-listCheck the plugin README for usage details. - Added
@csstools/postcss-syntax-descriptor-syntax-productionCheck the plugin README for usage details. - Updated
cssdbto8.6.0
v10.5.0
December 4, 2025
- Added
@csstools/postcss-position-area-propertyCheck the plugin README for usage details. - Updated
cssdbto8.5.2(patch)
facebook/react (react)
v19.2.3: 19.2.3 (December 11th, 2025)
React Server Components
- Add extra loop protection to React Server Functions (@sebmarkbage #35351)
v19.2.2: 19.2.2 (December 11th, 2025)
React Server Components
- Move
react-server-dom-webpack/*.unbundledto privatereact-server-dom-unbundled(@eps1lon #35290) - Patch Promise cycles and toString on Server Functions (@sebmarkbage, @unstubbable #35289)
v19.2.1: 19.2.1 (December 3rd, 2025)
React Server Components
- Bring React Server Component fixes to Server Actions (@sebmarkbage #35277)
unjs/unifont (unifont)
v0.7.1
🚀 Enhancements
- Strongly type provider name (#286)
- Throw on error (#289)
- bunny: Filter subsets (#298)
- Allow resolving specific font formats (#297)
- Export InitializedProvider and ResolveFontResult (#305)
- Allow passing provider-specific options to resolveFont (#288)
🔥 Performance
- googleicons: Use direct string slicing to drop first line of metadata response (#302)
🩹 Fixes
💅 Refactors
⚠️ Remove resolveFontFace (#284)
📖 Documentation
- Update readme and add custom provider example (#291)
- Give correct examples for experimental.glyphs (#293)
📦 Build
🏡 Chore
- Fetch-depth: 0 in release workflow (551259f)
- Update pnpm to 10.21 and enable trust policy (8a93ab7)
- Revert pnpm trust policy and restore provenance action (7855023)
- Remove unused types (#285)
- Extract unifont (#292)
- Disallow newlines in import/exports (ad66736)
- Remove T prefix from generics (9e96630)
- Remove publish step (c2ba1b7)
- Release v0.7.0 (9ac1125)
- Add changelogithub to deps (efd5d34)
- Release v0.7.1 (8f191aa)
🤖 CI
- Update release workflow to use trusted publishing (2554e6b)
⚠️ Breaking Changes
⚠️ Remove resolveFontFace (#284)
❤️ Contributors
- Daniel Roe (@danielroe)
- Florian Lefebvre (@florian-lefebvre)
- Kentaro Suzuki (@sushichan044)
v0.7.0
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 updates an outdated link in the README.md file of the tailwindcss example.
Adding a changeset that was missing.
Changes
- Add ExtractedChunk interface + extractRelevantChunks helper
- Modify buildEnvironments to extract then release outputs
- Update hook signatures to use ExtractedChunk[]
- Remove dead targets code from mutations
Testing
Docs
Last fetched: | Scheduled refresh: Every Saturday
See Customizing GitHub Activity Pages to configure your own
Inspired by prs.atinux.com
