Skip to content

AstroEco is Releasing…

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

withastro/astro

Patch Changes

  • #17399 4b03702 Thanks @matthewp! - Fixes encoded request paths being routed incorrectly when using domain-based i18n
withastro/astro

Minor Changes

  • #17302 5f4dc03 Thanks @astrobot-houston! - Adds a new deferRender option to the glob() content loader

    When set to true, renderable entries (such as Markdown) are not rendered during content sync. Instead, rendering is deferred until the entry is actually rendered in a page, using the same on-demand path that .mdx files already use.

    This reduces memory usage during astro build for large collections whose rendered output is much larger than the source — for example, Markdown that uses heavy rehype plugins like rehype-katex. Such builds could previously run out of memory while storing the eagerly-rendered HTML for every entry.

    // src/content.config.ts
    import { defineCollection } from 'astro:content';
    import { glob } from 'astro/loaders';
    
    const docs = defineCollection({
      loader: glob({ pattern: '**/*.md', base: 'src/content/docs', deferRender: true }),
    });

    By default deferRender is false, preserving the existing behavior of rendering entries eagerly during sync so their rendered HTML can be cached across builds.

  • #17296 30698a2 Thanks @ematipico! - Adds a new experimental collectionStorage option for controlling how the content layer persists its data store

    By default, Astro serializes the entire content layer data store to a single file (.astro/data-store.json). For very large content collections, this file can grow large enough to hit platform file-size limits.

    Set experimental.collectionStorage: 'chunked' to instead split the data store across many smaller, content-addressed files inside a .astro/data-store/ directory, described by a manifest:

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

    Because each part file is named by a hash of its contents, unchanged parts keep the same name across builds and are not rewritten, and identical parts are deduplicated. The default value is 'single-file', which preserves the current behavior.

  • #17214 44c4989 Thanks @ematipico! - Adds support for the more specific CSP directives script-src-elem, script-src-attr, style-src-elem, and style-src-attr through a new kind option.

    Previously, CSP was only scoped to generic script-src/style-src directives. Now each source or hash can be scoped to a narrower directive — for example, to allow inline style attributes (such as those from define:vars or Shiki) without loosening the policy for your <style> and <link> elements.

    Scoping sources and hashes in your config

    Each entry in resources and hashes can be an object with a kind property. Depending on whether you use scriptDirective or styleDirective, "element" targets script-src-elem or style-src-elem, "attribute" targets script-src-attr or style-src-attr, and "default" (the same as a bare string or hash) targets script-src or style-src.

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      security: {
        csp: {
          scriptDirective: {
            resources: [{ resource: 'https://cdn.example.com', kind: 'element' }],
          },
          styleDirective: {
            resources: [{ resource: "'unsafe-inline'", kind: 'attribute' }],
          },
        },
      },
    });

    Scoping at runtime

    The same kind option is available on the runtime CSP API, where the existing methods now also accept an object:

    ctx.csp.insertScriptResource({ resource: 'https://cdn.example.com', kind: 'element' });
    ctx.csp.insertStyleResource({ resource: "'unsafe-inline'", kind: 'attribute' });
  • #17258 84814d4 Thanks @astrobot-houston! - Adds a new format() option to the paginate utility. The format() option is a function that accepts the current URL of the page, and returns a new URL.

    For example, when your host only supports URLs using the .html extension, you can use format() to add it to the generated URLs:

    ---
    export async function getStaticPaths({ paginate }) {
      // Load your data with fetch(), getCollection(), etc.
      const response = await fetch(`https://pokeapi.co/api/v2/pokemon?limit=150`);
      const result = await response.json();
      const allPokemon = result.results;
    
      // Return a paginated collection of paths for all items
      return paginate(allPokemon, {
        pageSize: 10,
        format: (url) => `${url}.html`,
      });
    }
    
    const { page } = Astro.props;
    ---
  • #17331 7db6420 Thanks @matthewp! - Adds a --ignore-lock flag to astro dev for starting a dev server without checking or writing the lock file, so it can run alongside an already-running dev server for the same project.

    The new instance is not tracked by astro dev stop, astro dev status, or astro dev logs. --ignore-lock cannot be combined with --background (or an auto-detected AI agent environment, which runs dev servers in the background automatically) or --force, since those rely on the lock file.

    astro dev --ignore-lock
  • #17389 16de021 Thanks @florian-lefebvre! - Allows passing URL entrypoints when configuring the logger

    Matching other APIs like session drivers or font providers, the logger entrypoint can now be a URL:

    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      logger: {
        entrypoint: new URL('./logger.js', import.meta.url),
      },
    });

Patch Changes

  • #17332 4407483 Thanks @astrobot-houston! - Fixes the JSON logger crashing with process is not defined in non-Node runtimes like Cloudflare's workerd. The JSON logger now uses console.log/console.error instead of process.stdout/process.stderr, matching the pattern already used by the console logger.

  • #17391 186a1e7 Thanks @florian-lefebvre! - Fixes a case where an integration could not update the logger with updateConfig()

  • #17394 d9f99e1 Thanks @matthewp! - Fixes element-specific CSP directives to preserve the existing behavior of configured script and style resources

  • #17374 b2d1b3e Thanks @astrobot-houston! - Fixes dev server returning 404 for ?url imported assets when accessed via browser navigation

  • #17390 ed71eaf Thanks @florian-lefebvre! - Removes an unused and undocumented generic from the AstroLoggerDestination type

  • #17393 092da56 Thanks @matthewp! - Hardens generated transition styles, development metadata, and server island URLs when embedding dynamic values

withastro/astro

Patch Changes

withastro/astro

Patch Changes

  • #17286 a249317 Thanks @astrobot-houston! - Fixes the first browser visit after astro dev starts triggering an immediate full page reload

  • #17369 a94d4a5 Thanks @adamchal! - Fixes an issue where a client island could permanently fail to hydrate if the first attempt to load its component failed. Islands now reliably recover from transient import failures, which previously did not work for React components during astro dev.

withastro/astro

Patch Changes

  • #17368 ee74c28 Thanks @matthewp! - Fixes the generated Netlify Image CDN remote_images patterns so that regex metacharacters (such as .) in image.remotePatterns (hostname, pathname) and image.domains are matched literally instead of behaving like wildcards. This makes the generated patterns consistent with how Astro matches these values elsewhere.

  • Updated dependencies []:

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

Patch Changes

  • #17363 3f4efc5 Thanks @astrobot-houston! - Fixes astro preview --open not opening a browser when using an adapter with a custom preview entrypoint, such as @astrojs/cloudflare

  • #17313 e2e319d Thanks @ronits2407! - Exposes the AstroRuntimeLogger interface to allow users to properly type the logger functions at runtime.

  • #17328 025cc74 Thanks @matthewp! - Fixes astro dev --force not replacing an already-running dev server

  • #17353 2bba277 Thanks @ematipico! - Updates the Astro compiler to the latest version, which fixes many regressions. Refer to the changelog for more details.

  • #17344 79a41e0 Thanks @adamchal! - Improves rendering performance for pages with many component instances, such as repeated MDX <Content /> components.

  • Updated dependencies [64b0d66]:

    • @astrojs/markdown-satteri@0.3.4
withastro/astro

Patch Changes

  • #17345 5196fb4 Thanks @kkhys! - Fixes an opaque Cannot read properties of undefined (reading 'fileExists') crash when astro check runs against the TypeScript 7 native compiler. The native compiler does not ship the programmatic API the checker relies on yet, so astro check now fails early with a clear message pointing to the tracking issue instead.
withastro/astro

Patch Changes

  • #17363 3f4efc5 Thanks @astrobot-houston! - Fixes astro preview --open not opening a browser when using an adapter with a custom preview entrypoint, such as @astrojs/cloudflare

  • Updated dependencies []:

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

Patch Changes

  • #17341 64b0d66 Thanks @Princesseuh! - Fixes custom pre components not applying to syntax-highlighted code blocks when using the Sätteri Markdown processor with MDX.
withastro/astro

Patch Changes

  • #17341 64b0d66 Thanks @Princesseuh! - Fixes custom pre components not applying to syntax-highlighted code blocks when using the Sätteri Markdown processor with MDX.
withastro/astro

Patch Changes

  • #17318 23a4120 Thanks @astrobot-houston! - Fixes CSS module scoped-name hash mismatch in astro dev when using vite.css.transformer: 'lightningcss' with content collections. Previously, a component importing a CSS module and rendered via content collection render() would get different class name hashes in the element and the injected <style> tag, causing styles not to apply.

  • #17323 4298883 Thanks @ematipico! - Fixes a dev server memory leak which caused Node.js to emit warnings in the console.

  • #17323 4298883 Thanks @ematipico! - Fixes a dev server crash when a .html or /index.html suffixed request (such as those netlify dev probes as pretty-URL fallbacks) matched a dynamic endpoint route, causing a TypeError: Missing parameter error

  • #17325 cebc404 Thanks @astrobot-houston! - Fixes a bug where CSS @import rules could end up mid-stylesheet after inline CSS chunks were merged during build, causing browsers to silently ignore them

  • #17323 4298883 Thanks @ematipico! - Fixes a build regression that could leave unresolved preload markers in inlined scripts with external dynamic imports

  • Updated dependencies [4298883, 4298883]:

    • @astrojs/telemetry@3.3.3
withastro/astro

Patch Changes

  • #17323 4298883 Thanks @ematipico! - Fixes build-time image optimization ignoring a custom image service registered by an integration

    Previously, when using imageService: 'compile' or imageService: 'custom', a custom image service was only respected if it was set directly in the image.service option of astro.config. If an integration registered the service instead, images were silently optimized with the default Sharp service at build time. A custom image service now transforms your images at build time no matter how it was configured.

  • #17323 4298883 Thanks @ematipico! - Prebundles astro/components and the <ClientRouter /> transition runtime modules in the dev server environment so pages using them no longer trigger a mid-session dep optimizer reload, which caused React "Invalid hook call" errors in islands on the first request after a cold cache

  • #17323 4298883 Thanks @ematipico! - Fixes an issue where vars weren't available at build time. Now the adapter loads vars from the Wrangler config so astro:env public variables resolve at build time

  • Updated dependencies []:

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

Patch Changes

lin-stephanie/astro-antfustyle-theme

   🚨 Breaking Changes

    View changes on GitHub
lin-stephanie/astro-loaders

Patch Changes

  • Expand the Astro peer range from >=4.14.0 <7.0.0 to >=4.14.0 <8.0.0 so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058)

  • Migrate the package build from inline tsup scripts and postbuild .graphql copying to tsdown --watch / tsdown with tsdown.config.ts, keep astro:env/server external through deps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058)

lin-stephanie/astro-loaders

Patch Changes

  • Expand the Astro peer range from >=4.14.0 <7.0.0 to >=4.14.0 <8.0.0 so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058)

  • Migrate the package build from inline tsup scripts and postbuild .graphql copying to tsdown --watch / tsdown with tsdown.config.ts, keep astro:env/server external through deps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058)

lin-stephanie/astro-loaders

Patch Changes

  • Expand the Astro peer range from >=4.14.0 <7.0.0 to >=4.14.0 <8.0.0 so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058)

  • Migrate the package build from inline tsup scripts and postbuild .graphql copying to tsdown --watch / tsdown with tsdown.config.ts, keep astro:env/server external through deps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058)

lin-stephanie/astro-loaders
Sub logo

Patch Changes

  • Expand the Astro peer range from >=4.14.0 <7.0.0 to >=4.14.0 <8.0.0 so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058)

  • Relax Release identifier validation from fixed 16-character Base64 node IDs to GitHub global node IDs such as RE_..., reuse shared URL regexes, and document live entry identifiers as string | object. (70b8058)

  • Update GraphQL Code Generator (codegen.config.ts) to emit typed string documents with pure annotations, operation-only types, pre-resolved result shapes, type-only imports, string-union enums, and a scoped post-generation formatter for src/graphql/gen/operations.ts. (70b8058)

  • Replace graphql#print calls with String(...) because generated documents are now typed string documents instead of GraphQL AST documents. (70b8058)

  • Migrate the package build from inline tsup scripts and postbuild .graphql copying to tsdown --watch / tsdown with tsdown.config.ts, keep astro:env/server external through deps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058)

  • Add __typename to the release GraphQL fragment and use it in getValidReleaseNode() so lookups only map real Release nodes before stripping the typename from returned data. (70b8058)

  • Return an INVALID_IDENTIFIER loader error when live release entry lookups by node ID, URL or { owner, repo, tagName } do not resolve to a GitHub Release, instead of returning an empty result. (70b8058)

  • Align README with the updated runtime behavior. (70b8058)

lin-stephanie/astro-loaders
Sub logo

Patch Changes

  • Expand the Astro peer range from >=4.14.0 <7.0.0 to >=4.14.0 <8.0.0 so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058)

  • Normalize PR search construction by prefixing type:pr only when neither type:pr nor is:pr is present, and preserve existing positive or negative created: qualifiers when applying monthsBack. (70b8058)

  • Relax PR identifier validation from fixed 16-character Base64 node IDs to GitHub global node IDs such as PR_..., reuse shared URL regexes, and document live entry identifiers as string | object. (70b8058)

  • Update GraphQL Code Generator (codegen.config.ts) to emit typed string documents with pure annotations, operation-only types, pre-resolved result shapes, type-only imports, string-union enums, and a scoped post-generation formatter for src/graphql/gen/operations.ts. (70b8058)

  • Replace graphql#print calls with String(...) because generated documents are now typed string documents instead of GraphQL AST documents. (70b8058)

  • Migrate the package build from inline tsup scripts and postbuild .graphql copying to tsdown --watch / tsdown with tsdown.config.ts, keep astro:env/server external through deps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058)

  • Add __typename to the PR GraphQL fragment and use it in getValidPrNode() so lookups only map real PullRequest nodes before stripping the typename from returned data. (70b8058)

  • Return an INVALID_IDENTIFIER loader error when live PR entry lookups by node ID, URL or { owner, repo, number } do not resolve to a GitHub PR, instead of returning an empty result. (70b8058)

  • Align README with the updated runtime behavior. (70b8058)

withastro/starlight

Patch Changes

  • #3911 1686ecc Thanks @timothyjordan! - Keeps keyboard focus inside the mobile menu while it is open, preventing focus moving to hidden interactive elements in page content.
withastro/astro

Patch Changes

withastro/astro

Patch Changes

  • Updated dependencies [eb6f97e]:
    • @astrojs/internal-helpers@0.10.1
withastro/astro

Patch Changes

  • #17270 0142964 Thanks @FrancoKaddour! - Fix @astrojs/solid-js incorrectly claiming Svelte 5 components compiled with the newer $$renderer prop (instead of the legacy $$payload). Projects mixing Solid and Svelte could see Svelte components silently rendered as empty strings by the Solid renderer.
withastro/astro

Patch Changes

  • Updated dependencies [eb6f97e]:
    • @astrojs/internal-helpers@0.10.1
withastro/astro

Patch Changes

  • Updated dependencies [eb6f97e]:
    • @astrojs/internal-helpers@0.10.1
withastro/astro

Patch Changes

  • Updated dependencies [eb6f97e]:
    • @astrojs/internal-helpers@0.10.1
    • @astrojs/markdown-remark@7.2.1
withastro/astro

Patch Changes

  • Updated dependencies [eb6f97e]:
    • @astrojs/internal-helpers@0.10.1
withastro/astro

Patch Changes

  • Updated dependencies [eb6f97e]:
    • @astrojs/internal-helpers@0.10.1
withastro/astro

Patch Changes

  • Updated dependencies [eb6f97e]:
    • @astrojs/internal-helpers@0.10.1
    • @astrojs/underscore-redirects@1.0.3
withastro/astro

Patch Changes

  • #17252 eb6f97e Thanks @matthewp! - Fixes trailing-slash handling for request paths that begin with a backslash

    With trailingSlash: 'always', the standalone Node server could append a trailing slash to a request path that begins with a backslash (for example /\example.com/foo) and echo that path back in the Location header of a 301 response. Because browsers resolve a leading \ the same way as /, the resulting Location could point off-site.

    Such paths are now recognized as internal paths, matching the existing handling for paths that begin with //, so they are no longer rewritten with a trailing slash.

  • Updated dependencies [eb6f97e]:

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

Patch Changes

  • #17259 ed6bea5 Thanks @astrobot-houston! - Fixes proxy support by respecting HTTP_PROXY and HTTPS_PROXY environment variables when downloading templates. On Node.js v22.21.0+ and v24.5.0+, create-astro now automatically enables the --use-env-proxy flag so that native fetch() routes requests through the configured proxy.
withastro/astro

Patch Changes

  • #17252 eb6f97e Thanks @matthewp! - Fixes trailing-slash handling for request paths that begin with a backslash

    With trailingSlash: 'always', the standalone Node server could append a trailing slash to a request path that begins with a backslash (for example /\example.com/foo) and echo that path back in the Location header of a 301 response. Because browsers resolve a leading \ the same way as /, the resulting Location could point off-site.

    Such paths are now recognized as internal paths, matching the existing handling for paths that begin with //, so they are no longer rewritten with a trailing slash.

withastro/astro

Patch Changes

  • Updated dependencies [eb6f97e]:
    • @astrojs/internal-helpers@0.10.1
    • @astrojs/underscore-redirects@1.0.3
withastro/astro

Patch Changes

  • #17269 c72d4f2 Thanks @matthewp! - Fixes "Go To References" from .ts files missing usages inside .astro files that are reached through Astro.locals. The plugin now injects Astro's ambient types so type chains like Astro.locals.utils.toUpper() resolve, matching the language server.
withastro/astro

Patch Changes

  • Updated dependencies [eb6f97e]:
    • @astrojs/internal-helpers@0.10.1
withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

  • #17254 2cffae1 Thanks @astrobot-houston! - Fixes syntax highlighting breaking when using CSS @property at-rules inside <style> blocks. The </style> closing tag and all subsequent blocks are now correctly recognized regardless of CSS content.
withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Minor Changes

  • #17099 fdab7ce Thanks @adamchal! - Adds configured image service support with the compile and custom options.

    The Cloudflare adapter supports various options that affect how images are processed for both pre-rendered and on-demand routes:

    • Setting imageService: 'compile' now ensures it is used for pre-rendered routes. When no custom image service is defined, the behavior remains unchanged.
    • With imageService: 'custom', assets are now processed at build time for pre-rendered routes. If you have configured an image service, it will be bundled to handle images at runtime; otherwise, the behavior remains unchanged.
    • The other imageService options remain unchanged.

    Learn more about the image service options available in the Cloudflare adapter guide.

Patch Changes

  • #17236 c411200 Thanks @matthewp! - Prevents warnings in the Cloudflare adapter about optimizing the @astrojs/cloudflare/entrypoints/server module in dev.

  • #17249 02b73b0 Thanks @ematipico! - Fixes an issue where the peerDependencies field used incorrect dependencies.

  • Updated dependencies []:

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

Patch Changes

withastro/astro

Minor Changes

  • #17245 f56d9e7 Thanks @astrobot-houston! - Adds edgeFunctions to the devFeatures adapter option, allowing users to disable Netlify Edge Function emulation during astro dev

    Some npm packages that access the filesystem at initialization (e.g. node-html-parser) fail inside the edge function sandbox with "Reading or writing files with Edge Functions is not supported yet." You can now disable edge function emulation to avoid this error:

    import netlify from '@astrojs/netlify';
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      adapter: netlify({
        devFeatures: {
          edgeFunctions: false,
        },
      }),
    });

    Edge functions will still work in production builds and via netlify dev.

Patch Changes

  • #17249 02b73b0 Thanks @ematipico! - Fixes an issue where the peerDependencies field used incorrect dependencies.

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.3
withastro/starlight

Patch Changes

  • #4008 58a3520 Thanks @FrancoKaddour! - Fixes the table of contents overflowing the right edge of the viewport when a custom --sl-content-width value exceeds available space

  • #4015 bdbfffc Thanks @delucis! - Fixes an issue where aside icons were rendered incorrectly in projects where Astro’s MDX integration had optimization disabled

withastro/astro

Patch Changes

  • #17049 ffceaa2 Thanks @astrobot-houston! - Fixes prerender errors being silently swallowed when pages throw during rendering in workerd, causing astro build to exit 0 and emit truncated HTML. The response body is now fully buffered inside workerd before being sent back to the build process, so streaming errors are caught and surfaced as build failures with clear error messages.

  • Updated dependencies []:

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

Patch Changes

withastro/astro

Patch Changes

  • #17209 fbcfa03 Thanks @matthewp! - Hardens RSS feed generation by escaping the source and enclosure item fields. These fields are now serialized as structured XML values, ensuring that special characters in values like source.title and enclosure.type are always treated as text rather than markup, consistent with how other feed fields are handled.
withastro/astro

Patch Changes

  • #17188 675d11d Thanks @astrobot-houston! - Fixes @astrojs/upgrade showing a generic error when pnpm's minimumReleaseAge policy blocks installation. The error message now explains that pnpm's policy blocked the update and suggests running the install command manually.
withastro/astro

Patch Changes

withastro/astro

Minor Changes

  • #17185 d64b09b Thanks @delucis! - Adds a --no-ai flag to allow users to opt out of creating AGENTS.md and CLAUDE.md files when running create astro
withastro/starlight

Patch Changes

withastro/starlight

Minor Changes

  • #3951 1202dd4 Thanks @HiDeoo! - Adds support for Astro v7, drops support for Astro v6.

    Upgrade Astro and dependencies

    ⚠️ BREAKING CHANGE: Astro v6 is no longer supported. Make sure you update Astro and any other official integrations at the same time as updating Starlight:

    npx @astrojs/upgrade

    Community Starlight plugins and Astro integrations may also need to be manually updated to work with Astro v7. If you encounter any issues, please reach out to the plugin or integration author to see if it is a known issue or if an updated version is being worked on.

    ⚠️ BREAKING CHANGE: This release drops official support for Chromium-based browsers prior to version 111 (released 07 March 2023) and Safari-based browsers prior to version 16.4 (released 27 March 2023). You can find a list of currently supported browsers and their versions using this browserslist query.

Patch Changes

  • #3953 a935d33 Thanks @HiDeoo! - Fixes Starlight Markdown processing being potentially applied to files that should not be processed.
withastro/starlight

Minor Changes

  • #3951 1202dd4 Thanks @HiDeoo! - ⚠️ BREAKING CHANGE: The minimum supported version of Starlight is now 0.41.0

    Please use the @astrojs/upgrade command to upgrade your project:

    npx @astrojs/upgrade
withastro/astro

Patch Changes

  • #17165 3b5e994 Thanks @Princesseuh! - Fixes headings being listed twice in a page's headings metadata when an integration (such as Starlight) assigns heading IDs with its own heading pass before adding anchor links
withastro/astro

Major Changes

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

Patch Changes

withastro/astro

Major Changes

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

  • #17129 ff7b718 Thanks @Princesseuh! - Adds support for modifying frontmatter programmatically with the default Markdown processor.

    A Sätteri plugin can now read and mutate ctx.data.astro.frontmatter, and Astro uses the result as the page's frontmatter, in both Markdown and MDX.

Patch Changes

withastro/astro

Minor Changes

  • #17122 cbd6123 Thanks @matthewp! - Adds a default AGENTS.md file to new projects with dev server instructions and documentation links. Also creates a CLAUDE.md symlink (with hard link fallback) pointing to AGENTS.md.
withastro/astro

Major Changes

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

  • #16549 9d9d516 Thanks @ocavue! - Updates @sveltejs/vite-plugin-svelte to v7. No user action is necessary.

Patch Changes

withastro/astro

Major Changes

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

Patch Changes

withastro/astro

Major Changes

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

Patch Changes

withastro/astro

Major Changes

Patch Changes

withastro/astro

Major Changes

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Major Changes

Minor Changes

  • #16335 9a53f77 Thanks @ascorbic! - Adds a CDN cache provider for Astro route caching on Netlify

    Setup

    Import cacheNetlify() from @astrojs/netlify/cache and set it as your cache provider:

    import { defineConfig } from 'astro/config';
    import netlify from '@astrojs/netlify';
    import { cacheNetlify } from '@astrojs/netlify/cache';
    
    export default defineConfig({
      adapter: netlify(),
      cache: {
        provider: cacheNetlify(),
      },
    });

    Caching responses

    Use Astro.cache.set() in your pages and API routes to cache responses on Netlify's edge network. The provider uses Netlify's durable cache so cached responses are shared across all edge nodes, reducing function invocations.

    ---
    Astro.cache.set({ maxAge: 300, tags: ['products'] });
    const data = await fetchProducts();
    ---
    
    <ProductList items={data} />

    You can also set cache rules for groups of routes in your config:

    cache: { provider: cacheNetlify() },
    routeRules: {
      '/products/[...slug]': { maxAge: 3600, tags: ['products'] },
      '/api/[...path]': { maxAge: 60, swr: 600 },
    },

    Invalidation

    Purge cached responses by tag or path from any API route or server endpoint:

    // src/pages/api/purge.ts
    export async function POST({ request, cache }) {
      await cache.invalidate({ tags: ['products'] });
      return new Response('Purged');
    }
    
    // Path-based invalidation
    await cache.invalidate({ path: '/products/123' });

    Both tag-based and path-based invalidation are supported.

Patch Changes

  • #17027 241250b Thanks @ocavue! - Triggers beta prereleases for packages that are still on alpha

  • Updated dependencies []:

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

Major Changes

Minor Changes

  • #16335 9a53f77 Thanks @ascorbic! - Adds a CDN cache provider for Astro route caching on Vercel

    Setup

    Import cacheVercel() from @astrojs/vercel/cache and set it as your cache provider:

    import { defineConfig } from 'astro/config';
    import vercel from '@astrojs/vercel';
    import { cacheVercel } from '@astrojs/vercel/cache';
    
    export default defineConfig({
      adapter: vercel(),
      cache: {
        provider: cacheVercel(),
      },
    });

    Caching responses

    Use Astro.cache.set() in your pages and API routes to cache responses on Vercel's edge network. The provider sets Vercel-CDN-Cache-Control and Vercel-Cache-Tag headers on responses.

    ---
    Astro.cache.set({ maxAge: 300, tags: ['products'] });
    const data = await fetchProducts();
    ---
    
    <ProductList items={data} />

    You can also set cache rules for groups of routes in your config:

    cache: { provider: cacheVercel() },
    routeRules: {
      '/products/[...slug]': { maxAge: 3600, tags: ['products'] },
      '/api/[...path]': { maxAge: 60, swr: 600 },
    },

    Invalidation

    Purge cached responses by tag or path from any API route or server endpoint:

    // src/pages/api/purge.ts
    export async function POST({ request, cache }) {
      await cache.invalidate({ tags: ['products'] });
      return new Response('Purged');
    }
    
    // Path-based invalidation
    await cache.invalidate({ path: '/products/123' });

    Both tag-based and path-based invalidation are supported. Tag invalidation is a soft invalidation, marking cached responses as stale so they can be revalidated in the background via stale-while-revalidate.

Patch Changes

withastro/astro

Major Changes

Patch Changes

withastro/astro

Patch Changes

  • #17054 d426b67 Thanks @astrobot-houston! - Fixes an issue where Astro files with non-ASCII characters in their name weren't correctly served after the build.

  • #17027 241250b Thanks @ocavue! - Triggers beta prereleases for packages that are still on alpha

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Minor Changes

  • #17122 cbd6123 Thanks @matthewp! - Adds a default AGENTS.md file to new projects with dev server instructions and documentation links. Also creates a CLAUDE.md symlink (with hard link fallback) pointing to AGENTS.md.
withastro/astro

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

withastro/astro

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

withastro/astro

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

withastro/astro

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

withastro/astro

Minor Changes

  • #17093 4585fe5 Thanks @Princesseuh! - Replaces the import entrypoint of getContainerRenderer()

    A new container-renderer entrypoint exporting getContainerRenderer() has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

    If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the getContainerRenderer() import for React:

    - import { getContainerRenderer } from '@astrojs/react';
    + import { getContainerRenderer } from '@astrojs/react/container-renderer';

    Importing getContainerRenderer() from the package root still works, but is now deprecated and logs a warning.

withastro/astro

Patch Changes

  • #17054 d426b67 Thanks @astrobot-houston! - Fixes an issue where Astro files with non-ASCII characters in their name weren't correctly served after the build.
withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/astro

Patch Changes

withastro/starlight

Minor Changes

  • #3923 edf2e6b Thanks @Princesseuh! - Adds support for Astro 6.4 and the new Sätteri Markdown processor.

    It is now possible to opt into using Astro's 6.4 Sätteri Markdown processor by installing the @astrojs/markdown-satteri package and configuring it in your astro.config.mjs file:

    // astro.config.mjs
    
    import { defineConfig } from 'astro/config';
    import { satteri } from '@astrojs/markdown-satteri';
    
    export default defineConfig({
      markdown: {
        processor: satteri(),
      },
    });

    ⚠️ BREAKING CHANGE: The minimum supported version of Astro is now v6.4.5.

    Please update Starlight and Astro together:

    npx @astrojs/upgrade

    Community Starlight plugins and Astro integrations may also need to be manually updated to work with Sätteri. If you encounter any issues, please reach out to the plugin or integration author to see if it is a known issue or if an updated version is being worked on.

Patch Changes

withastro/astro

Patch Changes

  • #16964 b048826 Thanks @Princesseuh! - Deprecates the @astrojs/db integration. We no longer have the bandwidth to maintain this package, and we recommend that users directly use the database client of their choice (Drizzle, Kysely, etc.) in their Astro projects instead.
withastro/astro

Minor Changes

  • #16549 9d9d516 Thanks @ocavue! - Updates @sveltejs/vite-plugin-svelte to v7. No user action is necessary.
withastro/astro

Patch Changes

withastro/astro

Patch Changes


Last fetched:  | Scheduled refresh: Every Saturday

See Customizing GitHub Activity Pages to configure your own

Inspired by releases.antfu.me