Skip to content

AstroEco is Releasing…

Display your GitHub releases using astro-loader-github-releases

withastro/starlight

Patch Changes

  • #4264 94e0985 Thanks @chrispezza! - Fixes a layout shift where the table of contents could be painted at the start of the content area and then jump to the end when a page's HTML arrived in several chunks

  • #4285 6f22edd Thanks @tunetheweb! - Improves hero image loading by adding fetchpriority="high" hint for browsers

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

  • #18422 07700d4 Thanks @cyface! - Fixes the /_image endpoint returning a 500 error when href points to a missing file or a file that isn't an image. It now responds with a 404 or 400 instead.

  • #18465 f31f143 Thanks @astro-factory! - Fixes a custom src/fetch.ts rendering truncated pages without islands or hoisted scripts in astro dev when prerenderEnvironment: 'node' is set

  • #18461 8b77891 Thanks @astro-factory! - Fixes options passed to sharpImageService() being ignored when generating images at build time with imageService: 'compile'

  • #18468 119263a Thanks @astro-factory! - Fixes astro sync, astro check, and astro build overwriting the dependency cache of a running astro dev server, which caused it to fail with "The file does not exist ... in the optimize deps directory" errors

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.4
withastro/astro

Patch Changes

  • #18430 dda9ec3 Thanks @Abhirup-99! - Speeds up content sync with experimental.collectionStorage: "chunked" by computing each character's UTF-8 width from its code point instead of encoding every character through TextEncoder. On a store of ~44k entries this cuts the chunking step from about 60 seconds to well under a second, with byte-identical output.

  • #18438 5e0eaa4 Thanks @astro-factory! - Fixes astro dev with @astrojs/cloudflare failing with Calling `require` for "node-fetch" when a server dependency such as cross-fetch requires node-fetch

  • #18376 a4e201d Thanks @okxint! - Fixes astro dev treating a stale lock file containing a Linux thread ID as a running Astro server. A successful process lookup with no matching PID now marks the lock as stale, preventing astro dev stop and astro dev --force from killing the unrelated process that owns the thread.

  • #18467 d1fb7d3 Thanks @astro-factory! - Fixes the defineConfig() types for i18n.defaultLocale, i18n.fallback, and i18n.domains so they accept a custom locale's path instead of its codes, matching how Astro validates and uses these values

  • #18475 cf27e70 Thanks @ematipico! - Bumps the minimum supported Node.js version to 22.23.4, which includes the fixes from the October 2026 Node.js security releases

    This is a patch release because the Node.js support and upgrade policy allows the Core team to raise the minimum Maintenance LTS version in a patch release when a disclosed and fixed Node.js security flaw affects Astro.

  • #18451 7a0ba6f Thanks @DenisCDev! - Fixes astro sync, astro check and astro build replacing the optimized dependencies of a dev server running in the same project, which broke framework islands in that dev server until it was restarted with --force

  • #18336 e943003 Thanks @astro-factory! - Fixes inline styles in dev so that framework-transformed CSS is used, such as scoped styles and v-bind() in Vue single-file components

  • #18399 829fc00 Thanks @astro-factory! - Fixes a dev server error (Could not find server component name) for a server:defer island that imports astro:actions or astro:config/server, when its page was not the first island page loaded after starting the server

  • #18330 4db9e0d Thanks @Samuteg! - Fixes the astro:env/server virtual module being generated with invalid JS in dev when any environment variable contains $ replacement patterns ($`, $&, $', $1, …). The inlined env JSON was passed as a string to String.replace, so e.g. the KITTY_PUBLIC_KEY value set by default in Kitty terminals corrupted the module and broke dev with Failed to parse source for import analysis

  • Updated dependencies [cf27e70]:

    • @astrojs/telemetry@3.4.1
    • @astrojs/markdown-satteri@0.4.5
withastro/astro

Patch Changes

  • Updated dependencies [cf27e70]:
    • @astrojs/prism@4.1.1
withastro/astro

Patch Changes

  • Updated dependencies [cf27e70]:
    • @astrojs/prism@4.1.1
withastro/astro

Patch Changes

  • #18455 7af66fc Thanks @astro-factory! - Fixes the astro-check binary ignoring its first two command-line arguments, so flags such as --help, --root, --watch, and --tsconfig are respected again. If your scripts padded the arguments to work around this (for example, astro-check -- -- --tsconfig ./tsconfig.app.json), remove the padding.
  • Updated dependencies [044148d]:
    • @astrojs/language-server@2.17.3
withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

  • #18460 044148d Thanks @Princesseuh! - Speeds up astro check by skipping a 10 ms editor-cancellation wait that ran before checking each file
withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

  • #18439 3e80f04 Thanks @hanford! - Updates Partytown to 1.0.1, which preserves queued events when falling back to the main thread with dataLayer.push forwarded using preserveBehavior.
withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

  • #18462 f170236 Thanks @ematipico! - Updates the @cloudflare/vite-plugin to the latest. The dependency isn't pinned anymore.
withastro/astro

Patch Changes

  • #18450 2938cdb Thanks @ematipico! - Updates the peer dependency of astro to 7.4.0. You no longer need to install 7.4.0-beta anymore.

  • #18450 2938cdb Thanks @ematipico! - Updates @cloduflare/vite-plugin to 2.0.0-beta.v.1.

  • #18196 e6a2e90 Thanks @swissky! - Fails the build with a migration hint when a project has a wrangler.json, wrangler.jsonc, or wrangler.toml file but no cloudflare.config.ts. Previously the build succeeded and the Worker name, bindings, and entrypoint from the Wrangler file were silently ignored. Run npx cf migrate --bundler vite to generate cloudflare.config.ts from your existing Wrangler configuration.

withastro/astro

Patch Changes

  • #18398 9731465 Thanks @ump45nose! - Fixes Vue SSR concatenating Astro slot HTML character by character when the slot value is a String object (Astro's SlotString). StaticHtml now coerces the value with String(...) before passing it to innerHTML.
withastro/astro

Patch Changes

  • #18411 48ec171 Thanks @matthewp! - Uses the Vercel Bun runtime for serverless functions when the project is built with Bun (e.g. bunx --bun astro build)
withastro/astro

Patch Changes

  • #18382 c75e897 Thanks @Llois41! - Fixes the standalone server not logging Server listening on … when HOST is an IP address, which happens on Node.js 26.12 and later
withastro/astro

Patch Changes

  • #18351 9669d81 Thanks @astro-factory! - Fixes Cannot find package 'prismjs' errors when prismjs isn't hoisted, such as with pnpm's global virtual store or hoist=false
  • Updated dependencies []:
    • @astrojs/underscore-redirects@1.0.4
withastro/astro

Patch Changes

  • #18445 d736df7 Thanks @astro-factory! - Fixes the --preserveWatchOutput help text, which described the opposite of the flag's behavior. Setting it to true keeps output between checks in watch mode.

  • #18444 c55134c Thanks @astro-factory! - Fixes astro check --watch exiting immediately when the project path contains node_modules or .git

withastro/astro

Patch Changes

  • #18425 6fdc36e Thanks @astro-factory! - Preserves the last modified date of cached optimized images and incrementally restored build output when copying them into the build output on all platforms

  • #18419 395d195 Thanks @astro-factory! - Fixes a typo in the error message shown when a font cssVariable is invalid

  • #18401 484822f Thanks @danielmlr! - Fixes a bug where projects whose path contains an apostrophe (') failed to load sessions, middleware, a cache provider, or a src/fetch.ts handler

  • #18407 a6e00be Thanks @astro-factory! - Fixes a TSCONFIG_ERROR during astro build when a parent directory contains a tsconfig.json that cannot be resolved, such as one extending astro/tsconfigs/strict without installed dependencies

  • #18427 908f167 Thanks @astro-factory! - Fixes an Unterminated string build error when application code imports from astro/config (for example, fontProviders in a shared fonts module)

  • #18428 40e7d54 Thanks @astro-factory! - Fixes missing styles in production builds for conditionally rendered framework components (e.g. Svelte components inside {#if} blocks) imported by a hydrated island

  • #18424 617ff59 Thanks @astro-factory! - Fixes style-only HMR in .astro components falling back to a full page reload when a PostCSS plugin (such as @unocss/postcss) lists the component as a dependency of its own style

  • #18274 70834bb Thanks @Princesseuh! - Fixes increasing memory usage when editing the Astro configuration while the dev server is running

withastro/astro

Minor Changes

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

withastro/astro

Patch Changes

  • Updated dependencies [b7a1bd9]:
    • @astrojs/internal-helpers@0.13.0
withastro/astro

Minor Changes

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

withastro/astro

Patch Changes

  • #18335 7526077 Thanks @lx3133584! - Fix silent exit with code 0 on EADDRINUSE in standalone mode
  • Updated dependencies [b7a1bd9]:
    • @astrojs/internal-helpers@0.13.0
withastro/astro

Patch Changes

  • Updated dependencies [b7a1bd9]:
    • @astrojs/internal-helpers@0.13.0
    • @astrojs/underscore-redirects@1.0.4
withastro/astro

Minor Changes

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

Patch Changes

  • Updated dependencies [b7a1bd9]:
    • @astrojs/internal-helpers@0.13.0
    • @astrojs/markdown-satteri@0.4.4
withastro/astro

Minor Changes

Patch Changes

  • Updated dependencies [b7a1bd9, 2715958]:
    • @astrojs/internal-helpers@0.13.0
    • @astrojs/prism@4.1.0
withastro/astro

Minor Changes

  • #18177 7d814e5 Thanks @Princesseuh! - Reworks image processing on prerendered pages to use Astro's built-in image pipeline. Requires astro@^7.4.0

    Images on prerendered pages now behave the same as on other adapters. Images optimized with the Cloudflare Images binding are now properly cached between builds, and image options such as assetQueryParams and build.assetsPrefix are applied the same way as everywhere else.

Patch Changes

  • Updated dependencies [b7a1bd9]:
    • @astrojs/internal-helpers@0.13.0
    • @astrojs/underscore-redirects@1.0.4
withastro/astro

Minor Changes

  • #17894 b7a1bd9 Thanks @Princesseuh! - Adds a new --timings flag to astro build to help you find what slows down your builds

    When a build takes longer than expected, it can be hard to tell whether the cause is an integration, a Markdown processor plugin, image processing, or even syntax highlighting. Add the --timings flag to your build command to print a summary once the build finishes:

    astro build --timings

    This is helpful to decide what to optimize first, or to compare build times before and after a change to your project.

  • #17830 a937b0d Thanks @florian-lefebvre! - Adds a new optional getFontProperties() callback to font providers

    Font providers can now expose the weights, styles, subsets and formats a font family actually has. Astro uses it when resolving your font configuration to warn about values a provider cannot serve, for example a weight a font family does not offer.

    All built-in providers implement it. If you maintain a custom font provider, implementing this callback is optional for now but it will be required in Astro 8:

    import type { FontProvider } from 'astro';
    
    const provider: FontProvider = {
    	name: 'my-provider',
    	resolveFont: ({ familyName }) => {
    		// ...
    	},
    	getFontProperties: ({ familyName }) => ({
    		weights: ['400', '700'],
    		styles: ['normal', 'italic'],
    		subsets: ['latin'],
    		formats: ['woff2'],
    	}),
    };
  • #17830 a937b0d Thanks @florian-lefebvre! - Adds a fetch() function to the font provider init() context

    This function requests a provider API, retrying transient failures and more. It lets providers that wrap a 3rd-party unifont provider pass the context to it directly:

    import type { FontProvider } from 'astro';
    import type { InitializedProvider } from 'unifont';
    import { acmeProvider } from '@acme/unifont-provider';
    
    export function acmeFontProvider(): FontProvider {
    	const provider = acmeProvider();
    	let initializedProvider: InitializedProvider | undefined;
    	return {
    		name: provider._name,
    		async init(context) {
    			initializedProvider = await provider(context);
    		},
    		// ...
    	};
    }
  • #18015 0b30239 Thanks @florian-lefebvre! - Adds experimental.redirectPage, letting you provide your own src/pages/3xx.astro in place of the redirect page Astro generates in static builds.

    A static site has no server to send an HTTP Location header, so Astro generates a small HTML page with a <meta http-equiv="refresh"> tag for each redirect it builds:

    • Your redirects entries
    • Astro.redirect() calls in prerendered pages
    • i18n redirects

    That page's markup, wording, and refresh delay were fixed, so you could not brand or translate it.

    To enable this feature, add the experimental flag to your Astro config:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        redirectPage: true,
      },
    });

    Then create src/pages/3xx.astro. Astro renders it once per redirect, passing that redirect's details as props:

    ---
    // src/pages/3xx.astro
    import type { RedirectPageProps as Props } from 'astro';
    
    const { from, to, status, delay } = Astro.props;
    ---
    
    <html lang="en">
      <head>
        <meta http-equiv="refresh" content={`${delay};url=${to}`} />
        <meta name="robots" content="noindex" />
        <title>Redirecting…</title>
      </head>
      <body>
        <p>This page has moved. <a href={to}>Continue to {to}</a>.</p>
      </body>
    </html>

    Your page must render a <meta http-equiv="refresh"> tag pointing at to, because in a static build that tag is the redirect. Astro logs a warning during the build if it is missing.

    See the experimental redirect page documentation for more information.

  • #18265 910ee69 Thanks @astro-factory! - Adds a notFound() handler to astro/fetch and astro/hono that renders the custom 404 page when no route matches, including a prerendered 404.astro

    Add it before pages() in a custom worker or server entrypoint that does not run inside App.render, such as a Hono app used directly as a Cloudflare worker. Without it, pages() and middleware() return an empty 404 with an internal X-Astro-Error header for unmatched routes. astro() already includes this handling.

    import { Hono } from 'hono';
    import { notFound, pages } from 'astro/hono';
    import { cf } from '@astrojs/cloudflare/hono';
    
    const app = new Hono();
    app.use(cf());
    app.use(notFound());
    app.use(pages());
    export default app;
  • #18177 7d814e5 Thanks @Princesseuh! - Adds support for separate build and runtime image services

    image.service now also accepts a build and a runtime service. The build service optimizes images on prerendered pages when you build your site, and is also used during development. The runtime service handles images on on-demand rendered pages and the image endpoint of your deployed site.

    The following example uses Sharp to optimize images on prerendered pages, and an image CDN for on-demand rendered pages:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      image: {
        service: {
          build: { entrypoint: 'astro/assets/services/sharp' },
          runtime: { entrypoint: 'my-image-cdn-service' },
        },
      },
    });

    Changes for integration authors

    config.image.service keeps the shape the user configured it with. When a project sets build and runtime services, config.image.service.entrypoint and config.image.service.config are undefined.

    If your integration reads image.service, check for the runtime property to get the service you need:

    'astro:config:done': ({ config }) => {
      const { service } = config.image;
      const runtimeService = 'runtime' in service ? service.runtime : service;
    
      if (runtimeService.entrypoint === 'astro/assets/services/sharp') {
        // ...
      }
    },

    Setting image.service with updateConfig() replaces the existing service instead of merging with it when the two use different shapes. For example, setting a single service in a project that uses build and runtime services replaces both.

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

  • #18313 71e2b24 Thanks @matthewp! - Allows integrations to control where Astro writes client, server, and prerender build output.

    Custom prerenderers can access the final output locations through the new outputDirectories context:

    setPrerenderer((defaultPrerenderer, { outputDirectories }) => {
      const { client, server, prerender } = outputDirectories
    
      return createPrerenderer({
        defaultPrerenderer,
        client,
        server,
        prerender,
      })
    })
  • #18177 7d814e5 Thanks @Princesseuh! - Lets custom prerenderers report the images used on prerendered pages

    Astro now generates images on prerendered pages from the image information that a prerenderer's getStaticPaths() and render() return. If your prerenderer wraps Astro's default one, pass this information through:

    setPrerenderer((defaultPrerenderer) => ({
      name: 'my-prerenderer',
      async setup() {
        await defaultPrerenderer.setup?.();
      },
      async getStaticPaths() {
        const result = await defaultPrerenderer.getStaticPaths();
        const { paths, metadata } = Array.isArray(result) ? { paths: result } : result;
        return { paths: paths.filter(({ pathname }) => !pathname.startsWith('/drafts')), metadata };
      },
      render(request, options) {
        return defaultPrerenderer.render(request, options);
      },
      async teardown() {
        await defaultPrerenderer.teardown?.();
      },
    }));

    Returning a plain array from getStaticPaths() or a plain Response from render() still works, but is deprecated: images used on those pages are not generated.

  • #17932 b905ff1 Thanks @Princesseuh! - Adds support for experimental parallel prerendering

    This experimental feature makes astro build render your static pages in parallel, using multiple CPU cores at once instead of one. On sites with many pages, this can significantly reduce build times, at the cost of higher memory usage.

    To enable this feature, add the experimental flag in your Astro config:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        parallelPrerender: true,
      },
    });

    By default, Astro uses all available CPU cores but one. Each additional worker increases the memory used by your build. If your build runs out of memory, or does not get faster, set workers to a lower number:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        parallelPrerender: {
          workers: 4,
        },
      },
    });

    Each worker renders as many pages at once as your build.concurrency setting allows.

    This feature has no effect when your adapter provides its own way of prerendering pages. Among official adapters, this only applies to @astrojs/cloudflare. Astro logs a warning during the build when the flag is ignored.

    For more information on enabling and using this feature in your project, see the experimental parallel prerendering docs.

Patch Changes

  • #18313 71e2b24 Thanks @matthewp! - Fixes deployment integrations being unable to use Vite manifests when preparing build output

  • #18270 0c3bf11 Thanks @ArmandPhilippot! - Fixes the JSDoc for CSP utilities to point to the render context reference in docs.

  • #18368 1f04637 Thanks @43081j! - Replaces internal use of find-proc with tinyps.

  • #18355 59b9cc0 Thanks @matthewp! - Fixes prerender errors being silently swallowed when using a custom src/fetch.ts with an adapter that prerenders in its own runtime, such as @astrojs/cloudflare. Previously, a page that threw during prerendering was written as an empty HTML file and the build succeeded. The build now fails with the underlying error.

  • #18177 7d814e5 Thanks @Princesseuh! - Fixes original images being kept despite only width or height being read.

  • #18353 af54bfa Thanks @astro-factory! - Fixes glob() loader swallowing rendering errors during content sync, which allowed astro build to exit successfully (code 0) even when a remark/rehype plugin threw an error

  • #18271 23e8e28 Thanks @ArmandPhilippot! - Fixes the sync command description in astro help, which only mentioned content collections.

  • Updated dependencies [b7a1bd9, 2715958]:

    • @astrojs/internal-helpers@0.13.0
    • @astrojs/markdown-satteri@0.4.4
    • @astrojs/telemetry@3.4.0
withastro/astro

Patch Changes

  • #17894 b7a1bd9 Thanks @Princesseuh! - Adds the measurements that astro build --timings reports for Markdown processing and syntax highlighting.
  • Updated dependencies [b7a1bd9, 2715958]:
    • @astrojs/internal-helpers@0.13.0
    • @astrojs/prism@4.1.0
withastro/astro

Patch Changes

  • #17894 b7a1bd9 Thanks @Princesseuh! - Adds the measurements that astro build --timings reports for Markdown processing and syntax highlighting.
  • Updated dependencies [b7a1bd9, 2715958]:
    • @astrojs/internal-helpers@0.13.0
    • @astrojs/prism@4.1.0
withastro/astro

Minor Changes

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

Patch Changes

  • Updated dependencies [b7a1bd9]:
    • @astrojs/internal-helpers@0.13.0
withastro/astro

Minor Changes

Patch Changes

  • Updated dependencies [b7a1bd9]:
    • @astrojs/internal-helpers@0.13.0
withastro/astro

Minor Changes

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

withastro/astro

Minor Changes

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

withastro/astro

Minor Changes

  • #17894 b7a1bd9 Thanks @Princesseuh! - Adds the measurements that astro build --timings reports for Markdown processing and syntax highlighting.
withastro/astro

Minor Changes

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

withastro/astro

Minor Changes

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

Patch Changes

  • #18218 acc0460 Thanks @KTrain5169! - create-astro no longer places a CLAUDE.md in projects, as Claude Code now supports AGENTS.md.
withastro/astro

Minor Changes

  • #18277 2715958 Thanks @florian-lefebvre! - Increases the minimum Node.js version to 22.22.0

    The minimum supported Node.js version is now 22.22.0, the latest Node.js 22 release supported by StackBlitz. This change is in line with Astro's Node.js support policy.

withastro/astro

Patch Changes

  • #18339 fcc050c Thanks @astro-factory! - Fixes on-demand routes failing with "Cannot find native binding" on Vercel, caused by the serverless function loading rolldown at runtime
withastro/starlight

Patch Changes

  • #4252 40a2584 Thanks @olafur-andri! - Adds Icelandic language support

  • #4229 e4a3d82 Thanks @HiDeoo! - Fixes a potential issue with icons being cut off in Firefox when pinch-zooming.

  • #4226 fb562dd Thanks @HiDeoo! - Fixes an issue where pages not importing components from @astrojs/starlight/components included styles of Starlight components used on other pages.

  • #4250 531af7d Thanks @HiDeoo! - Fixes Failed to resolve dependency warnings logged when running the development server in projects using the Cloudflare adapter.

  • #4229 e4a3d82 Thanks @HiDeoo! - Fixes the codePen and node icons slightly extending beyond their bounding box.

withastro/astro

Patch Changes

  • #18263 882dd98 Thanks @florian-lefebvre! - Refactors internal bundling and code transforms to use Vite's Oxc-based transformWithOxc and Rolldown instead of esbuild. These packages no longer depend on esbuild directly.
withastro/astro

Patch Changes

  • #18263 882dd98 Thanks @florian-lefebvre! - Refactors internal bundling and code transforms to use Vite's Oxc-based transformWithOxc and Rolldown instead of esbuild. These packages no longer depend on esbuild directly.
  • Updated dependencies []:
    • @astrojs/underscore-redirects@1.0.4
withastro/astro

Patch Changes

  • #18263 882dd98 Thanks @florian-lefebvre! - Refactors internal bundling and code transforms to use Vite's Oxc-based transformWithOxc and Rolldown instead of esbuild. These packages no longer depend on esbuild directly.
withastro/astro

Patch Changes

  • #18263 882dd98 Thanks @florian-lefebvre! - Refactors internal bundling and code transforms to use Vite's Oxc-based transformWithOxc and Rolldown instead of esbuild. These packages no longer depend on esbuild directly.
withastro/astro

Patch Changes

  • #18263 882dd98 Thanks @florian-lefebvre! - Removes the automatic allowScripts and allowBuilds pre-approval from generated projects. Astro's dependencies no longer run install scripts, so the workaround is no longer needed.
withastro/astro

Patch Changes

  • #18293 28e7410 Thanks @astro-factory! - Fixes Astro.cache being undefined when a custom 404 or 500 page is rendered by the error handler, for example after a request to an API route with an HTTP method the route doesn't export

  • #18298 0e9e857 Thanks @matthewp! - Fixes astro add removing existing allowBuilds approvals from pnpm-workspace.yaml with pnpm v11.0–v11.22

  • #18263 882dd98 Thanks @florian-lefebvre! - Refactors internal bundling and code transforms to use Vite's Oxc-based transformWithOxc and Rolldown instead of esbuild. These packages no longer depend on esbuild directly.

  • #18290 31f13c3 Thanks @astro-factory! - Fixes the glob() loader not reloading changed files in dev when the pattern starts with an extglob such as !(drafts)/**/*.md

withastro/astro

Patch Changes

  • #18180 6fb83da Thanks @matthewp! - Fixes Netlify Image CDN patterns generated from image.remotePatterns pathnames ending in /** so they only match paths below that directory, consistent with Astro's own pattern matching. Previously, a pattern like /public/** also matched sibling paths sharing the prefix, such as /public-assets/.
  • Updated dependencies []:
    • @astrojs/underscore-redirects@1.0.4
withastro/astro

Patch Changes

withastro/astro

Patch Changes

  • #18266 cba76cc Thanks @astro-factory! - Fixes a build error when a Markdown content collection entry loaded with glob({ deferRender: true }) has a layout frontmatter property. layout is now ignored for content collection entries, as documented.

  • #18287 38f6793 Thanks @astro-factory! - Fixes astro add cloudflare failing to install dependencies with pnpm v11+ by approving the workerd build script, and shows the package manager's error output when astro add fails to install dependencies

  • #18222 fcf6ed6 Thanks @mingjunlu! - Fixes an issue where AVIF images were served as image/heif instead of image/avif in the dev server.

  • #18240 de4df06 Thanks @astro-factory! - Fixes the cache() handler from astro/hono and astro/fetch throwing a TypeError when a cache provider is configured. It now registers the cache provider before rendering, so Astro.cache is available to downstream handlers like pages().

  • #18268 547b572 Thanks @astro-factory! - Fixes security.checkOrigin rejecting cross-origin requests with non-form content types such as application/json. As documented, the check only applies to unsafe requests that have no content-type header or one of application/x-www-form-urlencoded, multipart/form-data, or text/plain.

withastro/astro

Patch Changes

  • #18254 36f3a0c Thanks @astro-factory! - Fixes middleware rewrites returning 404 instead of 200 when the 404 page is server-rendered
  • Updated dependencies [6987261, 62b13ba]:
    • @astrojs/internal-helpers@0.12.0
withastro/astro

Patch Changes

  • 1d9e910 Thanks @matthewp! - Validates the Host header against security.allowedDomains when using the Node adapter
  • Updated dependencies [6987261, 62b13ba]:
    • @astrojs/internal-helpers@0.12.0
withastro/astro

Patch Changes

  • Updated dependencies [6987261, 62b13ba]:
    • @astrojs/internal-helpers@0.12.0
    • @astrojs/underscore-redirects@1.0.4
withastro/astro

Patch Changes

  • #18099 6987261 Thanks @renovate! - Adds YAML parsing with timestamp and merge key support, and formats YAML errors consistently across Astro, Markdown, MDX, and Markdoc.
  • Updated dependencies [6987261, 62b13ba]:
    • @astrojs/internal-helpers@0.12.0
    • @astrojs/markdown-satteri@0.4.3
withastro/astro

Patch Changes

  • #18099 6987261 Thanks @renovate! - Adds YAML parsing with timestamp and merge key support, and formats YAML errors consistently across Astro, Markdown, MDX, and Markdoc.
  • Updated dependencies [6987261, 62b13ba]:
    • @astrojs/internal-helpers@0.12.0
withastro/astro

Patch Changes

  • Updated dependencies [6987261, 62b13ba]:
    • @astrojs/internal-helpers@0.12.0
withastro/astro

Patch Changes

  • #18099 6987261 Thanks @renovate! - Adds YAML parsing with timestamp and merge key support, and formats YAML errors consistently across Astro, Markdown, MDX, and Markdoc.

  • #18139 d047b5c Thanks @breken-ai! - Fixes Markdown code blocks with languages ending in a symbol, such as c#, c++, and f#, being highlighted as c or f

  • Updated dependencies [6987261, 62b13ba]:

    • @astrojs/internal-helpers@0.12.0
withastro/astro

Patch Changes

  • Updated dependencies [6987261, 62b13ba]:
    • @astrojs/internal-helpers@0.12.0
withastro/astro

Patch Changes

  • Updated dependencies [6987261, 62b13ba]:
    • @astrojs/internal-helpers@0.12.0
withastro/astro

Patch Changes

withastro/astro

Minor Changes

  • #18099 6987261 Thanks @renovate! - Adds YAML parsing with timestamp and merge key support, and formats YAML errors consistently across Astro, Markdown, MDX, and Markdoc.

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

  • Updated dependencies [c68d737, c68d737]:
    • astro@7.4.0-beta.0
    • @astrojs/underscore-redirects@1.0.4
withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/starlight

Patch Changes

withastro/starlight

Patch Changes

  • #4149 fa10e87 Thanks @ematipico! - Optimizes rendering of large nested sidebars

  • #4215 f791de6 Thanks @HiDeoo! - Adds a new seti:coffee icon for CoffeeScript files in the <FileTree> component.

  • #4215 f791de6 Thanks @HiDeoo! - Fixes <FileTree> icons for .ejs and npm-debug.log files displaying the default file icon.

withastro/astro

Patch Changes

  • #18036 f4444eb Thanks @astro-factory! - Fixes an incompatibility where @astrojs/mdx v8 could be installed with astro versions that bundle an older @astrojs/markdown-satteri lacking MDX support. Also improves the error message when the processor is too old to suggest updating astro itself.
  • Updated dependencies [3fd16ee, 8358d59]:
    • @astrojs/markdown-satteri@0.4.2
withastro/astro

Patch Changes

  • #17946 3fd16ee Thanks @odysseus0! - Fix syntax highlighting for fenced code blocks when raw HTML is enabled.

  • #18046 8358d59 Thanks @Princesseuh! - Fixes satteriHeadingIdsPlugin sharing Slugger state across documents when reused as a user hast plugin, which caused headings with the same text in different posts to receive incorrect numeric suffixes

withastro/astro

Minor Changes

withastro/astro

Patch Changes

  • #17578 7cc0b00 Thanks @renovate! - Fixes a case where rich content diagnostics and snippet edits would not work
withastro/astro

Major Changes

  • #17951 e5b0ac4 Thanks @hanford! - Migrates the React integration to @vitejs/plugin-react v6, using Oxc for JSX and Fast Refresh. Removes the babel integration option; projects with custom Babel transforms must configure @rolldown/plugin-babel under vite.plugins instead.

    Adds an opt-in compiler option for the Oxc-based React Compiler. Install oxc-transform-react and enable it in your Astro config:

    import react from '@astrojs/react';
    
    export default {
      integrations: [react({ compiler: true })],
    };

    The compiler memoizes client components and hooks. Server rendering is not compiled. The target defaults to the installed React major version; React 17 and 18 projects also need react-compiler-runtime installed. Pass an options object to configure the compiler, for example compiler: { compilationMode: 'annotation' }. The integration's include and exclude options apply, and dependencies and Astro files are excluded.

    Migrating custom Babel transforms

    The integration uses @vitejs/plugin-react v6 and Oxc for JSX and Fast Refresh. The babel integration option has been removed in this major release.

    If you use custom Babel transforms, install @rolldown/plugin-babel and @babel/core, keeping your existing Babel plugins and presets installed:

    pnpm add -D @rolldown/plugin-babel @babel/core

    Move your Babel plugins and presets from react({ babel: ... }) to babel() in vite.plugins. For example, migrate a project using babel-plugin-styled-components from:

    import react from '@astrojs/react';
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      integrations: [react({ babel: { plugins: ['babel-plugin-styled-components'] } })],
    });

    To:

    import react from '@astrojs/react';
    import babel from '@rolldown/plugin-babel';
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      integrations: [react()],
      vite: {
        plugins: [
          babel({
            plugins: ['babel-plugin-styled-components'],
          }),
        ],
      },
    });

    This also works with react({ compiler: true }). Babel runs before Oxc transforms TypeScript and JSX. The Babel plugin automatically enables parsing for .jsx, .ts, and .tsx files. It does not load babel.config.js or .babelrc files; pass the options directly to babel(). The old babel callback is not supported; use the plugin's overrides and preset hooks for conditional transforms.

    Do not enable babel-plugin-react-compiler on the same components as the Oxc compiler.

withastro/astro

Patch Changes

  • #17986 b1f9088 Thanks @hanford! - Updates @qwik.dev/partytown from 0.13.2 to 0.14.4, bringing fixes for analytics event forwarding and iframe loading, support for Google Tag Manager's Tag Assistant preview, and automatic execution of scripts added after client-side navigation.
withastro/starlight

Patch Changes

withastro/astro

Patch Changes

  • #17985 7a6e7f7 Thanks @astro-factory! - Fixes Vue render-function components failing to build when @astrojs/react is also enabled. React's renderer check no longer crashes on non-React object components, and Vue's check now recognizes defineComponent() components that use a setup function returning a render function.
withastro/astro

Patch Changes

  • #17971 0037c1a Thanks @matthewp! - Fixes aborted request bodies causing duplicate unhandled rejection logs in standalone mode when using src/fetch.ts

  • #17964 01395b8 Thanks @astro-factory! - Fixes trailing-slash redirects truncating query strings that contain a second ? character

withastro/astro

Patch Changes

  • #17651 504333c Thanks @sxzz! - Refactors internal version handling to use a smaller, ESM-native dependency
withastro/astro

Minor Changes

  • #17676 49d4294 Thanks @Princesseuh! - Improves type checking and editor support for .astro files.

    The language server now uses our all-new Biome powered astro2tsx implementation. This new version has much better support for incomplete syntax, generic types and various edge cases.

    In the vast majority of cases, no changes should be required to your code, and any change should be the result of more accurate types or behavior.

Patch Changes

  • #17916 8eaa4f2 Thanks @matthewp! - Fixes organize imports across frontmatter and multiple script tags

  • #17542 fae64dd Thanks @IAmYhvr! - Fixes the AstroComponent suffix not being removed from Svelte and Vue imports in .astro files.

withastro/astro

Patch Changes

  • #17651 504333c Thanks @sxzz! - Refactors internal version handling to use a smaller, ESM-native dependency
withastro/astro

Minor Changes

  • #17676 49d4294 Thanks @Princesseuh! - Improves type checking and editor support for .astro files.

    The language server now uses our all-new Biome powered astro2tsx implementation. This new version has much better support for incomplete syntax, generic types and various edge cases.

    In the vast majority of cases, no changes should be required to your code, and any change should be the result of more accurate types or behavior.

Patch Changes

  • #17542 fae64dd Thanks @IAmYhvr! - Fixes the AstroComponent suffix not being removed from Svelte and Vue imports in .astro files.
withastro/astro

Patch Changes

  • #17985 7a6e7f7 Thanks @astro-factory! - Fixes Vue render-function components failing to build when @astrojs/react is also enabled. React's renderer check no longer crashes on non-React object components, and Vue's check now recognizes defineComponent() components that use a setup function returning a render function.
withastro/astro

Patch Changes

  • #17896 a548223 Thanks @matthewp! - Fixes <script>/<style> rendering in MDX so that only literal content (including content injected by remark/rehype plugins) is treated as trusted markup. A dynamic value passed as a <script>/<style> child (e.g. <script>{value}</script>) is now escaped like any other element's content instead of being rendered raw. Use set:html to explicitly opt a dynamic value back into raw rendering.
withastro/astro

Patch Changes

  • #17896 a548223 Thanks @matthewp! - Fixes <script>/<style> rendering in MDX so that only literal content (including content injected by remark/rehype plugins) is treated as trusted markup. A dynamic value passed as a <script>/<style> child (e.g. <script>{value}</script>) is now escaped like any other element's content instead of being rendered raw. Use set:html to explicitly opt a dynamic value back into raw rendering.
withastro/starlight

Minor Changes

  • #3572 292fb17 Thanks @HiDeoo! - Distributes package as JavaScript files with dedicated type declaration files instead of TypeScript source files.

Last fetched:  | Scheduled refresh: Every Saturday

See Customizing GitHub Activity Pages to configure your own

Inspired by releases.antfu.me