Astro

Frameworks & Libraries

The web framework for content-driven websites.

Latest 7.3.2 · by AstroWritten in TypeScriptWebsitewithastro/astroRSS

Release activity

Release activity — 98 releases across 20 days since Jul 13, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Jul 13, 2026. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026No releases on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026
Monday3 releases on Jul 13, 20263 releases on Jul 20, 20266 releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 20269 releases on Aug 24, 202610 releases on Aug 31, 2026No releases on Sep 7, 2026
TuesdayNo releases on Jul 14, 20262 releases on Jul 21, 202610 releases on Jul 28, 2026No releases on Aug 4, 20266 releases on Aug 11, 202610 releases on Aug 18, 20264 releases on Aug 25, 2026No releases on Sep 1, 20265 releases on Sep 8, 2026
WednesdayNo releases on Jul 15, 2026No releases on Jul 22, 20262 releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 202610 releases on Aug 19, 20261 release on Aug 26, 2026No releases on Sep 2, 2026
Thursday1 release on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 20268 releases on Aug 6, 20262 releases on Aug 13, 2026No releases on Aug 20, 20261 release on Aug 27, 20264 releases on Sep 3, 2026
Friday1 release on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026No releases on Aug 21, 2026No releases on Aug 28, 2026No releases on Sep 4, 2026
SaturdayNo releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026No releases on Aug 22, 2026No releases on Aug 29, 2026No releases on Sep 5, 2026

98 releases since Jul 13, 2026, busiest day 10

Changelog

astro@7.3.2

Latest
Fixed 4
  • Fix <script>/<style> rendering in MDX so that only literal content is treated as trusted markup, with dynamic values now escaped unless using set:html
  • Fix dev toolbar returning a 504 "Outdated Optimize Dep" error when a workspace-linked package imports a dependency that Vite's initial scan did not discover
  • Fix i18n fallback routing replacing the first substring match instead of the actual locale segment, which mangled paths like /energy/en/about
  • Fix sessions breaking in dev mode with the Cloudflare adapter when middleware is present

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

  • #17931 c1a6a89 Thanks @astro-factory! - Fixes the dev toolbar returning a 504 "Outdated Optimize Dep" error when a workspace-linked package imports a dependency that Vite's initial scan did not discover

  • #17908 42e9188 Thanks @astro-factory! - Fixes i18n fallback routing replacing the first substring match instead of the actual locale segment, which mangled paths like /energy/en/about into /esergy/en/about

  • #17936 4b92ddc Thanks @astro-factory! - Fixes sessions breaking in dev mode with the Cloudflare adapter when middleware is present

  • Updated dependencies [a548223]:

    • @astrojs/markdown-satteri@0.4.1
View originalPermalink
How astro@7.3.2 went

@astrojs/markdown-remark@7.3.1

Fixed 1
  • Fix <script>/<style> rendering in MDX to escape dynamic values instead of treating them as trusted markup, requiring set:html for explicit raw rendering

From 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.
View originalPermalink
How @astrojs/markdown-remark@7.3.1 went

@astrojs/mdx@8.0.1

Changed 1
  • Updated @astrojs/markdown-satteri to version 0.4.1

From Astro

Patch Changes
  • Updated dependencies [a548223]:
    • @astrojs/markdown-satteri@0.4.1
View originalPermalink
How @astrojs/mdx@8.0.1 went

@astrojs/markdown-satteri@0.4.1

Fixed 1
  • Fix <script>/<style> rendering in MDX so that only literal content is treated as trusted markup, with dynamic values now being escaped instead of rendered raw unless explicitly opted into raw rendering with set:html

From 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.
View originalPermalink
How @astrojs/markdown-satteri@0.4.1 went

@astrojs/cloudflare@14.3.1

Fixed 1
  • Fix a build crash when a custom worker entrypoint exports Durable Object classes alongside prerendered pages by preventing the prerender worker from inheriting durable_objects, migrations, or workflows from the entry worker config

From Astro

Patch Changes
  • #17914 a400504 Thanks @astro-factory! - Fixes a build crash when a custom worker entrypoint exports Durable Object classes alongside prerendered pages. The prerender worker no longer inherits durable_objects, migrations, or workflows from the entry worker config.

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/cloudflare@14.3.1 went

astro@7.3.1

Fixed 1
  • Fix an error that prevented projects using astro:assets from starting or building

From Astro

Patch Changes
  • #17899 0389640 Thanks @ematipico! - Fixes an error that prevented projects using astro:assets from starting or building
View originalPermalink
How astro@7.3.1 went

@astrojs/cloudflare@14.3.0

Added 2
  • Add concurrent rendering support for `experimental.incrementalBuild` when using `@astrojs/cloudflare`
  • Add a Cloudflare `finalize()` response handler for custom request handlers to apply cookies and Cloudflare CDN cache defaults
Changed 5
  • Incremental builds no longer disable caching when `build.concurrency` is greater than `1`
  • Cloudflare builds reduce serialization overhead for large prerendered pages
  • The `@astrojs/cloudflare/hono` middleware applies response headers automatically
  • Cloudflare custom entrypoints fall back to static assets when no Astro route matches
  • Cloudflare custom entrypoints use the default server entrypoint when prerendering through workerd
Fixed 1
  • Fix cold `astro dev` crashes by adding `astro/app/manifest` and `@astrojs/cloudflare/cache/provider` to the `optimizeDeps.include` list

From Astro

Minor Changes
  • #17795 15e2deb Thanks @matthewp! - Adds concurrent rendering support for experimental.incrementalBuild, including when using @astrojs/cloudflare

    Incremental builds no longer disable caching when build.concurrency is greater than 1. Projects that set build.concurrency: 1 to keep the cache enabled can remove that workaround. Cloudflare builds also reduce serialization overhead for large prerendered pages.

  • #17887 35aa62e Thanks @matthewp! - Adds a Cloudflare finalize() response handler for custom request handlers

    Call finalize() to apply cookies and Cloudflare CDN cache defaults to the response from an astro/fetch pipeline:

    import { astro, FetchState } from 'astro/fetch';
    import { cf, finalize } from '@astrojs/cloudflare/fetch';
    
    export default {
      async fetch(request: Request, env: Env, context: ExecutionContext) {
        const state = new FetchState(request);
        const asset = await cf(state, env, context);
        if (asset) return asset;
    
        return finalize(state, await astro(state));
      },
    };
    

    The @astrojs/cloudflare/hono middleware applies these response headers automatically. Cloudflare custom entrypoints also fall back to static assets when no Astro route matches and use the default server entrypoint when prerendering through workerd.

Patch Changes
  • #17895 41b88ac Thanks @astro-factory! - Fixes cold astro dev crashes by adding astro/app/manifest and @astrojs/cloudflare/cache/provider to the optimizeDeps.include list

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/cloudflare@14.3.0 went

astro@7.3.0

Added 3
  • Add `--ignore-lock` flag to `astro preview` to allow multiple preview servers to run simultaneously on different ports
  • Add `logger` parameter to image services hooks for custom logging through Astro's runtime logger
  • Add `logger` to the context object passed to cache providers for custom logging through Astro's runtime logger
Changed 1
  • Update Astro's internal warnings and errors to be written through the configured logger instead of directly to the console
Fixed 5
  • Fix memory cache provider to skip responses with `Vary: Cookie` or `Vary: *`
  • Improve build performance for sites with a large number of pages coming from many different modules
  • Add concurrent rendering support for `experimental.incrementalBuild` including when using `@astrojs/cloudflare`
  • Fix missing styles, links, and scripts from content collection entries rendered inside server islands
  • Fix i18n fallback routes being generated with a corrupted path when the locale code appears at the start of a later path segment

From Astro

Minor Changes
  • #17767 ce7c91f Thanks @astro-factory! - Adds --ignore-lock flag to astro preview, allowing multiple preview servers to run simultaneously on different ports. This is useful for E2E testing workflows (e.g., Playwright) that need to run several preview servers at once.

  • #17818 c0b6581 Thanks @florian-lefebvre! - Adds a logger parameter to image services hooks

    Custom image services now receive Astro's runtime logger as an extra argument. Messages logged with it are routed through the destination configured in logger and respect your log level, instead of being written straight to the console:

    import type { LocalImageService } from 'astro';
    
    const service: LocalImageService = {
      // ...
      async transform(inputBuffer, transform, imageConfig, logger) {
        logger.warn(`Could not optimize "${transform.src}". Passing it through unchanged.`);
        return { data: inputBuffer, format: 'png' };
      },
    };
    

    Astro's built-in Sharp service now uses this logger for the warnings it emits when it encounters an unexpected or unsupported source format.

  • #17818 c0b6581 Thanks @florian-lefebvre! - Adds logger to the context object passed to cache providers

    Custom cache providers now receive Astro's runtime logger on the context passed to onRequest(). Messages logged with it are routed through the destination configured in logger and respect your log level, instead of being written straight to the console:

    import type { CacheProvider } from 'astro';
    
    const provider: CacheProvider = {
      name: 'my-cache',
      async onRequest({ request, url, logger }, next) {
        logger.warn(`Skipping cache for ${url.pathname} because the response sets a cookie.`);
        return next();
      },
      // ...
    };
    

    Astro's built-in memoryCache() provider now uses this logger for the warnings it emits when it skips caching a response that sets cookies, and when a background revalidation fails.

Patch Changes
  • #17818 c0b6581 Thanks @florian-lefebvre! - Updates Astro's remaining internal warnings and errors to be written through the configured logger instead of directly to the console, when possible

  • #17886 e747cba Thanks @matthewp! - Fixes the memory cache provider to skip responses with Vary: Cookie or Vary: *

  • #17885 916b738 Thanks @Princesseuh! - Improves build performance for sites with a large number of pages coming from a large amount of different modules.

  • #17795 15e2deb Thanks @matthewp! - Adds concurrent rendering support for experimental.incrementalBuild, including when using @astrojs/cloudflare

    Incremental builds no longer disable caching when build.concurrency is greater than 1. Projects that set build.concurrency: 1 to keep the cache enabled can remove that workaround. Cloudflare builds also reduce serialization overhead for large prerendered pages.

  • #17879 21c34a6 Thanks @matthewp! - Fixes missing styles, links, and scripts from content collection entries rendered inside server islands

  • #17861 3193988 Thanks @ethanstoner! - Fixes i18n fallback routes being generated with a corrupted path when the locale code also appears at the start of a later path segment. A page such as src/pages/en/enterprise.astro with fallback: { es: 'en' } produced the route /es/esterprise instead of /es/enterprise, so the fallback never matched the intended URL. Only the leading locale segment is rewritten now.

View originalPermalink
How astro@7.3.0 went

@astrojs/vercel@11.0.10

Changed 1
  • Update the development image service to forward every argument it receives to Astro's Sharp service, including the new logger parameter

From Astro

Patch Changes
  • #17818 c0b6581 Thanks @florian-lefebvre! - Updates the development image service to forward every argument it receives to Astro's Sharp service, including the new logger parameter
View originalPermalink
How @astrojs/vercel@11.0.10 went

@astrojs/react@6.0.5

Changed 1
  • Updated @astrojs/internal-helpers to 0.11.0

From Astro

Patch Changes
  • Updated dependencies [f8e9458]:
    • @astrojs/internal-helpers@0.11.0
View originalPermalink
How @astrojs/react@6.0.5 went

@astrojs/mdx@8.0.0

Added 1
  • Add a warning when deprecated remarkPlugins, rehypePlugins, recmaPlugins and remarkRehype options are ignored because the Markdown processor does not run them
Changed 1
  • Move MDX file processing to the Markdown processors
Fixed 1
  • Fix .mdx files still using markdown.processor when extendMarkdownConfig is false to use a clean default processor instead

From Astro

Major Changes
  • #17262 f8e9458 Thanks @Princesseuh! - Moves MDX file processing to the Markdown processors.

    '@astrojs/mdx' is still required to add MDX support to your project. However, it now delegates the MDX files processing to Markdown processors.

    What should I do?

    If you haven't explicitly installed a Markdown processor, you don't need to do anything.

    Otherwise, ensure that your configured Markdown processor uses the following version:

    • @astrojs/markdown-satteri 0.4.0 or later if you use satteri()
    • @astrojs/markdown-remark 7.3.0 or later if you use unified()
Patch Changes
  • #17262 f8e9458 Thanks @Princesseuh! - Fixes .mdx files still using markdown.processor when extendMarkdownConfig is false. They now use a clean default processor instead; pass mdx({ processor }) to choose one explicitly.

  • #17262 f8e9458 Thanks @Princesseuh! - Adds a warning when the deprecated remarkPlugins, rehypePlugins, recmaPlugins and remarkRehype options are ignored because your Markdown processor does not run them. They still apply when your processor is unified(), and were previously dropped silently otherwise.

  • Updated dependencies [f8e9458, f8e9458]:

    • @astrojs/internal-helpers@0.11.0
    • @astrojs/markdown-satteri@0.4.0
View originalPermalink
How @astrojs/mdx@8.0.0 went

@astrojs/markdown-satteri@0.4.0

Added 1
  • Adds MDX rendering to the unified() and satteri() processors, which now compile .mdx files themselves
Changed 1
  • Updated @astrojs/internal-helpers to 0.11.0

From Astro

Minor Changes
  • #17262 f8e9458 Thanks @Princesseuh! - Adds MDX rendering to the unified() and satteri() processors.

    Both processors now compile .mdx files themselves. You still need to install @astrojs/mdx to add MDX support to your project.

Patch Changes
  • Updated dependencies [f8e9458]:
    • @astrojs/internal-helpers@0.11.0
View originalPermalink
How @astrojs/markdown-satteri@0.4.0 went

@astrojs/netlify@8.2.5

Changed 2
  • Updated @astrojs/internal-helpers to 0.11.0
  • Updated @astrojs/underscore-redirects to 1.0.4

From Astro

Patch Changes
  • Updated dependencies [f8e9458]:
    • @astrojs/internal-helpers@0.11.0
    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/netlify@8.2.5 went

@astrojs/vercel@11.0.9

Changed 3
  • Update dependency @vercel/analytics to v2
  • Update dependency @vercel/routing-utils to v6
  • Update dependency @astrojs/internal-helpers to 0.11.0

From Astro

Patch Changes
  • #17450 19dae21 Thanks @ocavue! - Updates dependency @vercel/analytics to v2. See the changelog for more details. Updates dependency @vercel/routing-utils to v6. See the changelog for more details.
  • Updated dependencies [f8e9458]:
    • @astrojs/internal-helpers@0.11.0
View originalPermalink
How @astrojs/vercel@11.0.9 went

@astrojs/markdown-remark@7.3.0

Added 2
  • Add MDX rendering to the unified() and satteri() processors, which now compile .mdx files themselves
  • Add a recmaPlugins option to unified() for adding recma (estree/JSX) plugins to the MDX compiler

From Astro

Minor Changes
  • #17262 f8e9458 Thanks @Princesseuh! - Adds MDX rendering to the unified() and satteri() processors.

    Both processors now compile .mdx files themselves. You still need to install @astrojs/mdx to add MDX support to your project.

  • #17262 f8e9458 Thanks @Princesseuh! - Adds a recmaPlugins option to unified() for adding recma (estree/JSX) plugins to the MDX compiler.

Patch Changes
  • Updated dependencies [f8e9458]:
    • @astrojs/internal-helpers@0.11.0
View originalPermalink
How @astrojs/markdown-remark@7.3.0 went

astro@7.2.10

Fixed 7
  • @astrojs/markdown-remark being pinned to an exact version
  • SSR manifest placeholder not being replaced when the server build is minified, which caused a runtime Invalid URL crash at server boot
  • Logger being improperly initialized at runtime in dev
  • Browser heuristic caching for cached responses that include Last-Modified or ETag validators
  • Prerender conflict warnings to correctly identify the route that first rendered a duplicate pathname
  • Markdown images in content collections rendering an empty srcset attribute when no responsive candidates are generated
  • Editing a content collection entry during astro dev on Windows kept serving stale content until the dev server was restarted

From Astro

Patch Changes
  • #17262 f8e9458 Thanks @Princesseuh! - Fixes @astrojs/markdown-remark being pinned to an exact version.

  • #17874 10c7e63 Thanks @astro-factory! - Fixes SSR manifest placeholder not being replaced when the server build is minified, which caused a runtime Invalid URL crash at server boot

  • #17869 2548abf Thanks @ematipico! - Fixes a case where the logger was improperly initialized at runtime in dev.

  • #17878 76eff3d Thanks @ematipico! - Fixes browser heuristic caching for cached responses that include Last-Modified or ETag validators

  • #17833 413a6e7 Thanks @astro-factory! - Fixes prerender conflict warnings to correctly identify the route that first rendered a duplicate pathname, instead of misattributing the conflict to an unrelated route that merely matches the URL pattern

  • #17872 f7191cc Thanks @jx-grxf! - Fixes Markdown images in content collections rendering an empty srcset attribute when no responsive candidates are generated.

  • #17755 157c500 Thanks @matthewp! - Fixes a bug where editing a content collection entry during astro dev on Windows kept serving stale content until the dev server was restarted. The data store now notifies the dev server directly after each write instead of relying only on the file watcher, which can miss the atomic rename that commits the write on some platforms.

  • Updated dependencies [f8e9458, f8e9458]:

    • @astrojs/internal-helpers@0.11.0
    • @astrojs/markdown-satteri@0.4.0
View originalPermalink
How astro@7.2.10 went

@astrojs/node@11.1.5

Changed 1
  • Updated @astrojs/internal-helpers to 0.11.0

From Astro

Patch Changes
  • Updated dependencies [f8e9458]:
    • @astrojs/internal-helpers@0.11.0
View originalPermalink
How @astrojs/node@11.1.5 went

@astrojs/sitemap@3.7.4

Fixed 1
  • Fix sitemap outputting a URL with an empty path for the homepage when trailingSlash is set to "never" or build.format is set to "file"

From Astro

Patch Changes
  • #17851 52d3f56 Thanks @astro-factory! - Fixes the sitemap outputting a URL with an empty path for the homepage (e.g. https://example.com instead of https://example.com/) when trailingSlash is set to "never" or build.format is set to "file"
View originalPermalink
How @astrojs/sitemap@3.7.4 went

astro@7.2.9

Fixed 4
  • Fix importing .html files not being typed outside of .astro files
  • Fix a crash when requesting /index.html against a dynamic page route like [slug].astro
  • Fix SSR manifest containing stale entryModules references to prerender-only chunks that no longer exist in the final build output
  • Fix set:text escaping in MDX script and style elements

From Astro

Patch Changes
View originalPermalink
How astro@7.2.9 went

astro@7.2.8

Changed 2
  • Update the minimum supported version of Sharp to 0.35.4
  • Replace the internal find-process dependency with a smaller, lighter alternative

From Astro

Patch Changes
View originalPermalink
How astro@7.2.8 went

astro-vscode@2.16.20

Fixed 1
  • Syntax highlighting for multiline <script> and <style> tags with a lang or type attribute

From Astro

Patch Changes
  • #17792 6a46994 Thanks @matthewp! - Fixes syntax highlighting for multiline <script> and <style> tags with a lang or type attribute
View originalPermalink
How astro-vscode@2.16.20 went

@astrojs/cloudflare@14.2.5

Added 1
  • Add the Worker version to the cache metadata of cached responses when the CF_VERSION_METADATA binding is configured, with responses carrying an astro-version:<id> cache tag for version-specific purging and a weak ETag for responses that already send Last-Modified
Changed 1
  • Update generated and default Cloudflare compatibility_date values to match the installed runtime and require Wrangler ^4.125.0

From Astro

Patch Changes
  • #17819 633855b Thanks @matthewp! - Updates generated and default Cloudflare compatibility_date values to match the installed runtime and requires Wrangler ^4.125.0

  • #17675 44d384c Thanks @danielmlr! - Adds the Worker version to the cache metadata of cached responses when the CF_VERSION_METADATA binding is configured. Responses carry an astro-version:<id> cache tag for version-specific purging, and responses that already send Last-Modified get a weak ETag that folds the version in. Conditional revalidation then returns fresh content after a deploy that changes rendered output but not content — most commonly the hashed asset URLs in server-rendered HTML. Without the binding, nothing changes.

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/cloudflare@14.2.5 went

@astrojs/language-server@2.16.15

Fixed 1
  • Fix `source.organizeImports` leaking generated Astro component exports into `.astro` files

From Astro

Patch Changes
  • #17820 89e5349 Thanks @matthewp! - Fixes source.organizeImports leaking generated Astro component exports into .astro files
View originalPermalink
How @astrojs/language-server@2.16.15 went

astro@7.2.7

Changed 1
  • Updates generated and default Cloudflare compatibility_date values to match the installed runtime and requires Wrangler ^4.125.0
Fixed 4
  • Deserializes each route once when loading the SSR manifest
  • Fixes route selection for normalized request paths in adapter and development request handling
  • Fixes rewrite() and next(payload) for GET and HEAD requests with host-provided bodies
  • Fixes the experimental svgOptimizer not generating unique per-file ID prefixes when using SVGO's prefixIds plugin

From Astro

Patch Changes
  • #17415 55d38c8 Thanks @iseraph-dev! - Deserializes each route once when loading the SSR manifest

  • #17772 023b48b Thanks @matthewp! - Fixes route selection for normalized request paths in adapter and development request handling

  • #17819 633855b Thanks @matthewp! - Updates generated and default Cloudflare compatibility_date values to match the installed runtime and requires Wrangler ^4.125.0

  • #17813 ae26d18 Thanks @matthewp! - Fixes rewrite() and next(payload) for GET and HEAD requests with host-provided bodies

  • #17816 a0d2fe3 Thanks @astro-factory! - Fixes the experimental svgOptimizer not generating unique per-file ID prefixes when using SVGO's prefixIds plugin

View originalPermalink
How astro@7.2.7 went

astro@7.2.6

Fixed 1
  • Fix a bug where `new FetchState(request)` could fail in development when server dependencies were optimized

From Astro

Patch Changes
  • #17812 29af6da Thanks @matthewp! - Fixes a bug where new FetchState(request) could fail in development when server dependencies were optimized
View originalPermalink
How astro@7.2.6 went

@astrojs/vercel@11.0.8

Fixed 1
  • Fix a bug where @vercel/nft file tracing silently dropped all dependency files when outDir was configured outside root, causing deployed functions to crash with ERR_MODULE_NOT_FOUND

From Astro

Patch Changes
  • #17794 dd29ce8 Thanks @astro-factory! - Fixes a bug where @vercel/nft file tracing silently dropped all dependency files when outDir was configured outside root, causing deployed functions to crash with ERR_MODULE_NOT_FOUND
View originalPermalink
How @astrojs/vercel@11.0.8 went

@astrojs/markdown-satteri@0.3.8

Fixed 2
  • Sätteri processor option types to accept all plugin entries supported by Sätteri v0.10.3
  • Editor tooltip for smartPunctuation claiming it defaults to false when Astro enables it by default

From Astro

Patch Changes
  • #17766 0762a83 Thanks @HiDeoo! - Fixes Sätteri processor option types to accept all plugin entries supported by Sätteri v0.10.3.

  • #17314 0c99615 Thanks @barry166! - Fixes the editor tooltip for smartPunctuation claiming it defaults to false when Astro enables it by default.

View originalPermalink
How @astrojs/markdown-satteri@0.3.8 went

@astrojs/netlify@8.2.4

Fixed 1
  • Fixes generated Netlify Image CDN allowlists to reject remote URLs that contain an allowed image origin only within their path or query string

From Astro

Patch Changes
  • #17752 e362d4c Thanks @matthewp! - Fixes generated Netlify Image CDN allowlists to reject remote URLs that contain an allowed image origin only within their path or query string

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/netlify@8.2.4 went

create-astro@5.2.4

Fixed 1
  • Fixes npm install warnings on npm v11+ about esbuild's install scripts not being covered by allowScripts by adding ensureNpmScriptsAllowed() to pre-approve esbuild in package.json before running npm install

From Astro

Patch Changes
  • #17756 f88c875 Thanks @astro-factory! - Fixes npm install warnings on npm v11+ about esbuild's install scripts not being covered by allowScripts. Adds ensureNpmScriptsAllowed() to pre-approve esbuild in package.json before running npm install, matching the existing pnpm v11 compatibility fix.
View originalPermalink
How create-astro@5.2.4 went

astro@7.2.5

Added 1
  • Add support for importing `.apng` files as image metadata for use with standard `<img>` elements
Changed 2
  • Skip no-op pathname writes when normalizing SSR request URLs
  • Update deprecation messages target from Astro 7 to 8
Fixed 12
  • Fix `experimental_getFontFileURL()` rejecting valid font URLs when using the Cloudflare adapter
  • Fix session ID validation to reject non-UUID cookie values before using them as storage keys
  • Fix `--mode`, `--site`, `--base`, `--out-dir`, `--verbose`, `--silent`, and `--open` flags being silently dropped when using `astro dev --background` or `astro preview --background`
  • Fix `content-modules.mjs` not removing entries for deleted or renamed content files
  • Fix `Astro.preferredLocale` and `Astro.preferredLocaleList` ignoring `Accept-Language` quality values when they are absent or `0`
  • Fix build errors showing wrong file location, missing line:col, and misleading hints when a plugin error is wrapped by Vite's build error

From Astro

Patch Changes
  • #17758 5f419e2 Thanks @astro-factory! - Fixes a bug where experimental_getFontFileURL() rejected valid font URLs when using the Cloudflare adapter

  • #17416 493796b Thanks @iseraph-dev! - Skips no-op pathname writes when normalizing SSR request URLs

  • #17712 bd374b7 Thanks @fkatsuhiro! - Updates deprecation messages target from Astro 7 to 8

  • #17719 dac1768 Thanks @astrobot-houston! - Fixes session ID validation to reject non-UUID cookie values before using them as storage keys

  • #17770 84eb7e7 Thanks @astro-factory! - Fixes --mode, --site, --base, --out-dir, --verbose, --silent, and --open flags being silently dropped when using astro dev --background or astro preview --background

  • #17713 d035290 Thanks @wakqasahmed! - Fixes content-modules.mjs not removing entries for deleted or renamed content files, which could cause Vite to attempt to resolve non-existent modules

    As part of this fix, #moduleImports is now fully rebuilt from deferredRender entries before every write, so a module import added only through the public addModuleImport() API without a corresponding deferredRender entry in the store will no longer be preserved across writes.

  • #17743 adc750f Thanks @contactjawad! - Fixes Astro.preferredLocale and Astro.preferredLocaleList ignoring Accept-Language quality values when they are absent or 0. An entry without an explicit q= now correctly counts as quality 1.0 (per RFC 7231) and an entry with q=0 is treated as not acceptable, so the highest-quality locale is selected regardless of header order.

  • #17757 660991c Thanks @astro-factory! - Fixes build errors showing wrong file location, missing line:col, and misleading hints when a plugin error (e.g. from MDX) is wrapped by Vite's build error

  • #17783 60b14ff Thanks @matthewp! - Fixes a type error when passing an image from a content collection image() schema to a component or <Image />. The schema returned by image() was missing the apng format, so it no longer matched the type of an imported image.

  • #17664 d483125 Thanks @astrobot-houston! - Fixes an issue where Astro CSP support didn't correctly handle cases "unsafe-inline" resource. Now when "unsafe-inline", Astro won't emit hashes for the directive specified.

  • #17810 0fc5f65 Thanks @florian-lefebvre! - Fixes a regression in the content collections that could cause images to not be resolved

  • #17781 aa33b44 Thanks @matthewp! - Fixes memoryCache() storing responses that set cookies through Astro.cookies or Astro.session

  • #17787 6661fbe Thanks @astro-factory! - Fixes server:defer crashing the dev server with "undefined is not a function" when a deferred component imports from astro:i18n

  • #17750 dd0e3ac Thanks @dobrodob! - Fixes a regression where transition:persist stopped working for <audio> and <video> elements.

  • #17774 fe1d16d Thanks @astro-factory! - Adds support for importing .apng files as image metadata for use with standard <img> elements. Astro's image components reject APNG files to avoid removing their animation

  • #17799 8797754 Thanks @astro-factory! - Fixes i18n fallbackType: "rewrite" returning 500 instead of 404 when the fallback locale also has no matching static path for a prerendered dynamic route

  • #17741 99d3d3d Thanks @ericswpark! - Bumps the Astro compiler to the latest version. Changelog.

  • #17782 3578d45 Thanks @Princesseuh! - Improves the performance of the Astro CLI in local by enabling Node's module compilation cache.

  • #17705 2043e4f Thanks @astrobot-houston! - Fixes incremental builds serving cached HTML that references stale CSS filenames after a stylesheet-only edit

  • #17754 3d50dfd Thanks @astro-factory! - Fixes the dev server refusing to start in Docker containers after a restart due to PID reuse in the lock file check

  • #17769 bbda94d Thanks @astro-factory! - Fixes a build failure when defining vite.environments.ssr in the Astro config. User-provided environment config for ssr, prerender, or client is now properly deep-merged with Astro's internal environment settings instead of silently breaking the server entry naming.

  • #17776 0874da8 Thanks @astro-factory! - Fixes the glob() content loader failing to load files with colons in their names (e.g., Guide: Architecture.md)

  • Updated dependencies [0762a83, 0c99615]:

    • @astrojs/markdown-satteri@0.3.8
View originalPermalink
How astro@7.2.5 went

@astrojs/mdx@7.0.8

Fixed 2
  • Fix build errors showing wrong file location, missing line:col, and misleading hints when a plugin error from MDX is wrapped by Vite's build error
  • Fix Sätteri processor option types to accept all plugin entries supported by Sätteri v0.10.3

From Astro

Patch Changes
  • #17757 660991c Thanks @astro-factory! - Fixes build errors showing wrong file location, missing line:col, and misleading hints when a plugin error (e.g. from MDX) is wrapped by Vite's build error

  • #17766 0762a83 Thanks @HiDeoo! - Fixes Sätteri processor option types to accept all plugin entries supported by Sätteri v0.10.3.

View originalPermalink
How @astrojs/mdx@7.0.8 went

astro-vscode@2.16.19

Fixed 1
  • Vue template auto-import completions now appear when the Astro extension loads first

From Astro

Patch Changes
  • #17791 426eaa1 Thanks @matthewp! - Fixes missing Vue template auto-import completions when the Astro extension loads first
View originalPermalink
How astro-vscode@2.16.19 went

@astrojs/cloudflare@14.2.4

Fixed 1
  • Fix dep scanning failure when .astro frontmatter contains regex literals with quote characters

From Astro

Patch Changes
  • #17789 7c541a7 Thanks @astro-factory! - Fixes dep scanning failure when .astro frontmatter contains regex literals with quote characters (e.g. /"/g)

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/cloudflare@14.2.4 went

astro@7.2.4

Fixed 4
  • Fix builds hanging when an image file is malformed
  • Fix base path stripping to respect path-segment boundaries so that a configured base like /docs no longer treats requests like /docs-archive/page as being under the base
  • Fix astro build throwing TypeError: Missing parameter for dynamic routes when build.format: 'preserve' and trailingSlash: 'always' are used together
  • Fix Astro.site always being undefined when rendering components via the Container API even when site is set in astroConfig

From Astro

Patch Changes
  • #17747 a90ff66 Thanks @Princesseuh! - Fixes builds hanging when an image file is malformed

  • #17701 05763a0 Thanks @matthewp! - Fixes base path stripping to respect path-segment boundaries. With a configured base such as /docs, a request like /docs-archive/page is no longer treated as being under the base, so routing and context.url.pathname now agree on the same pathname.

  • #17742 70b449d Thanks @Kjubikstronk! - Fixes astro build throwing TypeError: Missing parameter for dynamic routes when build.format: 'preserve' and trailingSlash: 'always' are used together. Stripping the framework-injected .html suffix dropped the trailing slash that the compiled route pattern requires, so the route no longer matched itself and its params resolved as empty.

  • #17703 771b0a9 Thanks @astrobot-houston! - Fixes Astro.site always being undefined when rendering components via the Container API, even when site is set in astroConfig

  • Updated dependencies [05763a0, bc171af]:

    • @astrojs/internal-helpers@0.10.4
    • @astrojs/markdown-satteri@0.3.7
    • @astrojs/markdown-remark@7.2.4
View originalPermalink
How astro@7.2.4 went

@astrojs/netlify@8.2.3

Patch Changes
  • Updated dependencies [05763a0]:
    • @astrojs/internal-helpers@0.10.4
    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/netlify@8.2.3 went

@astrojs/vercel@11.0.7

Fixed 1
  • Fix middlewareMode: 'edge' not running middleware when isr is also enabled by ensuring middleware runs at the edge for ISR-backed routes before the cached response is served and preserving query strings when forwarding the request

From Astro

Patch Changes
  • #17687 0a22ff5 Thanks @asmyshlyaev177! - Fixes middlewareMode: 'edge' not running your middleware when isr is also enabled

    Previously, enabling both options deployed the edge middleware but never reached it: requests went straight to the ISR function, which skips rendering entirely on a cache hit. Middleware now runs at the edge for ISR-backed routes before the cached response is served, and query strings are preserved when it forwards the request.

  • Updated dependencies [05763a0]:

    • @astrojs/internal-helpers@0.10.4
View originalPermalink
How @astrojs/vercel@11.0.7 went

@astrojs/mdx@7.0.7

Changed 1
  • Update Sätteri processor to v0.10.3

From Astro

Patch Changes
  • #17731 bc171af Thanks @Princesseuh! - Updates Sätteri processor to v0.10.3. See its changelog for details on bugs fixed and features added.

  • Updated dependencies [05763a0]:

    • @astrojs/internal-helpers@0.10.4
    • @astrojs/markdown-remark@7.2.4
View originalPermalink
How @astrojs/mdx@7.0.7 went

@astrojs/node@11.1.4

Changed 1
  • Updated @astrojs/internal-helpers to version 0.10.4

From Astro

Patch Changes
  • Updated dependencies [05763a0]:
    • @astrojs/internal-helpers@0.10.4
View originalPermalink
How @astrojs/node@11.1.4 went

@astrojs/markdown-remark@7.2.4

Changed 1
  • Updated @astrojs/internal-helpers to 0.10.4

From Astro

Patch Changes
  • Updated dependencies [05763a0]:
    • @astrojs/internal-helpers@0.10.4
View originalPermalink
How @astrojs/markdown-remark@7.2.4 went

@astrojs/preact@6.0.3

Changed 1
  • Updated @astrojs/internal-helpers to 0.10.3

From Astro

Patch Changes
  • Updated dependencies [8c193f6]:
    • @astrojs/internal-helpers@0.10.3
View originalPermalink
How @astrojs/preact@6.0.3 went

@astrojs/markdown-satteri@0.3.6

Changed 1
  • Update @astrojs/internal-helpers to 0.10.3

From Astro

Patch Changes
  • Updated dependencies [8c193f6]:
    • @astrojs/internal-helpers@0.10.3
View originalPermalink
How @astrojs/markdown-satteri@0.3.6 went

@astrojs/react@6.0.3

Changed 1
  • Updated @astrojs/internal-helpers to 0.10.3

From Astro

Patch Changes
  • Updated dependencies [8c193f6]:
    • @astrojs/internal-helpers@0.10.3
View originalPermalink
How @astrojs/react@6.0.3 went

@astrojs/mdx@7.0.6

Changed 2
  • Updated @astrojs/internal-helpers to 0.10.3
  • Updated @astrojs/markdown-remark to 7.2.3

From Astro

Patch Changes
  • Updated dependencies [8c193f6]:
    • @astrojs/internal-helpers@0.10.3
    • @astrojs/markdown-remark@7.2.3
View originalPermalink
How @astrojs/mdx@7.0.6 went

@astrojs/vercel@11.0.6

Fixed 1
  • Fix server islands returning 404 responses in Vercel deployments using output: "static"

From Astro

Patch Changes
  • #17680 ce9f1da Thanks @astrobot-houston! - Fixes server islands returning 404 responses in Vercel deployments using output: "static"

  • Updated dependencies [8c193f6]:

    • @astrojs/internal-helpers@0.10.3
View originalPermalink
How @astrojs/vercel@11.0.6 went

@astrojs/netlify@8.2.2

Patch Changes
  • Updated dependencies [8c193f6]:
    • @astrojs/internal-helpers@0.10.3
    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/netlify@8.2.2 went

astro@7.2.3

Changed 2
  • Remove the undocumented internal app.pipeline property and AppPipeline export from astro/app; adapters that used app.pipeline.getLogger() should call the new app.getLogger() instead
  • Improve error handling for custom log destinations to report the error and continue with the default console logger instead of failing the first request when the configured logger fails to load
Fixed 8
  • Fix an issue where Astro could run out of memory when experimental.collectionStorage is set to chunked and there are multiple concurrent updates to the same collection
  • Fix the dev server sometimes matching against stale routes after pages were added, removed, or renamed, requiring a dev server restart to pick up the change
  • Fix composable request helpers (astro/fetch) throwing an error when used on a request that had been rewritten with Astro.rewrite() or next()
  • Fix a link in font providers JSDoc annotations
  • Fix JSDoc for configuration options to display correctly when hovering over nested options in server and fonts
  • Fix a crash when a request arrives with a malformed port in the Host header by degrading to a host the server controls
  • Fix a dev server error where an SSR full reload triggered by a third-party Vite plugin could fail with Failed to load url astro:server-app.js
  • Fix getCollection() and getEntry() throwing DataCloneError when a collection schema transform returns a Temporal.PlainDate or other class instance

From Astro

Patch Changes
  • #17724 97140b2 Thanks @ematipico! - Fixes an issue where Astro could run out of memory when experimental.collectionStorage is set to chunked and there are multiple concurrent updates to the same collection.

  • #17636 51723b1 Thanks @matthewp! - Fixes the dev server sometimes matching against stale routes after pages were added, removed, or renamed, requiring a dev server restart to pick up the change

  • #17636 51723b1 Thanks @matthewp! - Fixes the composable request helpers (astro/fetch) throwing an error when used on a request that had been rewritten with Astro.rewrite() or next()

  • #17636 51723b1 Thanks @matthewp! - Refactors Astro's internal server-side request handling. This is an internal change: all documented public APIs, including App and NodeApp, keep their existing signatures and behavior.

    The undocumented internal app.pipeline property and the AppPipeline export from astro/app have been removed. Adapters that used app.pipeline.getLogger() to wait for the configured log destination can call the new app.getLogger() instead.

    As a result of this refactor, new FetchState(request) from astro/fetch now works anywhere inside a built Astro server — including custom src/fetch.ts entrypoints — without the request needing to first pass through app.render(). Previously this threw an error, breaking patterns like the Cloudflare adapter's advanced custom-worker setup.

  • #17723 c3b9aed Thanks @florian-lefebvre! - Fixes a link in font providers JSDoc annotations

  • #17699 e28d227 Thanks @ArmandPhilippot! - Fixes several documentation issues related to the JSDoc for configuration options.

    • When hovering over the server and fonts options, the JSDoc for the nested options was displayed instead of the JSDoc for the top-level property.
    • Two i18n configuration options were being used incorrectly in the examples.
    • The indentation of some code blocks was broken on hover.
  • #17572 2066f39 Thanks @matthewp! - Fixes a crash when a request arrives with a malformed port in the Host header (for example example.com:65536 or example.com:8080:8080). Such a host made the constructed request URL invalid, and the fallback that was meant to recover reused the same invalid host and threw again. The request URL now degrades to a host the server controls when the incoming host cannot be parsed, so the request is handled instead of erroring.

  • #17685 9f15609 Thanks @astrobot-houston! - Fixes a dev server error where an SSR full reload triggered by a third-party Vite plugin (such as @tailwindcss/vite) could fail with Failed to load url astro:server-app.js

  • #17636 51723b1 Thanks @matthewp! - Improves error handling for custom log destinations. When the configured logger fails to load, Astro now reports the error and continues with the default console logger instead of failing the first request.

  • #17631 cf29bec Thanks @matthewp! - Fixes getCollection() and getEntry() throwing DataCloneError when a collection schema transform returns a Temporal.PlainDate or other class instance.

  • Updated dependencies [8c193f6]:

    • @astrojs/internal-helpers@0.10.3
    • @astrojs/markdown-remark@7.2.3
    • @astrojs/markdown-satteri@0.3.6
View originalPermalink
How astro@7.2.3 went

@astrojs/node@11.1.3

Changed 2
  • Updated the adapter to wait for the configured log destination through Astro's new app.getLogger() API, requiring Astro 7.2.1 or later
  • Updated @astrojs/internal-helpers to 0.10.3

From Astro

Patch Changes
  • #17636 51723b1 Thanks @matthewp! - Updates the adapter to wait for the configured log destination through Astro's new app.getLogger() API. This release requires Astro 7.2.1 or later.

  • Updated dependencies [8c193f6]:

    • @astrojs/internal-helpers@0.10.3
View originalPermalink
How @astrojs/node@11.1.3 went

@astrojs/ts-plugin@1.10.11

Fixed 1
  • Prevent Astro's ambient types from leaking into unrelated TypeScript projects in monorepos with hoisted node_modules by only injecting types when the project actually depends on astro or has an astro.config file

From Astro

Patch Changes
  • #17668 bef9db5 Thanks @lazerg! - Fixes Astro's ambient types leaking into unrelated TypeScript projects. In a monorepo with hoisted node_modules, the plugin found the shared astro install from any project and injected env.d.ts and astro-jsx.d.ts into it, which pulled @types/node into projects that never asked for it. The plugin now only injects those types when the project actually depends on astro or has an astro.config.* file.
View originalPermalink
How @astrojs/ts-plugin@1.10.11 went

@astrojs/node@11.1.2

Fixed 1
  • Return a 404 instead of a 500 for unknown parameters that match a prerendered dynamic endpoint

From Astro

Patch Changes
  • #17400 c1cf110 Thanks @tianrking! - Return a 404 instead of a 500 for unknown parameters that match a prerendered dynamic endpoint.
View originalPermalink
How @astrojs/node@11.1.2 went

astro@7.2.2

Fixed 8
  • Component styles rendered from content entries no longer remain stale until a second save when an adapter uses Astro's fallback development environment
  • Incremental builds no longer drop optimized images for cached pages when using a collectStaticImages prerenderer
  • Limit concurrent image file reads to avoid exhausting OS file descriptors and retry transient I/O errors with backoff to fix intermittent ImageNotFound errors during build on projects with many images
  • Apply prerenderConflictBehavior to content collection duplicate ID warnings in the glob() and file() loaders
  • Fonts API no longer breaks experimental.incrementalBuild caching by embedding a build-local server port in generated code
  • Incremental builds no longer become prohibitively slow for sites with many pages or content entries that share a large dependency graph
  • Files in directories whose names start with pages are no longer treated as page routes
  • astro dev now starts successfully after a Docker container restart when an unrelated process reuses the PID from a persisted lock file

From Astro

Patch Changes
  • #17611 9bc3207 Thanks @thelazylamaGit! - Fixes component styles rendered from content entries remaining stale until a second save when an adapter uses Astro's fallback development environment

  • #17634 2267eee Thanks @astrobot-houston! - Fixes incremental builds dropping optimized images for cached pages when using a collectStaticImages prerenderer (e.g. @astrojs/cloudflare with compile-time image optimization)

  • #17650 4cdf128 Thanks @astrobot-houston! - Fixes intermittent ImageNotFound errors during build on projects with many images. The build now limits concurrent image file reads to avoid exhausting OS file descriptors (EMFILE) and retries transient I/O errors with backoff. Non-transient errors are no longer silently swallowed.

  • #17683 2378221 Thanks @astrobot-houston! - Fixes prerenderConflictBehavior not applying to content collection duplicate ID warnings in the glob() and file() loaders. Setting it to 'error' now throws during content sync, and 'ignore' suppresses the warning.

  • #17659 90c6ea4 Thanks @astrobot-houston! - Fixes the Fonts API breaking experimental.incrementalBuild caching by embedding a build-local, randomly-assigned server port in generated code used for the dependency hash

  • #17630 fd1d9ee Thanks @ericclemmons! - Fixes incremental builds becoming prohibitively slow for sites with many pages or content entries that share a large dependency graph.

  • #17690 93beecc Thanks @NgoQuocViet2001! - Prevents files in directories whose names start with pages from being treated as page routes

  • #17671 09f0dc7 Thanks @tarikermis! - Fixes astro dev refusing to start after a Docker container restart when an unrelated process reuses the PID from a persisted lock file. Astro now checks the process command across platforms, so stale lock files are cleaned up and --force does not signal the unrelated process.

View originalPermalink
How astro@7.2.2 went

@astrojs/cloudflare@14.2.1

Fixed 1
  • Fix the astro peer dependency range from ^7.0.0 to ^7.2.0 to support symbols (beginContentEntryCollection, beginImageCollection, endContentEntryCollection, endImageCollection) from astro/app that were added in Astro 7.2.0

From Astro

Patch Changes
  • #17627 ba6a9f6 Thanks @astrobot-houston! - Fixes the astro peer dependency range from ^7.0.0 to ^7.2.0. The adapter imports symbols (beginContentEntryCollection, beginImageCollection, endContentEntryCollection, endImageCollection) from astro/app that were added in Astro 7.2.0, so earlier versions fail at build time with a MISSING_EXPORT error.

  • Updated dependencies [0891ac9]:

    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/cloudflare@14.2.1 went

@astrojs/language-server@2.16.14

Fixed 1
  • Add all missing imports and Add import from quick fixes for Astro components

From Astro

Patch Changes
  • #17618 2630631 Thanks @lazerg! - Fixes the missing "Add all missing imports" and "Add import from" quick fixes for Astro components
View originalPermalink
How @astrojs/language-server@2.16.14 went

@astrojs/node@11.1.1

Fixed 1
  • Fix an EventEmitter memory leak when serving static pages over keep-alive connections with staticHeaders enabled and CSP (security.csp) active

From Astro

Patch Changes
  • #17658 8b211a5 Thanks @astrobot-houston! - Fixes an EventEmitter memory leak when serving static pages over keep-alive connections with staticHeaders enabled and CSP (security.csp) active
View originalPermalink
How @astrojs/node@11.1.1 went

@astrojs/netlify@8.2.1

Changed 1
  • Updated @astrojs/underscore-redirects to version 1.0.4

From Astro

Patch Changes
  • Updated dependencies [0891ac9]:
    • @astrojs/underscore-redirects@1.0.4
View originalPermalink
How @astrojs/netlify@8.2.1 went

@astrojs/underscore-redirects@1.0.4

Fixed 1
  • Dynamic redirect routes now honour user-configured status codes instead of hardcoding 301

From Astro

Patch Changes
  • #17620 0891ac9 Thanks @astrobot-houston! - Fixes dynamic redirect routes to honour user-configured status codes instead of hardcoding 301. Previously, a redirect configured with { destination: '/new', status: 302 } would be emitted as 301 in the _redirects file when the route was dynamic.
View originalPermalink
How @astrojs/underscore-redirects@1.0.4 went

astro@7.2.1

Changed 1
  • Improve getCollection() and getEntry() performance for entries without local image references
Fixed 8
  • Fix CSS hot module replacement after navigating between pages with ClientRouter
  • Fix CSP violation when using both security.csp and experimental.clientPrerender with data-astro-prefetch links by using a static speculationrules approach with deterministic hashing
  • Fix middleware HMR not responding to changes in imported modules
  • Fix content collection reference() fields silently accepting entry IDs that don't exist by logging an error for missing references
  • Fix requests handled by the dev prerender environment returning 500 when a prerendered catch-all route existed
  • Fix video and audio elements being non-functional after navigating via view transitions
  • Fix experimental.incrementalBuild re-rendering unchanged routes that import more than one asset by basing hash on resolved file names
  • Fix build error caused by hash collisions in generated content collection image import identifiers

From Astro

Patch Changes
  • #17612 7133730 Thanks @thelazylamaGit! - Fixes CSS hot module replacement after navigating between pages with ClientRouter

  • #17628 4ada248 Thanks @astrobot-houston! - Fixes a CSP violation when using both security.csp and experimental.clientPrerender with data-astro-prefetch links. The dynamically injected <script type="speculationrules"> now uses a static "source": "document" approach with a CSS selector, producing a deterministic payload that is hashed and included in the CSP script-src directive at build time.

  • #17605 89e4647 Thanks @ashleigh-yeoman! - Fixes middleware HMR not responding to changes in imported modules. Previously, only direct edits to the middleware file would trigger a reload.

  • #17582 bd2c1a5 Thanks @astrobot-houston! - Fixes a regression where content collection reference() fields silently accepted entry IDs that don't exist, such as an ID that doesn't match a loader's slugified version of it. Astro now logs an error for references that point to a missing entry after all loaders finish syncing.

  • #17661 97b0cc7 Thanks @ArmandPhilippot! - Improves Markdown options documentation with links to the Markdown guide and official processors.

  • #17349 4328c73 Thanks @astrobot-houston! - Fixes an issue where requests handled by the dev prerender environment (e.g. /_image with @astrojs/cloudflare's prerenderEnvironment: 'node') returned a 500 when a prerendered catch-all route existed, because non-prerendered route modules were imported in an environment where their runtime-specific APIs are unavailable

  • #17603 722eed6 Thanks @astrobot-houston! - Fixes <video> and <audio> elements being non-functional after navigating via view transitions (<ClientRouter />)

  • #17616 3a890d2 Thanks @lazerg! - Fixes experimental.incrementalBuild re-rendering unchanged routes that import more than one asset. The route's dependency hash depended on the order the assets finished building, so two builds of identical sources could produce different hashes. The hash is now based on the file name each asset resolves to.

  • #17547 fba468c Thanks @dmgawel! - Improves getCollection() and getEntry() performance for entries without local image references

  • #17602 16e0d9d Thanks @astrobot-houston! - Fixes a build error caused by hash collisions in generated content collection image import identifiers

View originalPermalink
How astro@7.2.1 went

@astrojs/solid-js@7.0.2

Fixed 1
  • Build crash when a Solid island imports a package that ships pre-compiled browser artifacts via the exports.solid condition by bundling Solid ecosystem packages in non-client environments so that Vite resolves the correct export condition during prerendering

From Astro

Patch Changes
  • #17584 5462b81 Thanks @astrobot-houston! - Fixes a build crash when a Solid island imports a package that ships pre-compiled browser artifacts via the exports.solid condition (e.g. @kobalte/core). Solid ecosystem packages are now bundled in non-client environments so that Vite resolves the correct export condition during prerendering.
View originalPermalink
How @astrojs/solid-js@7.0.2 went

@astrojs/vue@7.0.2

Fixed 1
  • Fix dev server crashes when Vue devtools are enabled with Vite 8

From Astro

Patch Changes
View originalPermalink
How @astrojs/vue@7.0.2 went

astro@7.2.0

Added 9
  • Add `astro preview --background` flag to start preview servers as background processes
  • Add `astro preview status`, `astro preview logs`, `astro preview logs --follow`, and `astro preview stop` subcommands to manage background preview servers
  • Automatically enable background mode for `astro preview` when detected to be run by an AI coding agent
  • Support paths relative to project root in `logger.entrypoint` configuration
  • Widen `AstroPrerenderer` `render()` return type to support `PrerenderResult` object for reporting incremental-build metadata
  • Add `session: false` configuration option to opt out of session support

From Astro

Minor Changes
  • #17174 0224a3a Thanks @matthewp! - Adds the astro preview --background flag to start preview servers as background processes.

    This makes preview servers easier to manage from scripts and AI coding agents because the command returns after the server is ready instead of keeping the terminal attached to the long-running process.

    astro preview --background
    

    When a preview server is running in the background, you can inspect or stop it with new astro preview subcommands:

    astro preview status
    astro preview logs
    astro preview logs --follow
    astro preview stop
    

    If Astro detects that astro preview is being run by an AI coding agent, background mode is enabled automatically. This matches the existing behavior for astro dev, allowing agents to continue working after the preview server starts while still receiving the server URL and process ID.

    To opt out of automatic background mode for preview servers, set ASTRO_PREVIEW_BACKGROUND=0 before running astro preview.

  • #17532 7f94895 Thanks @florian-lefebvre! - Adds support for paths relative to your project root in logger.entrypoint

    Previously, pointing logger.entrypoint at a custom log handler living in your own project required building an absolute URL. You can now write the path directly:

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

    Paths starting with ./ or ../ are resolved against your project root. Package specifiers such as @org/astro-logger, absolute paths, and URL entrypoints keep working as before.

  • #17084 961bbe5 Thanks @matthewp! - Widens the AstroPrerenderer render() return type so prerenderers can report incremental-build metadata

    A prerenderer's render() may now resolve to either a Response (as before) or a PrerenderResult object that pairs the response with the content entries and optimized-image transforms the page resolved. This lets prerenderers that render out of process (for example, in an adapter's runtime like workerd) report those dependencies back to the build, so incremental static builds can track and replay them for skipped pages.

    import type { AstroPrerenderer, PrerenderResult } from 'astro';
    
    const prerenderer: AstroPrerenderer = {
      name: 'my-adapter:prerenderer',
      getStaticPaths,
      async render(request, { routeData }): Promise<PrerenderResult> {
        const { response, metadata } = await renderInRuntime(request, routeData);
        return { response, metadata };
      },
    };
    

    This is a non-breaking widening: prerenderers that return a bare Response continue to work unchanged, and in-process prerenderers can keep returning a Response since the build collects their metadata directly.

  • #16871 90c98ae Thanks @adamchal! - Adds session: false in astro.config to opt out of session support. Projects that do not set session: false see no behavior change.

    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      session: false,
    });
    

    The session runtime and dependencies (unstorage) are now tree-shaken out of the SSR bundle for any project where no session driver is wired via:

    • session: false
    • no session config at all
    • a session config without a driver

    Useful for serverless/edge runtimes where cold-start parse time is sensitive.

  • #17084 961bbe5 Thanks @matthewp! - Adds experimental support for incremental static builds with experimental.incrementalBuild.

    When enabled, Astro can skip regenerating static pages from dynamic routes when both the page's module dependencies and its data cache key are unchanged from the previous build. This currently applies to pages returned from getStaticPaths() that include a cacheKey.

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

    Return a cacheKey for each generated page from getStaticPaths():

    ---
    export async function getStaticPaths() {
      const posts = await fetchPosts();
    
      return posts.map((post) => ({
        params: { slug: post.slug },
        props: { post },
        cacheKey: post.digest,
      }));
    }
    ---
    

    For incremental builds to skip rendering in CI, Astro's cache directory must be preserved between builds. Astro empties the output directory on each build and restores skipped pages from the cache directory, so only that directory needs to persist. For the default config, cache and restore node_modules/.astro/ before running astro build.

    See the experimental incremental static builds documentation for more information.

  • #17084 961bbe5 Thanks @matthewp! - Adds the optional digest property to content collection entries.

    Loaders can provide an opaque digest value that changes when an entry changes. This is now reflected in the CollectionEntry type returned by getCollection() and getEntry(), making it easier to detect content changes without re-hashing large entry bodies.

    ---
    import { getCollection } from 'astro:content';
    
    const posts = await getCollection('blog');
    
    for (const post of posts) {
      console.log(post.digest);
    }
    ---
    

    The property is optional because not every loader provides a digest. See incremental static builds for how digest can be used as a cacheKey.

Patch Changes
  • #17534 5a5337e Thanks @florian-lefebvre! - Improves logger.entrypoint reference docs

  • #17529 d52a787 Thanks @QVinto! - Fixes astro dev crashing with Invalid URL when --host is set to a specific non-loopback address

    Vite only reports a local URL for loopback hosts. When the dev server was started with --host <custom-address> bound to a specific non-loopback address (a LAN or Tailscale IP, for example), the URL was reported under network and local was empty, so writing the dev lock file threw Invalid URL and killed a server that had already started successfully.

    The lock file URL now falls back to the network URL, and a server that exposes no URL at all is left untracked rather than being taken down by lock file bookkeeping.

  • #17566 296248c Thanks @astrobot-houston! - Fixes fontProviders.googleicons() returning the full icon font (~3.9MB) instead of only the requested glyphs when multiple experimental.glyphs are specified

  • #17560 ef45de1 Thanks @astrobot-houston! - Fixes Astro.url.pathname for non-index pages when using build.format: 'preserve'. Previously, a page like src/pages/about-me.astro would output to dist/about-me.html but Astro.url.pathname would incorrectly return /about-me/ instead of /about-me.html.

  • #17573 0089f83 Thanks @astrobot-houston! - Fixes a Content Layer build crash that could occur when another dependency causes an older version of neotraverse to be hoisted to the project root

  • #17571 116f700 Thanks @astrobot-houston! - Fixes cookies set via Astro.cookies.set() inside a custom 404.astro or 500.astro error page being silently dropped from the final response

  • #17579 3ea55ce Thanks @bluwy! - Supports the devEngines field in package.json when detecting the package manager for install commands

  • #17422 e4e2037 Thanks @jiwonyoon-dev! - Fixes popover being rendered as popover="true"/popover="false" on custom elements (tag names containing a hyphen). Per the Popover API, the attribute only accepts "auto", "manual", or being absent, so boolean values are now always rendered as a bare popover attribute (or omitted), regardless of the tag name.

View originalPermalink
How astro@7.2.0 went

@astrojs/node@11.1.0

Changed 1
  • The adapter no longer auto-wires the filesystem session driver when session: false is set in astro.config, enabling session runtime to tree-shake out of the server bundle
Fixed 1
  • Fix middleware mode routing when a prerendered dynamic route sorts before an on-demand fallback

From Astro

Minor Changes
  • #16871 90c98ae Thanks @adamchal! - When session: false is set in astro.config, the adapter no longer auto-wires the filesystem session driver. Combined with the matching astro change, this lets the session runtime tree-shake out of the server bundle.
Patch Changes
  • #17564 004fb0a Thanks @dmgawel! - Fixes middleware mode routing when a prerendered dynamic route sorts before an on-demand fallback
View originalPermalink
How @astrojs/node@11.1.0 went

@astrojs/cloudflare@14.2.0

Added 2
  • Add opt-in build-time image optimization for the cloudflare-binding image service using compound configuration form
  • Support Astro's experimental incremental static builds to skip unchanged pages between builds when experimental.incrementalBuild is enabled
Changed 1
  • When session: false is set in astro.config, the adapter no longer auto-wires the Cloudflare KV session driver to allow session runtime tree-shake out of the Worker bundle
Fixed 4
  • Fix /_image returning 500 in dev mode when using imageService: 'custom' by using the generic fetch-based endpoint in dev
  • Fix a crash on /_image cache hits when the Cloudflare cache provider is enabled due to immutable headers from the Workers Cache API
  • Fix imageService: 'compile' producing unoptimized images when prerenderEnvironment is set to 'node'
  • Fix a type-checking error when using app.use(cf()) from @astrojs/cloudflare/hono in projects with wrangler types-generated ExecutionContext declarations

From Astro

Minor Changes
  • #16194 2a59663 Thanks @Daedalus-Icarus! - Adds opt-in build-time image optimization for the cloudflare-binding image service.

    When enabled, the Cloudflare IMAGES binding transforms static images in the workerd prerender environment, and the optimized bytes are written directly to the output directory. If the binding fails, it falls back to Sharp.

    To opt in, use the compound configuration form:

    export default defineConfig({
      adapter: cloudflare({
        imageService: { build: 'cloudflare-binding', runtime: 'cloudflare-binding' },
      }),
    });
    

    The string shorthand imageService: 'cloudflare-binding' preserves the current runtime-only behavior and is unaffected.

  • #16871 90c98ae Thanks @adamchal! - When session: false is set in astro.config, the adapter no longer auto-wires the Cloudflare KV session driver. Combined with the matching astro change, this lets the session runtime tree-shake out of the Worker bundle.

  • #17084 961bbe5 Thanks @matthewp! - Supports Astro's experimental incremental static builds. When experimental.incrementalBuild is enabled, the adapter skips unchanged pages between builds.

Patch Changes
  • #17576 0a79753 Thanks @alexanderniebuhr! - Fixes /_image returning 500 in dev mode when using imageService: 'custom'. Astro's default dev image endpoint imports vite and node:fs, which cannot be loaded inside workerd. The custom and fallback cases now use the generic fetch-based endpoint in dev, matching the other image service modes. A user-configured image.endpoint is left untouched.

    Additionally, a dev-time warning is now logged when imageService: 'custom' resolves to the Sharp service (including when no image.service is configured), since Sharp's native binding cannot run inside workerd in dev or production.

  • #17481 0c32649 Thanks @ondraulehla! - Fixes a crash on /_image cache hits when the Cloudflare cache provider is enabled. Responses served from the Workers Cache API have immutable headers, and the request handler crashed with "Can't modify immutable headers" when applying its default Cloudflare-CDN-Cache-Control: no-store header to them. The handler now rebuilds the response with mutable headers when needed.

  • #17347 ce83c39 Thanks @astrobot-houston! - Fixes imageService: 'compile' producing unoptimized images when prerenderEnvironment is set to 'node'

  • #17594 2b8915a Thanks @astrobot-houston! - Fixes a type-checking error when using app.use(cf()) from @astrojs/cloudflare/hono in projects with wrangler types-generated ExecutionContext declarations

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.3
View originalPermalink
How @astrojs/cloudflare@14.2.0 went

@astrojs/upgrade@0.7.4

Added 1
  • Support the `devEngines` field in package.json when detecting the package manager for install commands

From Astro

Patch Changes
  • #17579 3ea55ce Thanks @bluwy! - Supports the devEngines field in package.json when detecting the package manager for install commands
View originalPermalink
How @astrojs/upgrade@0.7.4 went

@astrojs/vercel@11.0.5

Fixed 1
  • Prevent `astro build` from crashing with `EEXIST` when `.vercel/output/server/` already exists by creating it with `{ recursive: true }`

From Astro

Patch Changes
  • #17569 d1bb7fa Thanks @lazerg! - Prevents astro build from crashing with EEXIST when .vercel/output/server/ already exists by creating it with { recursive: true }, matching the sibling static/ directory call
View originalPermalink
How @astrojs/vercel@11.0.5 went

@astrojs/netlify@8.2.0

Changed 1
  • When session: false is set in astro.config, the adapter no longer auto-wires the Netlify Blobs session driver to allow the session runtime to tree-shake out of the function bundle

From Astro

Minor Changes
  • #16871 90c98ae Thanks @adamchal! - When session: false is set in astro.config, the adapter no longer auto-wires the Netlify Blobs session driver. Combined with the matching astro change, this lets the session runtime tree-shake out of the function bundle.
Patch Changes
  • Updated dependencies []:
    • @astrojs/underscore-redirects@1.0.3
View originalPermalink
How @astrojs/netlify@8.2.0 went

@astrojs/cloudflare@14.1.7

Fixed 1
  • Fix a bug where Cloudflare couldn't load chunked collections via experimental.collectionStorage: 'chunked'

From Astro

Patch Changes
  • #17543 bbc1ec9 Thanks @ematipico! - Fixes a bug where Cloudflare couldn't load chunked collections via experimental.collectionStorage: 'chunked'.

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.3
View originalPermalink
How @astrojs/cloudflare@14.1.7 went

astro@7.1.6

Added 1
  • Add feature to experimental.collectionStorage that allows changing the size of chunks
Changed 1
  • Bump Astro compiler to the latest version
Fixed 2
  • Fix concurrent static builds failing to generate i18n rewrite fallbacks for dynamic routes
  • Fix stale dev CSS after editing component style blocks and CSS files in dev

From Astro

Patch Changes
  • #17536 ff97b86 Thanks @dmgawel! - Fixes concurrent static builds failing to generate i18n rewrite fallbacks for dynamic routes

  • #17383 296e1b0 Thanks @thelazylamaGit! - Fixes stale dev CSS after editing component style blocks and CSS files in dev

  • #17543 bbc1ec9 Thanks @ematipico! - Adds a feature to experimental.collectionStorage that allows to change the size of chunks.

    For example, you can reduce the size of chunks to 1MB:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        collectionStorage: {
          type: 'chunked',
          chunkSize: 1024 * 1024,
        },
      },
    });
    
  • #17545 5214663 Thanks @ematipico! - Bumps the Astro compiler to the latest version. Changelog.

View originalPermalink
How astro@7.1.6 went

@astrojs/netlify@8.1.3

Patch Changes
  • Updated dependencies [c895b12]:
    • @astrojs/internal-helpers@0.10.2
    • @astrojs/underscore-redirects@1.0.3
View originalPermalink
How @astrojs/netlify@8.1.3 went

@astrojs/preact@6.0.2

Changed 1
  • Update @astrojs/internal-helpers to version 0.10.2

From Astro

Patch Changes
  • Updated dependencies [c895b12]:
    • @astrojs/internal-helpers@0.10.2
View originalPermalink
How @astrojs/preact@6.0.2 went

@astrojs/mdx@7.0.5

Patch Changes
  • Updated dependencies [c895b12]:
    • @astrojs/internal-helpers@0.10.2
    • @astrojs/markdown-remark@7.2.2
View originalPermalink
How @astrojs/mdx@7.0.5 went

@astrojs/react@6.0.2

Changed 1
  • Updated @astrojs/internal-helpers to version 0.10.2

From Astro

Patch Changes
  • Updated dependencies [c895b12]:
    • @astrojs/internal-helpers@0.10.2
View originalPermalink
How @astrojs/react@6.0.2 went

astro@7.1.5

Changed 1
  • Update dependency js-yaml to v4.3.0
Fixed 4
  • Fix a bug where an error while finalizing a request could prevent a response from being sent
  • Fix a case where a custom logger.entrypoint failed to load at runtime in a built server bundle
  • Fix action path resolution so that properties of a resolved action function are not treated as routable path segments
  • Fix a bug where the custom 404 or 500 page was not rendered when a middleware rewrite targeted a route that returned an empty 404/500 response

From Astro

Patch Changes
  • #17524 7613030 Thanks @matthewp! - Fixes a bug where an error while finalizing a request could prevent a response from being sent

  • #17480 f61ba9c Thanks @florian-lefebvre! - Fixes a case where a custom logger.entrypoint failed to load at runtime in a built server bundle.

  • #17525 e614b7b Thanks @matthewp! - Fixes action path resolution so that properties of a resolved action function are not treated as routable path segments

  • #17284 c775c1f Thanks @matthewp! - Fixes a bug where the custom 404 (or 500) page was not rendered when a middleware rewrite targeted a route that returned an empty 404/500 response, and a blank page was returned instead

  • #17474 c895b12 Thanks @nicksnyder! - Updates dependency js-yaml to v4.3.0

  • Updated dependencies [c895b12]:

    • @astrojs/internal-helpers@0.10.2
    • @astrojs/markdown-remark@7.2.2
    • @astrojs/markdown-satteri@0.3.5
View originalPermalink
How astro@7.1.5 went

@astrojs/cloudflare@14.1.5

Fixed 1
  • Fix a bug where an explicit `cache: { enabled: false }` in your wrangler config was overridden and forced to `true` when a Workers cache provider was configured

From Astro

Patch Changes
  • #17376 0216368 Thanks @astrobot-houston! - Fixes a bug where an explicit cache: { enabled: false } in your wrangler config was overridden and forced to true when a Workers cache provider was configured

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.3
View originalPermalink
How @astrojs/cloudflare@14.1.5 went

astro@7.1.4

Added 1
  • Add the missing `background` prop to the `<Image />` and `<Picture />` component types
Fixed 7
  • Fix duplicate CSS files being emitted in server output when a prerendered page and a server-rendered page share the same styles by reusing the CSS asset filename from the prerender build
  • Fix missing scoped styles for child components inside `client:only` islands in production builds
  • Fix session runtime errors being silently swallowed by `console.error` instead of routing through Astro's logger
  • Fix a session being left in a partial state after a storage failure during `session.regenerate()`
  • Prevent a visible terminal window from popping up on Windows when the dev server runs in background mode
  • Fix the `glob()` loader watcher so negation patterns like `!docs/drafts/**` correctly exclude files during development
  • Fix TypeScript path aliases from `tsconfig.json` not resolving in `astro.config.ts`

From Astro

Patch Changes
  • #17488 d4f266d Thanks @emerson-d-lopes! - Fixes duplicate CSS files being emitted in server output when a prerendered page and a server-rendered page share the same styles (e.g. a shared layout importing Tailwind). The prerender and SSR environments each emitted their own copy of the same stylesheet (index.X.css and _..Y.css); the SSR build now reuses the CSS asset filename from the prerender build when the stylesheet is backed by the same CSS source modules, so only a single file is emitted.

  • #17472 4dc590c Thanks @astrobot-houston! - Adds the missing background prop to the <Image /> and <Picture /> component types. The prop already worked at runtime, but was absent from the types, causing astro check to report that background does not exist on the component props

  • #17292 0fc519d Thanks @astrobot-houston! - Fixes missing scoped styles for child components inside client:only islands in production builds

  • #17421 f1448de Thanks @iamkaleemsajjad-hue! - Fixes session runtime errors being silently swallowed by console.error instead of routing through Astro's logger

  • #17421 f1448de Thanks @iamkaleemsajjad-hue! - Fixes a session being left in a partial state after a storage failure during session.regenerate(), preventing unnecessary storage reads on subsequent operations

  • #17517 82bf7e2 Thanks @Hashim1999164! - Prevents a visible terminal window from popping up on Windows when the dev server runs in background mode. The detached child process is now spawned with windowsHide: true, so console-subsystem grandchildren (such as workerd.exe) no longer get a new focus-stealing window allocated by Windows Terminal.

  • #17510 eaa1fb0 Thanks @astrobot-houston! - Fixes the glob() loader watcher so negation patterns like !docs/drafts/** correctly exclude files during development, matching the behavior of the initial scan. Previously, negations were treated as independent matchers, causing unrelated files (including .astro/data-store.json) to be ingested as collection entries

  • #17511 704e570 Thanks @astrobot-houston! - Fixes TypeScript path aliases from tsconfig.json not resolving in astro.config.ts

View originalPermalink
How astro@7.1.4 went

create-astro@5.2.3

Fixed 1
  • Fix create-astro silently writing template files to the wrong directory on Linux when the path contains non-ASCII characters

From Astro

Patch Changes
  • #17423 08e8adb Thanks @astrobot-houston! - Fixes create-astro silently writing template files to the wrong directory on Linux when the path contains non-ASCII characters.
View originalPermalink
How create-astro@5.2.3 went

@astrojs/markdoc@2.0.5

Fixed 2
  • Custom transform functions are no longer dropped when a tag or node also specifies a custom render component; user-written transforms are always preserved while only Markdoc's built-in transforms are removed
  • Custom transform functions are no longer incorrectly dropped for tags and nodes whose names require bracket access like side-note; the check now recognizes bracket notation, optional chaining, and whitespace in addition to dot notation

From Astro

Patch Changes
  • #17460 3b93a1a Thanks @astrobot-houston! - Fixes custom transform functions being dropped when a tag or node also specifies a custom render component. User-written transforms are now always preserved; only Markdoc's built-in transforms are removed so the custom component wins.

  • #17191 fc3fb2b Thanks @eldardada! - Fixes custom transform functions being incorrectly dropped for tags and nodes whose names require bracket access (e.g. side-note). The check that detects whether a transform respects a custom render component now recognizes bracket notation, optional chaining and whitespace, not only dot notation.

View originalPermalink
How @astrojs/markdoc@2.0.5 went

@astrojs/mdx@7.0.4

Fixed 1
  • Fix a bug where the integration was emitting React-cased attribute names

From Astro

Patch Changes
View originalPermalink
How @astrojs/mdx@7.0.4 went

@astrojs/language-server@2.16.13

Fixed 1
  • Errors in files included in tsconfig project references are now properly caught

From Astro

Patch Changes
View originalPermalink
How @astrojs/language-server@2.16.13 went

astro@7.1.3

Fixed 1
  • Image optimization during astro build now respects the container's CPU limit, reducing peak memory usage and avoiding out-of-memory crashes in CPU-limited containers

From Astro

Patch Changes
  • #17427 630b382 Thanks @astrobot-houston! - Fixes image optimization during astro build using too many parallel processes in CPU-limited containers. Builds now respect the container's CPU limit, reducing peak memory usage and avoiding out-of-memory crashes.
View originalPermalink
How astro@7.1.3 went

@astrojs/cloudflare@14.1.4

Fixed 1
  • Fix dev server crash when using Astro Actions with the Cloudflare adapter

From Astro

Patch Changes
  • #17457 d46ecd8 Thanks @matthewp! - Fixes a dev server crash when using Astro Actions with the Cloudflare adapter

  • Updated dependencies []:

    • @astrojs/underscore-redirects@1.0.3
View originalPermalink
How @astrojs/cloudflare@14.1.4 went

astro@7.1.2

Changed 1
  • Update dependency cookie to v2, where cookie values made entirely of URL-safe characters are no longer percent-encoded in Set-Cookie headers
Fixed 2
  • Fix a bug where mutated Astro.locals during the request lifecycle are lost and not passed to custom error pages (404.astro/500.astro)
  • Prevent an unhandled promise rejection from the prefetch fetch fallback by swallowing failures with .catch()

From Astro

Patch Changes
  • #17445 a5f7230 Thanks @ocavue! - Updates dependency cookie to v2. Cookie values made entirely of URL-safe characters are no longer percent-encoded in Set-Cookie headers; encoded values round-trip exactly as before.

  • #17402 a89c137 Thanks @farrosfr! - Fixes a bug where mutated Astro.locals during the request lifecycle are lost and not passed to custom error pages (404.astro/500.astro)

  • #17405 91992ef Thanks @Araluma! - Prevents an unhandled promise rejection from the prefetch fetch fallback. In WebKit (Safari), <link rel="prefetch"> is unsupported, so prefetch uses the fetch() fallback; on a flaky connection that fetch rejects with TypeError: Load failed, and because the promise was not awaited or caught, it surfaced as an unhandled rejection to the page's global error handlers. The best-effort prefetch now swallows the failure with .catch().

View originalPermalink
How astro@7.1.2 went

astro@7.1.1

Fixed 1
  • Encoded request paths being routed incorrectly when using domain-based i18n

From Astro

Patch Changes
  • #17399 4b03702 Thanks @matthewp! - Fixes encoded request paths being routed incorrectly when using domain-based i18n
View originalPermalink
How astro@7.1.1 went

astro@7.1.0

Added 5
  • Add a new `deferRender` option to the `glob()` content loader that defers rendering of Markdown and other renderable entries until they are actually rendered in a page, reducing memory usage during `astro build` for large collections
  • Add a new experimental `collectionStorage` option for controlling how the content layer persists its data store, allowing it to be split across many smaller content-addressed files instead of a single file
  • Add support for more specific CSP directives `script-src-elem`, `script-src-attr`, `style-src-elem`, and `style-src-attr` through a new `kind` option in both config and runtime CSP API
  • Add a new `format()` option to the `paginate` utility that accepts a function to transform the current URL of the page
  • Add a `--ignore-lock` flag to `astro dev` for starting a dev server without checking or writing the lock file

From 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

View originalPermalink
How astro@7.1.0 went

astro@7.0.9

Fixed 2
  • Fix the first browser visit after astro dev starts triggering an immediate full page reload
  • Fix an issue where a client island could permanently fail to hydrate if the first attempt to load its component failed, ensuring islands now reliably recover from transient import failures

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

View originalPermalink
How astro@7.0.9 went

astro@7.0.8

Added 1
  • Expose the `AstroRuntimeLogger` interface to allow users to properly type the logger functions at runtime
Changed 2
  • Update the Astro compiler to the latest version, which fixes many regressions
  • Improve rendering performance for pages with many component instances, such as repeated MDX `<Content />` components
Fixed 2
  • Fix `astro preview --open` not opening a browser when using an adapter with a custom preview entrypoint, such as `@astrojs/cloudflare`
  • Fix `astro dev --force` not replacing an already-running dev server

From 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
View originalPermalink
How astro@7.0.8 went
View all

Discussion

If you publish Astro, you can claim this product by proving you administer its repository.