Skip to content

AstroEco is Contributing…

Display your GitHub pull requests using astro-loader-github-prs

withastro/starlight

This PR significantly improves Starlight performance by implementing lazy loading for two major bundles that previously impacted initial load times and rendering metrics:

  1. 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.

  2. 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.

withastro/astro

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

  • #15281 a1b80c6 Thanks @matthewp! - Ensures server island requests carry an encrypted component export identifier so they do not accidentally resolve to the wrong component.
withastro/astro

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

withastro/astro

This PR contains the following updates:

Package Change Age Confidence
@playwright/test (source) 1.57.01.58.0 age confidence
@preact/signals (source) ^2.5.1^2.6.1 age confidence
htmlparser2 ^10.0.0^10.1.0 age confidence
prettier (source) ^3.8.0^3.8.1 age confidence
publint (source) ^0.3.16^0.3.17 age confidence
sass ^1.97.2^1.97.3 age confidence
svelte (source) ^5.46.1^5.48.0 age confidence
typescript-eslint (source) ^8.53.0^8.53.1 age confidence
unist-util-visit ^5.0.0^5.1.0 age confidence
vue (source) ^3.5.26^3.5.27 age confidence

Release Notes

microsoft/playwright (@​playwright/test)

v1.58.0

Compare Source

preactjs/signals (@​preact/signals)

v2.6.1

Patch Changes

v2.6.0

Minor Changes
Patch Changes
fb55/htmlparser2 (htmlparser2)

v10.1.0

Compare Source

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

prettier/prettier (prettier)

v3.8.1

Compare Source

publint/publint (publint)

v0.3.17

Compare Source

Patch Changes
sass/dart-sass (sass)

v1.97.3

Compare Source

  • 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

Compare Source

Minor Changes
  • feat: export parseCss from svelte/compiler (#​17496)
Patch Changes
  • fix: handle non-string values in svelte:element this attribute (#​17499)

  • fix: faster deduplication of dependencies (#​17503)

v5.47.1

Compare Source

Patch Changes
  • fix: trigger selectedcontent reactivity (#​17486)

v5.47.0

Compare Source

Minor Changes
  • feat: customizable <select> elements (#​17429)
Patch Changes
  • fix: mark subtree of svelte boundary as dynamic (#​17468)

  • fix: don't reset static elements with debug/snippets (#​17477)

typescript-eslint/typescript-eslint (typescript-eslint)

v8.53.1

Compare Source

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

Compare Source

Types

Full Changelog: syntax-tree/unist-util-visit@5.0.0...5.1.0

vuejs/core (vue)

v3.5.27

Compare Source

Bug Fixes

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.

withastro/astro

Changes

This PR changes the sponsors to reflect our current top sponsors in alphabetical order.

Testing

Docs

withastro/astro

Changes

This PR addresses #15271 adding an optional embeddedLangs prop to <Code /> :

  • Previously, <Code /> creates a shiki highlighter with langs: [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 langs param for shiki to correctly highlight
  • Now shiki highlighter is created with langs: [lang, ...embeddedLangs]

Testing

  • Create fixture using TSX in Vue
  • Without langs support, setting lang to "vue" results in the main line of TSX being one long <span />.
  • With langs support, 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

withastro/astro

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:raw attribute is handled within @astrojs/compiler.

  • @astrojs/compiler is used within astroVitePlugin.

  • Subsequent plugins do not use @astrojs/compiler. (Search results for the compile function using transform imported from @astrojs/compiler)

  • The markdownVitePlugin, which uses the rehype-prism plugin, is configured after astroVitePlugin.

  • Consequently, this causes the is:raw attribute added by markdownVitePlugin to remain unchanged until the end.

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

withastro/astro

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 8983f17 Thanks @ematipico! - Fixes an issue where the dev server would serve files like /README.md from the project root when they shouldn't be accessible. A new route guard middleware now blocks direct URL access to files that exist outside of srcDir and publicDir, returning a 404 instead.
withastro/astro

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

withastro/astro

Changes

Testing

Docs

withastro/astro

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 0aafc83 Thanks @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
withastro/astro

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 cb99214 Thanks @ematipico! - Fixes an issue where the function createShikiHighlighter would 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 cb99214 Thanks @ematipico! - Fixes an issue where the function createShikiHighlighter would 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 11efb05 Thanks @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

create-astro@5.0.0-beta.2

Patch Changes

@astrojs/markdoc@1.0.0-beta.5

Patch Changes

  • #15264 11efb05 Thanks @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 11efb05 Thanks @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

@astrojs/react@5.0.0-beta.2

Patch Changes

@astrojs/solid-js@6.0.0-beta.2

Patch Changes

@astrojs/svelte@8.0.0-beta.1

Patch Changes

@astrojs/upgrade@0.7.0-beta.2

Patch Changes

withastro/astro

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 this remains valid

Testing

Manually + unit test

Docs

Changeset

withastro/astro

Changes

Fix for #15282 and code piece was taken from zod4-final branch.

withastro/astro

Changes

  • Encrypts the componentExport prop 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

withastro/astro

Changes

Testing

Docs

withastro/astro

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

withastro/astro

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 c775fce Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Updates 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 c775fce Thanks @florian-lefebvre! - Exposes root on FontProvider init() context

    When building a custom FontProvider for the experimental Fonts API, the init() method receives a context. This context now exposes a root URL, useful for resolving local files:

    import type { FontProvider } from "astro";
    
    export function registryFontProvider(): FontProvider {
      return {
        // ...
    -    init: async ({ storage }) => {
    +    init: async ({ storage, root }) => {
            // ...
        },
      };
    }
  • #15185 edabeaa Thanks @EricGrill! - Add .vercel to .gitignore when adding the Vercel adapter via astro add vercel

withastro/astro

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

withastro/astro

Changes

Testing

Docs

withastro/astro

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

withastro/astro

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 d14dfc2 Thanks @webstackdev! - Adds a --db-app-token CLI flag to astro db commands execute, push, query, and verify

    The 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 the astro db commands.

    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 cb60ee1 Thanks @florian-lefebvre! - Adds a new getFontBuffer() method to retrieve font file buffers when using the experimental Fonts API

    The getFontData() helper function from astro:assets was 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 from astro:assets to retrieve font file buffers from URL returned by getFontData(). 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.

withastro/astro

Changes

Closes #15261

This PR fixes two bugs:

  • serverEntry wasn't working with the new adapter entryType: 'self'. We didn't catch that because we don't test against the new adapter entry point kind.
  • serverEntry stopped 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 adding entryFilesNames in 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

withastro/astro

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 from clonedSrc instead of originalSrc.
    • This avoids generating the file named image_HASH.jpg.
  • Changed the src property of the getImage return value to a getter.
    • This ensures that the optimized image of the same size as the original is only generated when the src property is actually accessed.
  • Behavioral examples:
    • When neither widths nor densities are set: Generates one WebP and one JPG each.
    • When widths is set: Generates WebP images equal to widths.length, and JPG images equal to widths.length + 1 for the fallback.
    • When densities is set: Generates densities.length + 1 images for both WebP and JPG.

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.

withastro/astro

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.csp will be undefined instead of throwing when using one of its methods

Testing

Should pass

Docs

withastro/astro

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

withastro/astro

Changes

  • Explicitly add a favicon.ico reference 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.ico is correctly served from the root when present in public/.
  • 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.
withastro/astro

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

withastro/astro

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

withastro/astro

Changes

Testing

Docs

withastro/astro

fixes: #15252

Changes

  • Fixes CSS assetsPrefix with remote URLs incorrectly prepending a forward slash
  • When using build.assetsPrefix with 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 calling prependForwardSlash()
  • JavaScript assets with the same assetsPrefix configuration were unaffected - only CSS had this issue

Testing

Tested with a minimal reproduction: https://stackblitz.com/github/lamalex/astro-css-assetsprefix-bug

  1. Created an Astro project with MDX and content collections
  2. Configured build.assetsPrefix.css to https://cdn.example.com
  3. Set build.inlineStylesheets: 'never' to force external CSS files
  4. Built the project and verified CSS links now have the correct CDN URL without the leading /
  5. Ran test/astro-assets-prefix.test.js and verified no breakage
  6. 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.

withastro/astro

Changes

Testing

Adds a regression test for issue #15251 where React components with client:load nested inside HTML elements in MDX files fail to hydrate.

Docs

withastro/astro

Changes

Testing

Docs

withastro/astro

Changes

  • Merges main into next

Testing

  • All tests passing

Docs

N/A

withastro/astro

This PR contains the following updates:

Package Change Age Confidence
prettier (source) ^3.7.4^3.8.0 age confidence

Release Notes

prettier/prettier (prettier)

v3.8.0

Compare Source

diff

🔗 Release note


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.

withastro/astro

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@astrojs/sitemap (source) ^3.6.1^3.7.0 age confidence
@cloudflare/workers-types ^4.20260109.0^4.20260116.0 age confidence
@vercel/routing-utils (source) ^5.3.1^5.3.2 age confidence
fastify (source) ^5.6.2^5.7.0 age confidence
wrangler (source) 4.58.04.59.2 age confidence

Release Notes

withastro/astro (@​astrojs/sitemap)

v3.7.0

Compare Source

Minor Changes
  • #​14471 4296373 Thanks @​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 new chunks option 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

Compare Source

v4.20260115.0

Compare Source

v4.20260114.0

Compare Source

v4.20260113.0

Compare Source

v4.20260111.0

Compare Source

vercel/vercel (@​vercel/routing-utils)

v5.3.2

Compare Source

Patch Changes
  • Add respectOriginCacheControl to rewritesSchema (#​14506)

  • Add respectOriginCacheControl to routes schema (#​14565)

fastify/fastify (fastify)

v5.7.0

Compare Source

What's Changed

New Contributors

Full Changelog: fastify/fastify@v5.6.2...v5.7.0

cloudflare/workers-sdk (wrangler)

v4.59.2

Compare Source

Patch Changes
  • #​11908 e78186d Thanks @​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 fe4faa3 Thanks @​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
  • #​11882 695b043 Thanks @​GregBrimble! - Improve the error message for wrangler secret put when using Worker versions or gradual deployments. wrangler versions secret put should be used instead, or ensure to deploy the latest version before using wrangler secret put. wrangler secret put alone 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]:

v4.59.1

Compare Source

Patch Changes
  • #​11889 99b1f32 Thanks @​emily-shen! - Use argument array when executing git commands with wrangler pages deploy

    Pass user provided values from --commit-hash safely to underlying git command.

v4.59.0

Compare Source

Minor Changes
  • #​11852 ad65efa Thanks @​NuroDev! - Add --check flag to wrangler types command

    The new --check flag 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 43d5363 Thanks @​matthewdavidrodgers! - Add ability to enable higher asset count limits for Pages deployments

    Wrangler 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 0f8d69d Thanks @​nikitassharma! - Users can now specify constraints.tiers for their container applications. tier is deprecated in favor of tiers.
    If left unset, we will default to tiers: [1, 2].
    Note that constraints is an experimental feature.

Patch Changes
  • #​11820 b0e54b2 Thanks @​MattieTK! - Add AI agent detection to analytics events

    Wrangler now detects when commands are executed by AI coding agents (such as Claude Code, Cursor, GitHub Copilot, etc.) using the am-i-vibing library. This information is included as an agent property in all analytics events, helping Cloudflare understand how developers interact with Wrangler through AI assistants.

    The agent property will contain the agent ID (e.g., "claude-code", "cursor-agent") when detected, or null when running outside an agentic environment.

  • #​11494 ed60c4f Thanks @​jalmonter! - Fix scheduled trigger warning showing undefined port

    When running wrangler dev with a worker that has cron triggers, the warning message displayed an invalid URL like curl "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 faa5753 Thanks @​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 e574ef3 Thanks @​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 b6148ed Thanks @​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 ab3859c Thanks @​dario-piotrowicz! - Update the Wrangler autoconfig logic to work with the latest version of Waku

    The latest version of Waku (0.12.5-1.0.0-alpha.1-0) requires a src/waku.server.tsx file instead of a src/server-entry.tsx one, so the Wrangler autoconfig logic (the logic being run as part of wrangler setup and wrangler deploy --x-autoconfig that 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 0eb973d Thanks @​petebacondarwin! - Fix incorrect warning about multiple environments when using redirected config

    Previously, when using a redirected config (via configPath in 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]:

v4.58.0

Compare Source

Minor Changes
  • #​11728 7d63fa5 Thanks @​NuroDev! - Add command categories to wrangler help menu

    The 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 97e67b9 Thanks @​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

Compare Source

Minor Changes
  • #​11682 b993d95 Thanks @​ascorbic! - Add wrangler auth token command 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_TOKEN environment variable

    Use --json to get structured output including the token type, which also supports API key/email authentication:

    wrangler auth token --json

    This is similar to gh auth token in the GitHub CLI.

  • #​11702 f612b46 Thanks @​gpanders! - Add support for trusted_user_ca_keys in Wrangler

    You 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 9e360f6 Thanks @​ichernetsky-cf! - Drop deprecated containers observability.logging field

  • #​11616 fc95831 Thanks @​NuroDev! - Add type generation support to wrangler dev

    You can now have your worker configuration types be automatically generated when the local Wrangler development server starts.

    To use it you can either:

    1. Add the --types flag when running wrangler dev.
    2. Update your Wrangler configuration file to add the new dev.generate_types boolean property.
    {
    	"$schema": "node_modules/wrangler/config-schema.json",
    	"name": "example",
    	"main": "src/index.ts",
    	"compatibility_date": "2025-12-12",
    	"dev": {
    		"generate_types": true
    	}
    }
  • #​11524 b0dbf1a Thanks @​penalosa! - Add hidden CLI flags to wrangler setup for suppressing output

    Two 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 69979a3 Thanks @​MattieTK! - Add analytics properties to secret commands for better usage insights

    Secret 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 operation
    • secretSource: 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 c54f8da Thanks @​jamesopstad! - Add default Text module rule for .sql files.

    This enables importing .sql files directly in Wrangler and the Cloudflare Vite plugin without extra configuration.

  • #​11692 df1f9c9 Thanks @​dario-piotrowicz! - Support Waku in autoconfig

  • #​11549 d059f69 Thanks @​dario-piotrowicz! - Support Vike in autoconfig

Patch Changes
  • #​11683 02fbd22 Thanks @​ascorbic! - Display a warning when authentication errors occur and the account_id in 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 your wrangler.toml or wrangler.jsonc file.

  • #​11704 77078ef Thanks @​dario-piotrowicz! - Fix autoconfig handling of Next.js apps with CJS config files and incompatible Next.js versions

    Previously, wrangler setup and wrangler deploy --x-autoconfig would 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 2510723 Thanks @​dario-piotrowicz! - wrangler deploy delegates to opennextjs-cloudflare deploy only when the --x-autoconfig flag is used

    The wrangler deploy command has been updated to delegate to the opennextjs-cloudflare deploy command 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-autoconfig flag is set (since this behavior, although generally valid, is only strictly necessary for the wrangler deploy's autoconfig flow).

  • #​11764 9f6dd71 Thanks @​terakoya76! - Fix R2 Data Catalog snapshot-expiration API field names

    The wrangler r2 bucket catalog snapshot-expiration enable command 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-days and --retain-last) remain unchanged.

  • #​11651 d123ad0 Thanks @​dario-piotrowicz! - Surface a more helpful error message for TOML Date, Date-Time, and Time values in vars

    TOML parses unquoted date/time values like DATE = 2024-01-01 as 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 5121b23 Thanks @​southpolesteve! - Show an error when D1 migration commands are run without a configuration file

    Previously, running wrangler d1 migrations apply, wrangler d1 migrations list, or wrangler d1 migrations create in 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 82e7e90 Thanks @​dario-piotrowicz! - Fix arguments passed to wrangler deploy not being forwarded to opennextjs-cloudflare deploy

    wrangler deploy run in an open-next project delegates to opennextjs-cloudflare deploy, as part of this all the arguments passed to wrangler deploy need be forwarded to opennextjs-cloudflare deploy, before the arguments would be lost, now they will be successfully forwarded (for example wrangler deploy --keep-vars will call opennextjs-cloudflare deploy --keep-vars)

  • #​10750 4688f59 Thanks @​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 b827893 Thanks @​MattieTK! - Breaks out version numbers into sortable number types for analytics logging

  • Updated dependencies [65d1850, 1615fce, b2769bf, 554a4df, 8eede3f, 6a05b1c, 62fd118, a7e9f80, eac5cf7]:

v4.56.0

Compare Source

Minor Changes
  • #​11196 171cfd9 Thanks @​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 472cf72 Thanks @​vovacf201! - feat: add R2 Data Catalog snapshot expiration commands

    Adds new commands to manage automatic snapshot expiration for R2 Data Catalog tables:

    • wrangler r2 bucket catalog snapshot-expiration enable - Enable automatic snapshot expiration
    • wrangler 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 428ae9e Thanks @​ascorbic! - fix: respect TypeScript path aliases when resolving non-JS modules with module rules

    When importing non-JavaScript files (like .graphql, .txt, etc.) using TypeScript path aliases defined in tsconfig.json, Wrangler's module-collection plugin now correctly resolves these imports. Previously, path aliases were only respected for JavaScript/TypeScript files, causing imports like import schema from '~lib/schema.graphql' to fail when using module rules.

  • #​11647 c0e249e Thanks @​dario-piotrowicz! - The auto-configuration logic present in wrangler setup and wrangler deploy --x-autoconfig cannot reliably handle Hono projects, so in these cases make sure to properly error saying that automatically configuring such projects is not supported.

  • #​11694 3853200 Thanks @​dario-piotrowicz! - fix: improve the open-next detection that wrangler deploy performs to eliminate false positives for non open-next projects

  • Updated dependencies [ae1ad22, 737c0f4]:

    • miniflare@​4.20251217.0

v4.55.0

Compare Source

Minor Changes
Patch Changes
  • #​11615 ed42010 Thanks @​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 6b28de1 Thanks @​petebacondarwin! - update command status text and formatting

  • #​11578 4201472 Thanks @​gpanders! - Fixup UX papercuts in containers SSH

  • #​11550 95d81e1 Thanks @​hiendv! - Fix "TypeError: Body is unusable: Body has already been read" when failing to exchange oauth code because of double response.text().

  • Updated dependencies [5d085fb, b75b710, 1e9be12]:

    • miniflare@​4.20251213.0

v4.54.0

Compare Source

Minor Changes
  • #​11512 c15e99e Thanks @​emily-shen! - Enable using ctx.exports with containers

    You 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 like env.DO, you should now access with ctx.exports.MyDOClassname.

    Refer to the docs for more information on using ctx.exports.

  • #​11508 b17797c Thanks @​dario-piotrowicz! - Wrangler will no longer try to add additional configuration to projects using @cloudflare/vite-plugin when deploying or running wrangler setup

  • #​11508 b17797c Thanks @​dario-piotrowicz! - When a Vite project is detected, install @cloudflare/vite-plugin

  • #​11576 bb47e20 Thanks @​dario-piotrowicz! - Support Analog projects in autoconfig

  • #​10582 991760d Thanks @​flakey5! - Add containers ssh command

Patch Changes

v4.53.0

Compare Source

Minor Changes
  • #​11500 af54c63 Thanks @​dario-piotrowicz! - Add new autoconfig_summary field to the deploy output entry

    This change augments wrangler deploy output being printed to WRANGLER_OUTPUT_FILE_DIRECTORY or WRANGLER_OUTPUT_FILE_PATH to also include a new autoconfig_summary field containing the possible summary details for the autoconfig process (the field is undefined if autoconfig didn't run).

    Note: the field is experimental and could change while autoconfig is not GA

  • #​11477 9988cc9 Thanks @​ascorbic! - Support Nuxt in autoconfig

  • #​11472 ce295bf Thanks @​dario-piotrowicz! - Support Qwik projects in autoconfig

  • #​10937 9514c9a Thanks @​ReppCodes! - Add support for "targeted" placement mode with region, host, and hostname fields

    This change adds a new mode to placement configuration. 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 provider
    • host: Specify a host with (required) port (e.g., "example.com:8123") to target a TCP service
    • hostname: 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 ac861f8 Thanks @​penalosa! - Add React Router support in autoconfig

  • #​11506 79d30d4 Thanks @​vicb! - Set the target JS version to ES2024

Patch Changes

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.

withastro/astro

This PR contains the following updates:

Package Change Age Confidence
@libsql/client (source) ^0.15.15^0.17.0 age confidence
alpinejs (source) ^3.15.3^3.15.4 age confidence
preact (source) ^10.28.1^10.28.2 age confidence
prettier (source) ^3.7.4^3.8.0 age confidence
sass ^1.97.1^1.97.2 age confidence
shiki (source) ^3.20.0^3.21.0 age confidence
turbo (source) ^2.7.2^2.7.4 age confidence
typescript-eslint (source) ^8.51.0^8.53.0 age confidence

Release Notes

tursodatabase/libsql-client-ts (@​libsql/client)

v0.17.0

Compare Source

alpinejs/alpine (alpinejs)

v3.15.4

Compare Source

Fixed
  • Fix sort auto evaluation #​4716
  • Fix duplicate attribute/value situations
vercel/turborepo (turbo)

v2.7.4: Turborepo v2.7.4

Compare Source

What's Changed

Docs
create-turbo
Examples
Changelog

New Contributors

Full Changelog: vercel/turborepo@v2.7.3...v2.7.4

v2.7.3: Turborepo v2.7.3

Compare Source

What's Changed

Examples
  • examples: Remove skipLibCheck from nestjs.json in nestJS example by @​leos in #​11323
Changelog

New Contributors

Full Changelog: vercel/turborepo@v2.7.2...v2.7.3

typescript-eslint/typescript-eslint (typescript-eslint)

v8.53.0

Compare Source

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

Compare Source

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.

withastro/astro

This PR contains the following updates:

Package Change Age Confidence
@types/react (source) ^18.3.20^18.3.27 age confidence
@types/react-dom (source) ^18.3.6^18.3.7 age confidence
postcss-preset-env (source) ^10.6.0^10.6.1 age confidence
preact (source) ^10.28.1^10.28.2 age confidence
rollup (source) ^4.54.0^4.55.1 age confidence
sass ^1.97.1^1.97.2 age confidence
shiki (source) ^3.20.0^3.21.0 age confidence
undici (source) ^6.22.0^6.23.0 age confidence
unifont ~0.7.1~0.7.3 age confidence
unstorage (source) ^1.17.3^1.17.4 age confidence

Release Notes

csstools/postcss-plugins (postcss-preset-env)

v10.6.1

Compare Source

January 10, 2026

sass/dart-sass (sass)

v1.97.2

Compare Source

  • Additional fixes for implicit configuration when nested imports are involved.
shikijs/shiki (shiki)

v3.21.0

Compare Source

   🚀 Features
   🐞 Bug Fixes
    View changes on GitHub
unjs/unifont (unifont)

v0.7.3

Compare Source

   🐞 Bug Fixes
    View changes on GitHub

v0.7.2

Compare Source

   🐞 Bug Fixes
    View changes on GitHub
unjs/unstorage (unstorage)

v1.17.4

Compare Source

compare changes

[!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 use createH3StorageHandler, upgrading is strongly recommended.

📦 Dependency Updates
  • Upgraded chokidar to v5 (454a024)
  • Upgraded lru-cache to v11 (b867a09)
  • Fixed @vercel/kv peer dependency range (b3dc1cf)

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.

withastro/astro

This PR contains the following updates:

Package Change Age Confidence
@astrojs/svelte (source) ^7.2.4^7.2.5 age confidence
astro (source) ^5.16.6^5.16.10 age confidence
preact (source) ^10.28.1^10.28.2 age confidence
vue (source) ^3.5.13^3.5.26 age confidence

Release Notes

withastro/astro (@​astrojs/svelte)

v7.2.5

Compare Source

Patch Changes
withastro/astro (astro)

v5.16.10

Compare Source

Patch Changes
  • 2fa19c4 - Improved error handling in the rendering phase

    Added 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 d8e64ef Thanks @​ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure.

  • #​15169 b803d8b Thanks @​rururux! - fix: fix image 500 error when moving dist directory in standalone Node

  • #​14622 9b35c62 Thanks @​aprici7y! - Fixes CSS url() references to public assets returning 404 in dev mode when base path is configured

  • #​15219 43df4ce Thanks @​matthewp! - Upgrades the diff package to v8

v5.16.9

Compare Source

Patch Changes
  • #​15174 37ab65a Thanks @​florian-lefebvre! - Adds Google Icons to built-in font providers

    To 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 a77c4f4 Thanks @​matthewp! - Fixes hydration for framework components inside MDX when using Astro.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 9b726c4 Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Changes how font providers are implemented with updates to the FontProvider type

    This is an implementation detail that changes how font providers are created. This process allows Astro to take more control rather than relying directly on unifont types. 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 on unifont types will require an update to your project code.

    Previously, an Astro FontProvider was made of a config and a runtime part. It relied directly on unifont types, 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 '@&#8203;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 9cd5b87 Thanks @​matthewp! - Fixes scripts in components not rendering when a sibling <Fragment slot="..."> exists but is unused

v5.16.8

Compare Source

Patch Changes

v5.16.7

Compare Source

Patch Changes
  • #​15122 b137946 Thanks @​florian-lefebvre! - Improves JSDoc annotations for AstroGlobal, AstroSharedContext and APIContext types

  • #​15123 3f58fa2 Thanks @​43081j! - Improves rendering performance by grouping render chunks when emitting from async iterables to avoid encoding costs

  • #​14954 7bec4bd Thanks @​volpeon! - Fixes remote images Etag header handling by disabling internal cache

  • #​15052 b2bcd5a Thanks @​Princesseuh! - Fixes images not working in development when using setups with port forwarding

  • #​15028 87b19b8 Thanks @​Princesseuh! - Fixes certain aliases not working when using images in JSON files with the content layer

  • #​15118 cfa382b Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Removes the defineAstroFontProvider() type helper.

    If you are building a custom font provider, remove any occurrence of defineAstroFontProvider() and use the FontProvider type 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 4e28db8 Thanks @​delucis! - Reduces Astro’s install size by around 8 MB

  • #​15088 a19140f Thanks @​martrapp! - Enables the ClientRouter to preserve the original hash part of the target URL during server side redirects.

  • #​15117 b1e8e32 Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Changes the font format downloaded by default when using the experimental Fonts API. Additionally, adds a new formats configuration option to specify which font formats to download.

    Previously, Astro was opinionated about which font sources would be kept for usage, mainly keeping woff2 and woff files.

    You can now specify what font formats should be downloaded (if available). Only woff2 files 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']
        }]
    }
})

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.

withastro/astro
withastro/astro

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.

withastro/astro

Fix typo: to toto in factory.ts

withastro/astro

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 getRemoteSize as an API of the Image Service.
  • Modified the publicly exposed inferRemoteSize function to utilize the Image Service's getRemoteSize.
  • Assigned the existing inferRemoteSize function to baseService's getRemoteSize. 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.

withastro/astro

Changes

  • Fixed greedy regex in renderErrorMarkdown that caused markdown link examples in error messages to capture extra characters
  • Changed linkRegex from /\[([^[]+)\]\((.*)\)/g to /\[([^[]+)\]\(([^)]*)\)/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

  1. Wrote tests first to verify the hypothesis - tests for renderErrorMarkdown covering link parsing edge cases
  2. Ran tests to confirm they failed with the buggy regex
  3. Applied the fix: changed (.*) to ([^)]*) to stop at the first )
  4. 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.

withastro/astro

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 47ae148 Thanks @florian-lefebvre! - Allows experimental Font providers to specify family options

    Previously, an Astro FontProvider could 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 47ae148 Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Updates 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 options property 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 c0595b3 Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Removes getFontData() exported from astro:assets with fontData when using the experimental Fonts API

    Accessing 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 given cssVariable. That was however limiting for programmatic usages that need to access all font data.

    The getFontData() helper function is removed and replaced by a new fontData object:

    -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 8d84b30 Thanks @lamalex! - Fixes CSS assetsPrefix with remote URLs incorrectly prepending a forward slash

    When using build.assetsPrefix with 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 731f52d Thanks @kedarvartak! - Fixes an issue where stopping the dev server with q+enter incorrectly created a dist folder and copied font files when using the experimental Fonts API

  • #15230 3da6272 Thanks @rahuld109! - Fixes greedy regex in error message markdown rendering that caused link syntax examples to capture extra characters

  • #15253 2a6315a Thanks @matthewp! - Fixes hydration for React components nested inside HTML elements in MDX files

  • #15227 9a609f4 Thanks @matthewp! - Fixes styles not being included for conditionally rendered Svelte 5 components in production builds

  • #14607 ee52160 Thanks @simensfo! - Reintroduces css deduplication for hydrated client components. Ensures assets already added to a client chunk are not flagged as orphaned

withastro/astro

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:

  1. Svelte 5.26+ added css.hasGlobal flag to compiler output
  2. vite-plugin-svelte 5.1.0+ uses this to add cssScopeTo metadata
  3. 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

withastro/astro

Changes

What the title says

Testing

N/A

Docs

N/A

withastro/starlight

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 703fab0 Thanks @HiDeoo! - Fixes support for running builds when npx is unavailable.

    Previously, Starlight would spawn a process to run the Pagefind search indexing binary using npx. On platforms where npx isn’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 a0e6368 Thanks @delucis! - Fixes several edge cases in highlighting the current page heading in Starlight’s table of contents

  • #3663 00cbf00 Thanks @lines-of-codes! - Adds Thai language support

  • #3658 ac79329 Thanks @delucis! - Avoids adding redundant aria-current="false" attributes to sidebar entries

  • #3382 db295c2 Thanks @trueberryless! - Fixes an issue where the mobile table of contents is unable to find the first heading when a page has a tall banner.

withastro/starlight

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).

withastro/astro

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

  • #15017 9e7a3c8 Thanks @ixchio! - Fixes CSS double-bundling when the same CSS file is imported in both a page's frontmatter and a component's script tag

  • #15225 6fe62e1 Thanks @ematipico! - Updates to the latest version of devalue

withastro/astro

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

withastro/starlight

This PR includes an addition of a link to a new Starlight community plugin.

withastro/astro

ℹ️ 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 age confidence
svelte (source) 5.46.15.46.4 age confidence

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

Compare Source

Patch Changes

v5.46.3

Compare Source

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 $inspect calls after await expressions when compiling for production server code (#​17407)

  • fix: clear batch between runs (#​17424)

  • fix: adjust loc property of Program nodes created from <script> elements (#​17428)

  • fix: don't revert source to UNINITIALIZED state when time travelling (#​17409)

v5.46.1

Compare Source

Patch Changes
  • fix: type currentTarget in on function (#​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

Compare Source

Minor Changes
  • feat: Add csp option to render(...), and emit hashes when using hydratable (#​17338)

v5.45.10

Compare Source

Patch Changes
  • fix: race condition when importing AsyncLocalStorage (#​17350)

v5.45.9

Compare Source

Patch Changes
  • fix: correctly reschedule deferred effects when reviving a batch after async work (#​17332)

  • fix: correctly print !doctype during print (#​17341)

v5.45.8

Compare Source

Patch Changes
  • fix: set AST root.start to 0 and root.end to template.length (#​17125)

  • fix: prevent erroneous state_referenced_locally warnings on prop fallbacks (#​17329)

v5.45.7

Compare Source

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 hydratable serialization failure (#​17315)

v5.45.6

Compare Source

Patch Changes
  • fix: don't issue a11y warning for <video> without captions if it has no src (#​17311)

  • fix: add srcObject to permitted <audio>/<video> attributes (#​17310)

v5.45.5

Compare Source

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

Compare Source

Patch Changes
  • chore: move DOM-related effect properties to effect.nodes (#​17293)

  • fix: allow $props.id() to occur after an await (#​17285)

  • fix: keep reactions up to date even when read outside of effect (#​17295)

v5.45.3

Compare Source

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

Compare Source

Patch Changes
  • fix: array destructuring after await (#​17254)

  • fix: throw on invalid {@&#8203;tag}s (#​17256)

v5.45.1

Compare Source

Patch Changes
  • fix: link offscreen items and last effect in each block correctly (#​17240)

v5.45.0

Compare Source

Minor Changes

v5.44.1

Compare Source

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

Compare Source

Minor Changes

v5.43.15

Compare Source

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

Compare Source

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

Compare Source

Patch Changes
  • fix: don't set derived values during time traveling (#​17200)

v5.43.12

Compare Source

Patch Changes
  • fix: maintain correct linked list of effects when updating each blocks (#​17191)

v5.43.11

Compare Source

Patch Changes
  • perf: don't use tracing overeager during dev (#​17183)

  • fix: don't cancel transition of already outroing elements (#​17186)

v5.43.10

Compare Source

Patch Changes
  • fix: avoid other batches running with queued root effects of main batch (#​17145)

v5.43.9

Compare Source

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 @const in boundary hydrates correctly (#​17165)

  • fix: take blockers into account when creating #await blocks (#​17137)

  • fix: parallelize async @consts in the template (#​17165)

v5.43.8

Compare Source

Patch Changes
  • fix: each block losing reactivity when items removed while promise pending (#​17150)

v5.43.7

Compare Source

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

Compare Source

Patch Changes
  • fix: don't deactivate other batches (#​17132)

v5.43.5

Compare Source

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

Compare Source

Patch Changes
  • chore: simplify connection/disconnection logic (#​17105)

  • fix: reconnect deriveds to effect tree when time-travelling (#​17105)

v5.43.3

Compare Source

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

Compare Source

Patch Changes
  • fix: treat each blocks with async dependencies as uncontrolled (#​17077)

v5.43.1

Compare Source

Patch Changes
  • fix: transform $bindable after await expressions (#​17066)

v5.43.0

Compare Source

Minor Changes
Patch Changes
  • fix: settle batch after DOM updates (#​17054)

v5.42.3

Compare Source

Patch Changes
  • fix: handle <svelte:head> rendered asynchronously (#​17052)

  • fix: don't restore batch in #await (#​17051)

v5.42.2

Compare Source

Patch Changes
  • fix: better error message for global variable assignments (#​17036)

  • chore: tweak memoizer logic (#​17042)

v5.42.1

Compare Source

Patch Changes
  • fix: ignore fork discard() after commit() (#​17034)

v5.42.0

Compare Source

Minor Changes
Patch Changes
  • fix: always allow setContext before first await in component (#​17031)

  • fix: less confusing names for inspect errors (#​17026)

v5.41.4

Compare Source

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 failed snippet (#​16995)

v5.41.3

Compare Source

Patch Changes
  • chore: exclude vite optimized deps from stack traces (#​17008)

  • perf: skip repeatedly traversing the same derived (#​17016)

v5.41.2

Compare Source

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 $inspect logs come from the callsite (#​17001)

  • fix: ensure guards (eg. if, each, key) run before their contents (#​16930)

v5.41.1

Compare Source

Patch Changes
  • fix: place let: declarations before {@&#8203;const} declarations (#​16985)

  • fix: improve each_key_without_as error (#​16983)

  • chore: centralise branch management (#​16977)

v5.41.0

Compare Source

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 each block has key but no as clause (#​16966)

v5.40.2

Compare Source

Patch Changes
  • fix: add hydration markers in pending branch of SSR boundary (#​16965)

v5.40.1

Compare Source

Patch Changes
  • chore: Remove sync-in-async warning for server rendering (#​16949)

v5.40.0

Compare Source

Minor Changes
  • feat: add createContext utility for type-safe context (#​16948)
Patch Changes
  • chore: simplify batch.apply() (#​16945)

  • fix: don't rerun async effects unnecessarily (#​16944)

v5.39.13

Compare Source

Patch Changes
  • fix: add missing type for fr attribute for radialGradient tags in svg (#​16943)

  • fix: unset context on stale promises (#​16935)

v5.39.12

Compare Source

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 pending is an attribute (#​16919)

  • fix: generate correct code for each blocks with async body (#​16923)

v5.39.11

Compare Source

Patch Changes
  • fix: flush batches whenever an async value resolves (#​16912)

v5.39.10

Compare Source

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 $$props for excluded props (#​16898)

  • fix: correctly transform $derived private fields on server (#​16894)

  • fix: add UNKNOWN evaluation value before breaking for binding.initial===SnippetBlock (#​16910)

v5.39.9

Compare Source

Patch Changes
  • fix: flush when pending boundaries resolve (#​16897)

v5.39.8

Compare Source

Patch Changes
  • fix: check boundary pending attribute 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:checked error message to clarify usage with radio inputs (#​16874)

v5.39.7

Compare Source

Patch Changes
  • chore: simplify batch logic (#​16847)

  • fix: rebase pending batches when other batches are committed (#​16866)

  • fix: wrap async children in $$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

Compare Source

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

Compare Source

Patch Changes
  • fix: allow {@&#8203;html await ...} and snippets with async content on the server (#​16817)

  • fix: use nginx SSI-compatible comments for $props.id() (#​16820)

v5.39.4

Compare Source

Patch Changes
  • fix: restore hydration state after await in <script> (#​16806)

v5.39.3

Compare Source

Patch Changes

v5.39.2

Compare Source

Patch Changes
  • fix: preserve SSR context when block expressions contain await (#​16791)

  • chore: bump some devDependencies (#​16787)

v5.39.1

Compare Source

Patch Changes
  • fix: add missing type for fr attribute for radialGradient tags in svg (#​16943)

  • fix: unset context on stale promises (#​16935)

v5.39.0

Compare Source

Minor Changes
Patch Changes
  • fix: correctly SSR hidden="until-found" (#​16773)

v5.38.10

Compare Source

Patch Changes
  • fix: flush effects scheduled during boundary's pending phase (#​16738)

v5.38.9

Compare Source

Patch Changes
  • chore: generate CSS hash using the filename (#​16740)

  • fix: correctly analyze <object.property> components (#​16711)

  • fix: clean up scheduling system (#​16741)

  • fix: transform input defaults from spread (#​16481)

  • fix: don't destroy contents of svelte:boundary unless the boundary is an error boundary (#​16746)

v5.38.8

Compare Source

Patch Changes
  • fix: send $effect.pending count to the correct boundary (#​16732)

v5.38.7

Compare Source

Patch Changes
  • fix: replace undefined with void(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

Compare Source

Patch Changes
  • fix: don't fail on flushSync while flushing effects (#​16674)

v5.38.5

Compare Source

Patch Changes
  • fix: ensure async deriveds always get dependencies from thennable (#​16672)

v5.38.3

Compare Source

Patch Changes
  • fix: ensure correct order of template effect values (#​16655)

  • fix: allow async {@&#8203;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_loss in async mode (#​16644)

v5.38.2

Compare Source

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

Compare Source

Patch Changes
  • fix: flush effects scheduled during boundary's pending phase (#​16738)

v5.38.0

Compare Source

Minor Changes
  • feat: allow await inside @const declarations (#​16542)
Patch Changes
  • fix: remount at any hydration error (#​16248)

  • chore: emit await_reactivity_loss in for await loops (#​16521)

  • fix: emit snippet_invalid_export instead of undefined_export for exported snippets (#​16539)

v5.37.3

Compare Source

Patch Changes
  • fix: reset attribute cache after setting corresponding property (#​16543)

v5.37.2

Compare Source

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

Compare Source

Patch Changes
  • chore: remove some todos (#​16515)

  • fix: allow await expressions inside {#await ...} argument (#​16514)

  • fix: append_styles in 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

Compare Source

Minor Changes
  • feat: ignore component options in compileModule (#​16362)
Patch Changes
  • fix: always mark props as stateful (#​16504)

v5.36.17

Compare Source

Patch Changes
  • fix: throw on duplicate class field declarations (#​16502)

  • fix: add types for part attribute to svg attributes (#​16499)

v5.36.16

Compare Source

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

Compare Source

Patch Changes
  • fix: preserve dirty status of deferred effects (#​16487)

v5.36.14

Compare Source

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

Compare Source

Patch Changes
  • fix: ensure subscriptions are picked up correctly by deriveds (#​16466)

v5.36.12

Compare Source

Patch Changes
  • chore: move capture_signals to legacy module (#​16456)

v5.36.10

Compare Source

Patch Changes
  • fix: prevent batches from getting intertwined (#​16446)

v5.36.9

Compare Source

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

Compare Source

Patch Changes
  • fix: keep effect in the graph if it has an abort controller (#​16430)

  • chore: Switch payload.out to an array (#​16428)

v5.36.7

Compare Source

Patch Changes
  • fix: allow instrinsic <svelte:...> elements to inherit from SvelteHTMLElements (#​16424)

v5.36.6

Compare Source

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

Compare Source

Patch Changes
  • fix: silence $inspect errors when the effect is about to be destroyed (#​16391)

  • fix: more informative error when effects run in an infinite loop (#​16405)

v5.36.4

Compare Source

Patch Changes
  • fix: avoid microtask in flushSync (#​16394)

  • fix: ensure compiler state is reset before compilation (#​16396)

v5.36.3

Compare Source

Patch Changes
  • fix: don't log await_reactivity_loss warning when signal is read in untrack (#​16385)

  • fix: better handle $inspect on array mutations (#​16389)

  • fix: leave proxied array length untouched when deleting properties (#​16389)

  • fix: update $effect.pending() immediately after a batch is removed (#​16382)

v5.36.2

Compare Source

Patch Changes
  • fix: add $effect.pending() to types (#​16376)

  • fix: add pending snippet to <svelte:boundary> types (#​16379)

v5.36.1

Compare Source

Patch Changes
  • fix: throw on duplicate class field declarations (#​16502)

  • fix: add types for part attribute to svg attributes (#​16499)

v5.36.0

Compare Source

Minor Changes
  • feat: support await in components when using the experimental.async compiler option (#​15844)
Patch Changes
  • fix: silence a11y warning for inert elements (#​16339)

  • chore: clean up a11y analysis code (#​16345)

v5.35.7

Compare Source

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

Compare Source

Patch Changes
  • chore: simplify reaction/source ownership tracking (#​16333)

  • chore: simplify internal component pop() (#​16331)

v5.35.5

Compare Source

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

Compare Source

Patch Changes
  • fix: abort and reschedule effect processing after state change in user effect (#​16280)

v5.35.3

Compare Source

Patch Changes
  • fix: account for mounting when select_option in attribute_effect (#​16309)

  • fix: do not proxify the value assigned to a derived (#​16302)

v5.35.2

Compare Source

Patch Changes

v5.35.1

Compare Source

Patch Changes
  • feat: add parent hierarchy to __svelte_meta objects (#​16255)

v5.35.0

Compare Source

Minor Changes
Patch Changes

v5.34.9

Compare Source

Patch Changes
  • fix: ensure unowned deriveds can add themselves as reactions while connected (#​16249)

v5.34.8

Compare Source

Patch Changes
  • fix: untrack $inspect.with and 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.

withastro/astro

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

withastro/astro

Changes

Format moved this comment, which broke the check

Testing

No errors in my editor

Docs

N/A

withastro/starlight

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 .content to .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.

withastro/astro

Changes

Fixed an issue where the internal timers weren't updated after the internal refactor.

Testing

Maybe with a review PR?

Docs

N/A

withastro/astro

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
withastro/astro

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

withastro/astro

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.

withastro/astro

Changes

  • Depends on #15181
  • At ViteConf, I got some feedback that getFontData() was a bit limiting. So this PR replaces it with fontData
  • This change should affect very few users, as this is an advanced API

Testing

Updated

Docs

withastro/astro

Changes

This PR updates the version of @astrojs/check to fix its current versioning:

  • On 10/20/2025, 0.9.5 was released.
  • On 11/10/2025, 0.9.6-alpha.0 was released as part of the Astro v6 alpha.
  • On 11/26/2025, 0.9.6 was released due to some changes in main.
  • On 01/13/2026, 0.9.6-beta.1 was released yesterday as part of the Astro v6 beta.

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.json file version of @astrojs/check to 0.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.

withastro/astro

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 ada2808 Thanks @gameroman! - Removes support for CommonJS config files - (v6 upgrade guidance)

  • #15266 f7c9365 Thanks @florian-lefebvre! - Allows Astro.csp and context.csp to be undefined instead of throwing errors when csp: true is not configured

    When using the experimental Content Security Policy feature in Astro 5.x, context.csp was always defined but would throw if experimental.csp was not enabled in the Astro config.

    For the stable version of this API in Astro 6, context.csp can 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 8dbdd8e Thanks @matthewp! - Makes session.driver optional in config schema, allowing adapters to provide default drivers

    Adapters like Cloudflare, Netlify, and Node provide default session drivers, so users can now configure session options (like ttl) without explicitly specifying a driver.

  • #15260 abca1eb Thanks @ematipico! - Fixes an issue where adding new pages weren't correctly shown when using the development server.

  • #15214 6bab8c9 Thanks @ematipico! - Fixes an issue where the internal perfomance timers weren't correctly updated to reflect new build pipeline.

  • #15259 8670a69 Thanks @ematipico! - Fixes an issue where styles weren't correctly reloaded when using the @astrojs/cloudflare adapter.

  • #15205 12adc55 Thanks @martrapp! - Fixes an issue where the astro:page-load event did not fire on initial page loads.

  • #15269 6f82aae Thanks @ematipico! - Fixes a regression where build.serverEntry stopped working as expected.

@astrojs/cloudflare@13.0.0-beta.1

Patch Changes

  • #15269 6f82aae Thanks @ematipico! - Fixes a regression where build.serverEntry stopped working as expected.

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.0

@astrojs/check@0.9.7-beta.1

Patch Changes

withastro/astro

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

withastro/astro

Changes

update esbuild

Testing

existing tests should pass

Docs

not needed

withastro/astro

Changes

Drop cjs config support

Testing

Existing tests should pass

Docs

Might be needed

/cc @withastro/maintainers-docs for feedback!

withastro/astro

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

withastro/astro

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

@astrojs/netlify@7.0.0-beta.5

Patch Changes

  • #15187 bbb5811 Thanks @matthewp! - Update to Astro 6 beta

  • 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

@astrojs/language-server@2.16.1-beta.1

Patch Changes

@astrojs/markdown-remark@7.0.0-beta.1

Patch Changes

@astrojs/upgrade@0.7.0-beta.1

Patch Changes

withastro/astro

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 4296373 Thanks @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 new chunks option 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 phase

    Added 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 d8e64ef Thanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure.

  • #15169 b803d8b Thanks @rururux! - fix: fix image 500 error when moving dist directory in standalone Node

  • #14622 9b35c62 Thanks @aprici7y! - Fixes CSS url() references to public assets returning 404 in dev mode when base path is configured

  • #15219 43df4ce Thanks @matthewp! - Upgrades the diff package to v8

@astrojs/rss@4.0.15

Patch Changes

@astrojs/netlify@6.6.4

Patch Changes

  • #15199 d8e64ef Thanks @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 a8317c1 Thanks @ematipico! - Fixes an issue where some prendered pages weren't correctly rendered when using the Node.js adapter in middleware mode.

  • #15169 b803d8b Thanks @rururux! - fix: fix image 500 error when moving dist directory in standalone Node

@astrojs/vercel@9.0.4

Patch Changes

  • #14863 29fd188 Thanks @drwpow! - Improves error message when using Node builtins inside Edge middlewares

@astrojs/language-server@2.16.3

Patch Changes

withastro/astro

Adds missing changesets for packages not published.

withastro/astro

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

withastro/astro

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 .gitignore exists but doesn't contain .vercel, prompts to add it
  • If .gitignore doesn't exist, prompts to create it with .vercel
  • If .vercel is already in .gitignore, skips silently

Closes #15058

Test plan

  1. Run astro add vercel in a project without .gitignore - should prompt to create one
  2. Run astro add vercel in a project with .gitignore without .vercel - should prompt to add it
  3. Run astro add vercel in a project with .gitignore containing .vercel - should skip silently

🤖 Generated with Claude Code

withastro/astro

Changes

Should fix the package publishing

Testing

Docs

withastro/astro

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 of getFontData()
  • 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

withastro/astro

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.ts to core/<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

withastro/astro

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

withastro/docs#13039

withastro/astro

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 returns true for both files and directories.

Testing

  • Added a new src/pages.ts file in the existing alias-tsconfig fixture, matching the name of the src/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.

withastro/astro

Changes

  • Closes #15091
  • Added isBuild check in buildEnd() 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.

withastro/astro

Switches the tag to beta for the beta release.

withastro/astro
withastro/starlight

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 292666c Thanks @maxchang3! - Prevents unwanted font size adjustments on iOS after orientation changes.
withastro/astro

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

withastro/astro

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

withastro/astro

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@astrojs/sitemap (source) ^3.6.0^3.6.1 age confidence
@astrojs/svelte (source) ^7.2.4^7.2.5 age confidence
@astrojs/vue (source) ^5.1.3^5.1.4 age confidence
@cloudflare/workers-types ^4.20260101.0^4.20260109.0 age confidence
rollup (source) ^4.54.0^4.55.1 age confidence
wrangler (source) 4.54.04.58.0 age confidence

Release Notes

withastro/astro (@​astrojs/sitemap)

v3.6.1

Compare Source

Patch Changes
withastro/astro (@​astrojs/svelte)

v7.2.5

Compare Source

Patch Changes
withastro/astro (@​astrojs/vue)

v5.1.4

Compare Source

Patch Changes
cloudflare/workerd (@​cloudflare/workers-types)

v4.20260109.0

Compare Source

v4.20260108.0

Compare Source

v4.20260107.1

Compare Source

v4.20260103.0

Compare Source

rollup/rollup (rollup)

v4.55.1

Compare Source

2026-01-05

Bug Fixes
  • Fix artifact reference for OpenBSD (#​6231)
Pull Requests
cloudflare/workers-sdk (wrangler)

v4.58.0

Compare Source

Minor Changes
  • #​11728 7d63fa5 Thanks @​NuroDev! - Add command categories to wrangler help menu

    The 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 97e67b9 Thanks @​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

Compare Source

Minor Changes
  • #​11682 b993d95 Thanks @​ascorbic! - Add wrangler auth token command 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_TOKEN environment variable

    Use --json to get structured output including the token type, which also supports API key/email authentication:

    wrangler auth token --json

    This is similar to gh auth token in the GitHub CLI.

  • #​11702 f612b46 Thanks @​gpanders! - Add support for trusted_user_ca_keys in Wrangler

    You 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 9e360f6 Thanks @​ichernetsky-cf! - Drop deprecated containers observability.logging field

  • #​11616 fc95831 Thanks @​NuroDev! - Add type generation support to wrangler dev

    You can now have your worker configuration types be automatically generated when the local Wrangler development server starts.

    To use it you can either:

    1. Add the --types flag when running wrangler dev.
    2. Update your Wrangler configuration file to add the new dev.generate_types boolean property.
    {
    	"$schema": "node_modules/wrangler/config-schema.json",
    	"name": "example",
    	"main": "src/index.ts",
    	"compatibility_date": "2025-12-12",
    	"dev": {
    		"generate_types": true
    	}
    }
  • #​11524 b0dbf1a Thanks @​penalosa! - Add hidden CLI flags to wrangler setup for suppressing output

    Two 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 69979a3 Thanks @​MattieTK! - Add analytics properties to secret commands for better usage insights

    Secret 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 operation
    • secretSource: 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 c54f8da Thanks @​jamesopstad! - Add default Text module rule for .sql files.

    This enables importing .sql files directly in Wrangler and the Cloudflare Vite plugin without extra configuration.

  • #​11692 df1f9c9 Thanks @​dario-piotrowicz! - Support Waku in autoconfig

  • #​11549 d059f69 Thanks @​dario-piotrowicz! - Support Vike in autoconfig

Patch Changes
  • #​11683 02fbd22 Thanks @​ascorbic! - Display a warning when authentication errors occur and the account_id in 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 your wrangler.toml or wrangler.jsonc file.

  • #​11704 77078ef Thanks @​dario-piotrowicz! - Fix autoconfig handling of Next.js apps with CJS config files and incompatible Next.js versions

    Previously, wrangler setup and wrangler deploy --x-autoconfig would 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 2510723 Thanks @​dario-piotrowicz! - wrangler deploy delegates to opennextjs-cloudflare deploy only when the --x-autoconfig flag is used

    The wrangler deploy command has been updated to delegate to the opennextjs-cloudflare deploy command 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-autoconfig flag is set (since this behavior, although generally valid, is only strictly necessary for the wrangler deploy's autoconfig flow).

  • #​11764 9f6dd71 Thanks @​terakoya76! - Fix R2 Data Catalog snapshot-expiration API field names

    The wrangler r2 bucket catalog snapshot-expiration enable command 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-days and --retain-last) remain unchanged.

  • #​11651 d123ad0 Thanks @​dario-piotrowicz! - Surface a more helpful error message for TOML Date, Date-Time, and Time values in vars

    TOML parses unquoted date/time values like DATE = 2024-01-01 as 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 5121b23 Thanks @​southpolesteve! - Show an error when D1 migration commands are run without a configuration file

    Previously, running wrangler d1 migrations apply, wrangler d1 migrations list, or wrangler d1 migrations create in 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 82e7e90 Thanks @​dario-piotrowicz! - Fix arguments passed to wrangler deploy not being forwarded to opennextjs-cloudflare deploy

    wrangler deploy run in an open-next project delegates to opennextjs-cloudflare deploy, as part of this all the arguments passed to wrangler deploy need be forwarded to opennextjs-cloudflare deploy, before the arguments would be lost, now they will be successfully forwarded (for example wrangler deploy --keep-vars will call opennextjs-cloudflare deploy --keep-vars)

  • #​10750 4688f59 Thanks @​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 b827893 Thanks @​MattieTK! - Breaks out version numbers into sortable number types for analytics logging

  • Updated dependencies [65d1850, 1615fce, b2769bf, 554a4df, 8eede3f, 6a05b1c, 62fd118, a7e9f80, eac5cf7]:

v4.56.0

Compare Source

Minor Changes
  • #​11196 171cfd9 Thanks @​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 472cf72 Thanks @​vovacf201! - feat: add R2 Data Catalog snapshot expiration commands

    Adds new commands to manage automatic snapshot expiration for R2 Data Catalog tables:

    • wrangler r2 bucket catalog snapshot-expiration enable - Enable automatic snapshot expiration
    • wrangler 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 428ae9e Thanks @​ascorbic! - fix: respect TypeScript path aliases when resolving non-JS modules with module rules

    When importing non-JavaScript files (like .graphql, .txt, etc.) using TypeScript path aliases defined in tsconfig.json, Wrangler's module-collection plugin now correctly resolves these imports. Previously, path aliases were only respected for JavaScript/TypeScript files, causing imports like import schema from '~lib/schema.graphql' to fail when using module rules.

  • #​11647 c0e249e Thanks @​dario-piotrowicz! - The auto-configuration logic present in wrangler setup and wrangler deploy --x-autoconfig cannot reliably handle Hono projects, so in these cases make sure to properly error saying that automatically configuring such projects is not supported.

  • #​11694 3853200 Thanks @​dario-piotrowicz! - fix: improve the open-next detection that wrangler deploy performs to eliminate false positives for non open-next projects

  • Updated dependencies [ae1ad22, 737c0f4]:

    • miniflare@​4.20251217.0

v4.55.0

Compare Source

Minor Changes
Patch Changes
  • #​11615 ed42010 Thanks @​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 6b28de1 Thanks @​petebacondarwin! - update command status text and formatting

  • #​11578 4201472 Thanks @​gpanders! - Fixup UX papercuts in containers SSH

  • #​11550 95d81e1 Thanks @​hiendv! - Fix "TypeError: Body is unusable: Body has already been read" when failing to exchange oauth code because of double response.text().

  • Updated dependencies [5d085fb, b75b710, 1e9be12]:

    • miniflare@​4.20251213.0

v4.54.0

Compare Source

Minor Changes
  • #​11512 c15e99e Thanks @​emily-shen! - Enable using ctx.exports with containers

    You 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 like env.DO, you should now access with ctx.exports.MyDOClassname.

    Refer to the docs for more information on using ctx.exports.

  • #​11508 b17797c Thanks @​dario-piotrowicz! - Wrangler will no longer try to add additional configuration to projects using @cloudflare/vite-plugin when deploying or running wrangler setup

  • #​11508 b17797c Thanks @​dario-piotrowicz! - When a Vite project is detected, install @cloudflare/vite-plugin

  • #​11576 bb47e20 Thanks @​dario-piotrowicz! - Support Analog projects in autoconfig

  • #​10582 991760d Thanks @​flakey5! - Add containers ssh command

Patch Changes

v4.53.0

Compare Source

Minor Changes
  • #​11500 af54c63 Thanks @​dario-piotrowicz! - Add new autoconfig_summary field to the deploy output entry

    This change augments wrangler deploy output being printed to WRANGLER_OUTPUT_FILE_DIRECTORY or WRANGLER_OUTPUT_FILE_PATH to also include a new autoconfig_summary field containing the possible summary details for the autoconfig process (the field is undefined if autoconfig didn't run).

    Note: the field is experimental and could change while autoconfig is not GA

  • #​11477 9988cc9 Thanks @​ascorbic! - Support Nuxt in autoconfig

  • #​11472 ce295bf Thanks @​dario-piotrowicz! - Support Qwik projects in autoconfig

  • #​10937 9514c9a Thanks @​ReppCodes! - Add support for "targeted" placement mode with region, host, and hostname fields

    This change adds a new mode to placement configuration. 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 provider
    • host: Specify a host with (required) port (e.g., "example.com:8123") to target a TCP service
    • hostname: 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 ac861f8 Thanks @​penalosa! - Add React Router support in autoconfig

  • #​11506 79d30d4 Thanks @​vicb! - Set the target JS version to ES2024

Patch Changes

v4.52.1

Compare Source

Patch Changes

v4.52.0

Compare Source

Minor Changes
  • #​11416 abe49d8 Thanks @​dario-piotrowicz! - Remove the wrangler deploy's --x-remote-diff-check experimental flag

    The 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 f29e699 Thanks @​ascorbic! - Export unstable helpers useful for generating wrangler config

  • #​11389 2342d2f Thanks @​dario-piotrowicz! - Improve the wrangler deploy flow to also check for potential overrides of secrets.

    Now when you run wrangler deploy Wrangler 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 9a1de61 Thanks @​penalosa! - Support TanStack Start in autoconfig

  • #​11360 6b38532 Thanks @​emily-shen! - Containers: Allow users to directly authenticate external image registries in local dev

    Previously, 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 login etc.), and Wrangler or Vite will be able to pull the image specified in the containers.image field in your config file.

    The Cloudflare-managed registry (registry.cloudflare.com) currently still does not work with the Vite plugin.

  • #​11009 e4ddbc2 Thanks @​dario-piotrowicz! - Allow users to provide an account_id as part of the WorkerConfigObject they pass to maybeStartOrUpdateRemoteProxySession

  • #​11478 2aec2b4 Thanks @​dario-piotrowicz! - Support SolidStart in autoconfig

  • #​11330 5a873bb Thanks @​dario-piotrowicz! - Support Angular projects in autoconfig

  • #​11449 e7b690b Thanks @​penalosa! - Delegate generation of HTTPS certificates to Miniflare

  • #​11448 2b4813b Thanks @​edmundhung! - Bumps esbuild version to 0.27.0

  • #​11335 c47ad11 Thanks @​dario-piotrowicz! - Support internal-only undocumented cross_account_grant service binding property

  • #​11346 a977701 Thanks @​penalosa! - We're soon going to make backend changes that mean that wrangler dev --remote sessions will no longer have an associated inspector connection. In advance of these backend changes, we've enabled a new wrangler tail-based logging strategy for wrangler dev --remote. For now, you can revert to the previous logging strategy with wrangler 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 b154de2 Thanks @​vicb! - Use more workerd native modules

    Node modules punycode, trace_events, cluster, wasi, and domains will be used when enabled
    via a compatibility flag or by default when the compatibility date is greater or equal to 2025-12-04.

  • #​11452 76f0540 Thanks @​penalosa! - Remove uses of eval() from the Wrangler bundle

  • #​11284 695fa25 Thanks @​dom96! - Removes duplicate module warnings when vendoring Python packages

  • #​11249 504e258 Thanks @​dario-piotrowicz! - fix: Generalize autoconfig wording

    Generalize the autoconfig wording so that when it doesn't specifically mention "deployment" (since it can be run via wrangler setup or the autoconfig programmatic API)

  • #​11455 d25f7e2 Thanks @​dario-piotrowicz! - Fix autoconfig using absolute paths for static projects

    Running the experimental autoconfig logic through wrangler setup and wrangler deploy --x-autoconfig on 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 1cfae2d Thanks @​edmundhung! - Explicitly close FileHandle in wrangler d1 execute to support Node 25

  • #​11383 1d685cb Thanks @​dario-piotrowicz! - Fix: ensure that when a remote proxy session creation fails a hard error is surfaced to the user (both in wrangler dev and in the programmatic API).

    When using remote bindings, either with wrangler dev or via startRemoteProxySession/maybeStartOrUpdateRemoteProxySession the 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 edf896d Thanks @​ascorbic! - Use correctly-formatted names when displaying detected framework details

  • #​11461 9eaa9e2 Thanks @​dario-piotrowicz! - Update the structure of the configure method of autoconfig frameworks

    Update the signature of the configure function of autoconfig frameworks (AutoconfigDetails#Framework), before they would return a RawConfig object to use to update the project's wrangler config file, now they return an object that includes the RawConfig and that can potentially also hold additional data relevant to the configuration.

  • Updated dependencies [2b4813b, b154de2, 5ee3780, 6e63b57, 71ab562, 5e937c1]:

v4.51.0

Compare Source

Minor Changes
  • #​11345 d524e55 Thanks @​penalosa! - Enable experimental support for autoconfig-powered Astro projects

  • #​11228 43903a3 Thanks @​petebacondarwin! - Support CLOUDFLARE_ENV environment variable for selecting the active environment

    This change enables users to select the environment for commands such as CLOUDFLARE_ENV=prod wrangler versions upload. The --env command line argument takes precedence.

    The CLOUDFLARE_ENV environment variable is mostly used with the @cloudflare/vite-plugin to 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

v4.50.0

Compare Source

Minor Changes
  • #​11219 524a6e5 Thanks @​Ltadrian! - Implement Hyperdrive binding TLS miniflare proxy. This will allow for wrangler dev hyperdrive bindings to connect to external
    databases that require TLS.

  • #​11233 c922a81 Thanks @​emily-shen! - Add containers.unsafe to allow internal users to use additional container features

Patch Changes

[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.

withastro/astro

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!

withastro/astro

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/node adapter
  • 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.

withastro/astro

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 resolveOutDir function is based on resolveClientDir found in the Node adapter's serve-static.ts file.
  • The assetsDir variable previously exported from vite-plugin-assets.ts was not imported by any files, so it has been removed. Instead, serverDir is 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.

withastro/astro

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.

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.

withastro/astro

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.

withastro/astro

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.

withastro/astro

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 37ab65a Thanks @florian-lefebvre! - Adds Google Icons to built-in font providers

    To 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 a77c4f4 Thanks @matthewp! - Fixes hydration for framework components inside MDX when using Astro.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 9b726c4 Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Changes how font providers are implemented with updates to the FontProvider type

    This is an implementation detail that changes how font providers are created. This process allows Astro to take more control rather than relying directly on unifont types. 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 on unifont types will require an update to your project code.

    Previously, an Astro FontProvider was made of a config and a runtime part. It relied directly on unifont types, 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 9cd5b87 Thanks @matthewp! - Fixes scripts in components not rendering when a sibling <Fragment slot="..."> exists but is unused

withastro/astro

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

withastro/astro

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

withastro/astro

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!

withastro/astro

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

withastro/astro

Changes

  • Fixes #14518
  • Framework components with client:* directives inside named slots now correctly hydrate when using Astro.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.

withastro/astro

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.ts to 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

withastro/astro

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

withastro/astro

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

withastro/astro

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 class to className and generated unique key props
  • 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

withastro/astro

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

withastro/astro

Changes

As per title

Testing

Docs

withastro/astro

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.

withastro/astro

Closes #15136

withastro/astro

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-reload Vite 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-css hotUpdate plugin 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 calling invalidateModule() 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.

withastro/astro

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 81db3c0 Thanks @leonace924! - Fixes an issue where requests with query parameters to the base path would return a 404 if trailingSlash was not 'ignore' in development

  • #15152 39ee41f Thanks @rururux! - Fixes a case where context.cookies.set() would be overriden when setting cookies via response headers in development

  • #15140 6f6f8f8 Thanks @cameronraysmith! - Fixes esbuild warning due to dead code in assets virtual module

  • #15127 2cff904 Thanks @Princesseuh! - Updates "Unsupported page types found" error to only appear in more realistic cases

  • #15149 34f84c2 Thanks @rahuld109! - Skips "Use the Image component" audit warning for images inside framework components (React, Vue, Svelte, etc.)

astro-vscode@2.16.7

Patch Changes

withastro/astro

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

withastro/astro

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 FontProvider type 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

withastro/astro

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

withastro/astro

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

withastro/astro

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 6feb0d7 Thanks @florian-lefebvre! - Improves JSDoc annotations for AstroGlobal, AstroSharedContext and APIContext types

  • #15176 9265546 Thanks @matthewp! - Fixes hydration for framework components inside MDX when using Astro.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 6feb0d7 Thanks @florian-lefebvre! - Fixes remote images Etag header handling by disabling internal cache

  • #15121 06261e0 Thanks @ematipico! - Fixes a bug where the Astro, with the Cloudlfare integration, couldn't correctly serve certain routes in the development server.

  • #15125 6feb0d7 Thanks @florian-lefebvre! - Fixes images not working in development when using setups with port forwarding

  • #15137 2f70bf1 Thanks @matthewp! - Adds legacy.collectionsBackwardsCompat flag 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' or type: 'data'
    • Config files located at src/content/config.ts (legacy location)
    • Legacy entry API: entry.slug and entry.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 6feb0d7 Thanks @florian-lefebvre! - Reduces Astro’s install size by around 8 MB

  • #15125 6feb0d7 Thanks @florian-lefebvre! - Enables the ClientRouter to preserve the original hash part of the target URL during server side redirects.

  • #15125 6feb0d7 Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Changes the font format downloaded by default when using the experimental Fonts API. Additionally, adds a new formats configuration option to specify which font formats to download.

    Previously, Astro was opinionated about which font sources would be kept for usage, mainly keeping woff2 and woff files.

    You can now specify what font formats should be downloaded (if available). Only woff2 files 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']
            }]
        }
    })
  • #15179 8c8aee6 Thanks @HiDeoo! - Fixes an issue when importing using an import alias a file with a name matching a directory name.

  • #15176 9265546 Thanks @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 f67b738 Thanks @gameroman! - Updates wrangler dependency to be a peerDependency over a dependency

  • #15121 06261e0 Thanks @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 54dc11d Thanks @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

@astrojs/vercel@10.0.0-beta.0

Patch Changes

@astrojs/vue@6.0.0-beta.0

Patch Changes

astro-vscode@2.16.9-beta.0

Patch Changes

  • #15125 6feb0d7 Thanks @florian-lefebvre! - Fix "Find All References" and other TypeScript features by ensuring the plugin bundle is correctly included

  • #15125 6feb0d7 Thanks @florian-lefebvre! - Fixes syntax highlighting sometimes not working when the frontmatter or script tags ended with certain TypeScript constructs

withastro/astro

Changes

Testing

Docs

withastro/astro

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 empty
  • packages/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:

  1. /base?query=test → strips to /?query=test → normalizes to empty string pathname for route matching ✅
  2. /base → strips to empty string → normalizes correctly ✅
  3. /base/ → strips to / → normalizes correctly ✅
  • tested with minimal example
{01D2EAEA-075C-46BD-A5E4-D6BE4694A946} {BEBBE330-54BE-4976-950F-B6ECB59B73BC} {2D884BBA-C1FE-490C-BCC6-467CE5C35C21}

Docs

Contribution by Gittensor, see my contribution statistics at https://gittensor.io/miners/details?githubId=42954461

withastro/astro

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.49MB

This 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.

withastro/astro

Changes

  • Found in #15120
  • Many types were duplicated, this cleans them up

Testing

Manually in examples, should pass

Docs

Changeset + jsdoc

withastro/starlight

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

withastro/astro

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

withastro/astro

Changes

  • Stacked on top of #15117
  • Cleans types to be more consistent with other Astro APIs

Testing

Should pass

Docs

withastro/astro

Changes

  • Stacked on top of #15111
  • Closes #14819
  • Removes the dedupeFontFaces() function and its associated tests since the logic now lives in unifont itself
  • Upgrades unifont to latest. This version comes with new stuff and this PR updates Astro accordingly to allow passing formats manually

Testing

Updated, should pass

Docs

withastro/astro

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)

withastro/astro

Changes

Testing

Docs

withastro/astro

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.

withastro/starlight

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-adjust is 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

  1. Safari Web Content Guide

  2. Changeset 145168 in webkit, "Remove desktop version of -webkit-text-size-adjust property."

  3. Can I use text-size-adjust ?

  4. text-size-adjust - CSS | MDN

withastro/starlight

Adds complete Greek (el) translations for Starlight’s UI.
Based on en.json, all keys included.

withastro/astro

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.astro with a <script> tag to the existing alias-tsconfig fixture, 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.

withastro/astro

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 FontResolver definition, 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

withastro/astro

Updates the changeset to minor as well as explain a little more the reasoning.

withastro/astro

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

withastro/astro

Changes

Update prettier extension to new one

Testing

Not needed

Docs

Not needed

withastro/astro

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

withastro/astro

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)

image-size PR

withastro/astro

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update
@astrojs/compiler (source) ^2.10.3^2.13.0 age confidence dependencies patch
@jridgewell/sourcemap-codec (source) ^1.4.15^1.5.5 age confidence dependencies patch
@types/mocha (source) ^10.0.1^10.0.10 age confidence devDependencies patch
@types/semver (source) ^7.3.13^7.7.1 age confidence devDependencies patch
@types/vscode (source) ^1.82.0^1.107.0 age confidence devDependencies minor
@types/yargs (source) ^17.0.33^17.0.35 age confidence devDependencies patch
@volar/kit (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/language-core (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@volar/language-core (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/language-server (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@volar/language-server (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/language-service (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/test-utils (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@volar/typescript (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/typescript (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@volar/vscode (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@vscode/vsce (source) 2.30.02.32.0 age confidence devDependencies minor
chokidar ^4.0.1^4.0.3 age confidence dependencies patch
js-yaml ^4.1.0^4.1.1 age confidence devDependencies patch
mocha (source) ^10.2.0^10.8.2 age confidence devDependencies patch
ovsx (source) ^0.10.6^0.10.7 age confidence devDependencies patch
prettier (source) ^3.6.2^3.7.4 age confidence dependencies patch
semver ^7.3.8^7.7.3 age confidence dependencies patch
svelte (source) ^4.2.10^4.2.20 age confidence dependencies patch
tsx (source) ^4.20.6^4.21.0 age confidence devDependencies minor
volar-service-css (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-emmet (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-html (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-prettier (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-typescript (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-typescript-twoslash-queries (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-yaml (source) 0.0.670.0.68 age confidence dependencies patch
vscode ^1.90.0^1.999.0 age confidence engines minor
vscode-html-languageservice ^5.5.2^5.6.1 age confidence dependencies patch
vscode-languageserver-textdocument (source) ^1.0.11^1.0.12 age confidence dependencies patch
vscode-languageserver-textdocument (source) ^1.0.11^1.0.12 age confidence devDependencies patch
vscode-tmgrammar-test ^0.1.2^0.1.3 age confidence devDependencies patch
vscode-uri ^3.0.8^3.1.0 age confidence devDependencies patch
yaml (source) ^2.5.0^2.8.2 age confidence dependencies patch

Release Notes

volarjs/volar.js (@​volar/kit)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/language-core)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/language-server)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/language-service)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/test-utils)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/typescript)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/vscode)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

Microsoft/vsce (@​vscode/vsce)

v2.32.0

Compare Source

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

Compare Source

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

Compare Source

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.

eclipse/openvsx (ovsx)

v0.10.7

Compare Source

Dependencies
  • Upgrade glob from 10.3.10 to 10.5.0 (#​1423)
  • Upgrade js-yaml from 4.1.0 to 4.1.1 (#​1417)

privatenumber/tsx (tsx)

v4.21.0

Compare Source

volarjs/services (volar-service-css)

v0.0.68

Compare Source

volarjs/services (volar-service-emmet)

v0.0.68

Compare Source

volarjs/services (volar-service-html)

v0.0.68

Compare Source

volarjs/services (volar-service-prettier)

v0.0.68

Compare Source

volarjs/services (volar-service-typescript)

v0.0.68

Compare Source

volarjs/services (volar-service-typescript-twoslash-queries)

v0.0.68

Compare Source

volarjs/services (volar-service-yaml)

v0.0.68

Compare Source

microsoft/vscode (vscode)

v1.999.0

Compare Source

v1.107.1: November 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.107.0: November 2025

Compare Source

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.

VS Code November 2025 release image

v1.106.3: October 2025 Recovery 3

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.106.2: October 2025 Recovery 2

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.106.1: October 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.106.0: October 2025

Compare Source

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

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.105.0: September 2025

Compare Source

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

Compare Source

The update addresses these issues.

v1.104.2: August 2025 Recovery 2

Compare Source

The update addresses these issues.

v1.104.1: August 2025 Recovery 1

Compare Source

The update addresses these issues.

v1.104.0: August 2025

Compare Source

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

Compare Source

The update addresses these issues.

v1.103.1: July 2025 Recovery 1

Compare Source

The update adds GPT-5 prompt improvements, support for GPT-5 mini, and addresses these issues.

v1.103.0: July 2025

Compare Source


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

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.102.2: June 2025 Recovery 2

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.102.1: June 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.102.0: June 2025

Compare Source

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

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.101.1: May 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.101.0: May 2025

Compare Source

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

Compare Source

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

Compare Source

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

Compare Source

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

Compare Source

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

    • Custom instructions and reusable prompts (more...).
    • Smarter results with tools for GitHub, extensions, and notebooks (more...).
    • Image and Streamable HTTP support for MCP (more...).
  • Chat performance

    • Faster responses on repeat chat requests (more...).
    • Faster edits in agent mode (more...).
  • Editor experience

    • Improved multi-window support for chat and editors (more...).
    • Staged changes now easier to identify (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.99.3: March 2025 Recovery 3

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.99.2: March 2025 Recovery 2

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.99.1: March 2025 Recovery 1

Compare Source

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

Compare Source

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

    • Agent mode is available in VS Code Stable. Enable it by setting chat.agent.enabled:true (more...).
    • Extend agent mode with Model Context Protocol (MCP) server tools (more...).
    • Try the new built-in tools in agent mode for fetching web content, finding symbol references, and deep thinking (more...).
  • Code editing

    • Next Edit Suggestions is now generally available (more...).
    • Benefit from fewer distractions such as diagnostics events while AI edits are applied in the editor (more...).
  • Chat

    • Use your own API keys to access more language models in chat (preview) (more...).
    • Easily switch between ask, edit, and agent mode from the unified chat experience (more...).
    • Experience improved workspace search speed and accuracy with instant remote workspace indexing (more...).
  • 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

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.98.1: February 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.98.0: February 2025

Compare Source

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:


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.

withastro/astro

This PR contains the following updates:

Package Change Age Confidence
@astrojs/check (source) ^0.9.5^0.9.6 age confidence
@playwright/test (source) 1.56.11.57.0 age confidence
@tailwindcss/vite (source) ^4.1.17^4.1.18 age confidence
autoprefixer ^10.4.22^10.4.23 age confidence
cookie ^1.0.2^1.1.1 age confidence
devalue ^5.5.0^5.6.1 age confidence
expect-type ^1.2.2^1.3.0 age confidence
lit (source) ^3.3.1^3.3.2 age confidence
package-manager-detector ^1.5.0^1.6.0 age confidence
postcss-preset-env (source) ^10.4.0^10.6.0 age confidence
preact (source) ^10.27.2^10.28.1 age confidence
react (source) ^19.2.0^19.2.3 age confidence
react (source) 19.2.019.2.3 age confidence
react-dom (source) ^19.2.0^19.2.3 age confidence
react-dom (source) 19.2.019.2.3 age confidence
rollup (source) ^4.53.3^4.54.0 age confidence
sass ^1.94.2^1.97.1 age confidence
shiki (source) ^3.15.0^3.20.0 age confidence
smol-toml ^1.5.2^1.6.0 age confidence
svelte (source) ^5.43.14^5.46.1 age confidence
tailwindcss (source) ^4.1.17^4.1.18 age confidence
unifont ~0.6.0~0.7.1 age confidence
vue (source) ^3.5.24^3.5.26 age confidence
zod-to-json-schema ^3.25.0^3.25.1 age confidence

Release Notes

withastro/astro (@​astrojs/check)

v0.9.6

Patch Changes
microsoft/playwright (@​playwright/test)

v1.57.0

Compare Source

postcss/autoprefixer (autoprefixer)

v10.4.23

Compare Source

jshttp/cookie (cookie)

v1.1.1

Compare Source

Fixed

  • Overwrite value in passed in options (#​253) c66147c
    • When value was provided in serialize(key, value, { value }) the value in options was used instead of the value passed as an argument

v1.1.0

Compare Source

lit/lit (lit)

v3.3.2

Compare Source

Patch Changes
csstools/postcss-plugins (postcss-preset-env)

v10.6.0

Compare Source

December 27, 2025

v10.5.0

Compare Source

December 4, 2025

facebook/react (react)

v19.2.3: 19.2.3 (December 11th, 2025)

Compare Source

React Server Components

v19.2.2: 19.2.2 (December 11th, 2025)

Compare Source

React Server Components

v19.2.1: 19.2.1 (December 3rd, 2025)

Compare Source

React Server Components
unjs/unifont (unifont)

v0.7.1

Compare Source

compare changes

🚀 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
  • Increase strength of provider types (#​290)
  • Isolate cache keys by provider name and options (#​281)
💅 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

v0.7.0

Compare Source

StefanTerdell/zod-to-json-schema (zod-to-json-schema)

v3.25.1

Compare Source


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.

withastro/astro

This PR updates an outdated link in the README.md file of the tailwindcss example.

withastro/astro

Adding a changeset that was missing.

withastro/astro

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

withastro/starlight

Add icons for Chrome, Edge, Firefox and Safari

Description

  • Closes #3568
  • Just added 4 new icons

Last fetched:  |  Scheduled refresh: Every Saturday

See Customizing GitHub Activity Pages to configure your own

Inspired by prs.atinux.com