# What changed in astro

> 819 changes in astro 5 to 7 from its official release notes, upgrade guides and advisories: 124 breaking, 20 deprecations, 53 security, 115 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/astro/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## astro 7

### Breaking changes

- The glob loader no longer swallows rendering errors during content sync, so astro build fails when remark or rehype plugins throw. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Rendering errors during content sync now cause astro build to fail instead of being swallowed and returning exit code 0. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- The minimum supported Node.js version is now 22.22.0. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0), [docs](https://docs.astro.build/ko/guides/deploy/netlify/)
- Prerender errors now fail the build instead of being silently written as empty HTML files. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Malformed JSON action requests now return 400, while malformed percent-encoded action names return 404. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Composable handlers now reject over-encoded request paths with 400 Bad Request, matching astro(). (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Composable handlers now reject over-encoded request paths with 400 Bad Request, matching astro(). (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- The Node adapter now validates the Host header against security.allowedDomains. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Astro components must be imported with the new query string to use the container renderer. (7.3.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.5)
- On Windows with an AI agent detected, astro dev and astro preview run in the foreground unless --background is passed. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- The options type now prevents passing `widths` and `densities` together. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Dynamic values in MDX script and style children are now escaped; use set:html to explicitly render them as raw markup. (7.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.2)
- The minimum supported version of Sharp is now 0.35.4. (7.2.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.8)
- Cloudflare integrations now require Wrangler version 4.125.0 or newer. (7.2.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.7)
- Module imports added without a corresponding deferredRender entry are no longer preserved across writes. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Astro CSP no longer emits hashes for directives using unsafe-inline. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- The undocumented internal app.pipeline property has been removed; adapters should use app.getLogger() instead. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- The AppPipeline export from astro/app has been removed; adapters should use app.getLogger() instead. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- Files in directories whose names start with pages are no longer treated as page routes. (7.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.2)
- Content collection references to missing entries now produce an error after loaders finish syncing. (7.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.1)
- Removes an unused and undocumented generic parameter from the logger destination type. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- The Astro DB CLI command is no longer available. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The Astro init CLI command is no longer available. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The Astro link CLI command is no longer available. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The Astro login CLI command is no longer available. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The Astro logout CLI command is no longer available. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Deprecated transition constants, event guards, and createAnimationScope() can no longer be used. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The Rust-based compiler is now the default, improving build speed and development iteration while enforcing stricter syntax handling. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The unmaintained Astro DB package has been removed and projects must choose another database solution. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The remark/rehype processor is no longer installed by default and must be installed explicitly to use that pipeline. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Route caching is stable and the cache configuration moves from experimental.cache to the top level. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The default is now JSX-style HTML compression, removing surrounding whitespace while preserving meaningful inline spaces. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The experimental queued-rendering setting has been removed because the new rendering engine is stable. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The experimental compiler-selection flag has been removed because the Rust compiler is now default. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The entrypoint setting is now top-level and can be set to a custom file or null. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Route caching rules are stable and routeRules moves from experimental.routeRules to the top level. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Markdown files now use the native Sätteri processor by default instead of the remark/rehype pipeline. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Advanced routing now uses src/fetch.ts as its default entrypoint. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The public advanced-routing provider extension point is now internal-only; integrations should use locals for per-request state. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Astro now supports Vite 8. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)

### Security

- CSRF protection now takes modern browser headers into account. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Domain-based i18n routing now respects allowed request host domains when selecting a locale. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- SVG `<style>` elements nested inside `<defs>` or other containers are now hashed for CSP. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Astro: Remote code execution through AVIF image optimization (7.2.8) — [security advisory](https://github.com/advisories/GHSA-26W7-CXV4-GFX2)
- Non-UUID cookie values are rejected before they are used as storage keys. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Base path stripping now respects path-segment boundaries, keeping routing and context.url.pathname consistent. (7.2.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.4), [security advisory](https://github.com/advisories/GHSA-376H-93R7-7G6F)
- Hardens development metadata when embedding dynamic values. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- Hardens generated transition styles when embedding dynamic values. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0), [security advisory](https://github.com/advisories/GHSA-4G3V-8H47-V7G6)
- Hardens server island URLs when embedding dynamic values. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- Astro: XSS via unescaped spread attribute names in renderHTMLElement (incomplete fix for CVE-2026-54298) (7.0.6) — [security advisory](https://github.com/advisories/GHSA-F48W-9M4C-M7F5)
- The origin check now applies consistently to Astro Actions and on-demand endpoints across request pipeline compositions. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6), [security advisory](https://github.com/advisories/GHSA-8MV7-9C27-98VC)
- Forwarded host validation now occurs before trusting X-Forwarded-For for clientAddress, protecting forwarded request handling. (7.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.4)
- Transition directive values are HTML-escaped when rendered on hydrated islands. (7.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.4), [security advisory](https://github.com/advisories/GHSA-7PW4-F3Q4-R2P2)
- Astro now enforces stricter limits on URL decoding operations. (6.4.8, 7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.8)

### Deprecations

- Returning a plain array from getStaticPaths is deprecated because images used on those pages are not generated. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Returning a plain Response from render is deprecated because images used on those pages are not generated. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Deprecation messages now target Astro 8. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)

### New APIs and options

- The new flag prints build timing summaries to help identify slow integrations, processors, image processing, or syntax highlighting. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Permite conservar el enrutamiento integrado de Astro y añadir preprocesamiento y posprocesamiento personalizados en un solo lugar. (7.4.0) — [docs](https://docs.astro.build/es/guides/routing/)
- Static pages can be rendered in parallel across CPU cores to reduce build times, with higher memory usage. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Static redirect pages can be customized with a project-provided page for branding or translation. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Font provider init contexts now include a fetch function that requests provider APIs and retries transient failures. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Font providers can expose supported weights, styles, subsets, and formats so Astro can warn about unavailable configuration values. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Image services can now be configured separately for build-time prerendering and runtime on-demand rendering. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- The new handler renders the custom 404 page for unmatched routes in astro/fetch and astro/hono integrations. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Custom prerenderers can access the final client, server, and prerender output locations. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Adds a container function that renders Astro components with inlined styles and scripts. (7.3.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.5)
- Passing --background explicitly requests an Astro-managed background process. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- Adds --ignore-lock so multiple preview servers can run simultaneously on different ports, useful for E2E testing workflows. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- Custom cache providers receive Astro's runtime logger in the onRequest context. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- Custom image services receive Astro's runtime logger so messages follow the configured destination and log level. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- APNG files can be imported as image metadata for standard img elements; image components continue rejecting them to preserve animation. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Adapters can use app.getLogger() to wait for the configured log destination. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- Starts preview servers as background processes and returns after the server is ready. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Setting this environment variable to 0 opts out of automatic background mode for preview servers. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Displays logs from a preview server running in the background. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Follows logs from a background preview server. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Inspects a preview server running in the background. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Stops a preview server running in the background. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- The render method may return a Response or PrerenderResult containing metadata for incremental static builds. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- A cacheKey can identify generated pages from getStaticPaths() for incremental static builds. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Content collection entries optionally expose a loader-provided digest to detect content changes without re-hashing entry bodies. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Enables experimental incremental static builds that skip unchanged pages from dynamic routes. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Adds session: false to opt out of session support. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Adds a chunkSize setting to control the size of chunks used by collectionStorage. (7.1.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.6)
- Allows a development server to run without checking or writing the project lock file. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- Adds chunked persistence for large content layer data stores to avoid platform file-size limits. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- Adds deferred rendering for renderable content entries, reducing memory usage during large astro build operations. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- Allows the logger entrypoint to be configured with a URL. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- Allows CSP resources and hashes to target element-specific or attribute-specific script and style directives. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- The AstroRuntimeLogger interface is now exposed so runtime logger functions can be typed properly. (7.0.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.8)
- Shared helpers are exported for CDN cache provider authors to build headers, invalidation tags, and normalized options. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The new flag starts the development server as a detached background process. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Setting this environment variable to 0 opts out of automatic background mode when an AI coding agent is detected. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- A new subcommand displays logs from a background development server and can stream new output. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- A new subcommand reports whether a development server is running, including its URL, PID, and uptime. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- A new subcommand stops a running background development server. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Cache providers now receive the incoming Request as a second argument when generating response headers. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- FontData entries now expose the subset name so applications can distinguish font entries sharing weight and style. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- getFetchState() is now public from astro/hono, allowing custom Hono middleware to access Astro per-request state. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)

### Performance

- The dev server no longer re-evaluates the whole server module graph on every request. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- Startup is faster because content configuration and app module graphs compile during server creation without blocking listening. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Rendering performance improves. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Improves build performance for sites with many pages originating from many different modules. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- Each route is deserialized only once when loading the SSR manifest. (7.2.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.7)
- The local Astro CLI uses Node's module compilation cache to improve performance. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- No-op pathname writes are skipped when normalizing SSR request URLs. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Incremental builds are no longer prohibitively slow for sites with many pages or content entries sharing a large dependency graph. (7.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.2)
- getCollection() is faster for entries without local image references. (7.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.1)
- getEntry() is faster for entries without local image references. (7.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.1)
- The session runtime and unstorage dependencies are tree-shaken when no session driver is configured, reducing SSR bundle cold-start parsing. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Rendering is faster for pages with many component instances, including repeated MDX Content components. (7.0.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.8)

### Behavior and default changes

- Custom prerenderers can return image metadata from getStaticPaths so Astro generates images used on prerendered pages. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Dynamic routes in static mode must export getStaticPaths() to return every path that should be generated at build time. (7.4.0) — [docs](https://docs.astro.build/ja/reference/errors/get-static-paths-required/)
- Dev mode uses path-based class name hashing so CSS edits do not change generated selectors or require a full reload. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- YAML parsing now supports timestamps and merge keys, with consistent errors across Astro, Markdown, MDX, and Markdoc. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- On Windows, the command runs in the foreground when an AI agent is detected, allowing the agent to manage its process lifetime. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- Incremental builds support concurrent rendering, including when using @astrojs/cloudflare. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- Remaining internal warnings and errors use the configured logger instead of writing directly to the console when possible. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- Generated and default Cloudflare compatibility dates now match the installed runtime. (7.2.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.7)
- Package manager detection for install commands now recognizes the devEngines field in package.json. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Accepts paths relative to the project root, while package specifiers, absolute paths, and URL entrypoints continue working. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- URL-safe cookie values are no longer percent-encoded, while encoded values continue to round-trip exactly as before. (7.1.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.2)
- Generated image styles now use `@layer astro.images`, giving user-defined CSS layers higher cascade priority. (7.0.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.1)
- Advanced routing is now stable and enabled by default. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- context.logger is now always defined in API routes and middleware, even without custom logger configuration. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The experimental advanced-routing flag should be removed because the feature is enabled by default. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Rendering now streams components as they are encountered and flushed instead of constructing a queue. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)

### Tooling

- Astro CLI commands can now install tagged package versions. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- The TypeScript 7 error now explains the unsupported status and provides experimental type-checking instructions. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- Editing action files during development now applies on the next request without restarting the dev server. (7.0.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.3)
- The development server writes a lock file containing its URL, port, and PID to prevent duplicate servers. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)

### Fixes and other changes

- Original images are no longer retained when only width or height is read. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Deployment integrations can use Vite manifests when preparing build output. (7.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.4.0)
- Preserves existing allowBuilds approvals in pnpm-workspace.yaml when using pnpm v11.0–v11.22. (7.3.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.8)
- Astro.cache is no longer undefined when a custom 404 or 500 page is rendered by the error handler. (7.3.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.8)
- The glob() loader now reloads changed files in development when patterns start with an extglob. (7.3.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.8)
- Dependency installation failures now display the package manager's error output. (7.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.7)
- The command now installs dependencies successfully with pnpm v11+ by approving the workerd build script. (7.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.7)
- The configured cache provider is registered before rendering, making Astro.cache available to downstream handlers such as pages(). (7.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.7)
- The cache() handler no longer throws a TypeError when a cache provider is configured. (7.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.7)
- AVIF images are served with the correct image/avif MIME type instead of image/heif in the dev server. (7.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.7)
- The layout frontmatter property is ignored for content collection entries, preventing a build error with deferred glob rendering. (7.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.7)
- Origin checks no longer reject cross-origin requests with non-form content types such as application/json. (7.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.7)
- Prevents intermittent dev server crashes when used inside a server island with adapters using a pre-bundled SSR environment. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Prevents Windows builds with Node.js 25+ from failing when clearing the output directory encounters a transient EPERM error. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Prevents CSS from other pages leaking into a page's head during development. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Dependency scanning no longer fails when an Astro file contains a literal script tag in frontmatter or a template expression. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Request cookies with empty values no longer produce undefined. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Astro.rewrite no longer selects the wrong route in astro dev when two dynamic routes match the same path. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Production builds no longer duplicate CSS when a component is server-rendered and also used with client:only. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Preserves request state when Vite discovers server dependencies during a request. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Content collection changes are no longer ignored in astro dev after a configuration-triggered server restart. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- context.props is no longer null in middleware and endpoints for specified composable handler ordering. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- context.rewrite no longer selects the wrong route in astro dev when two dynamic routes match the same path. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- CSS Module HMR now works when a component is rendered both hydrated and non-hydrated on the same page. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Preloaded CSS files no longer return 404 when the imported module uses a component also hydrated as an island. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Rendered output no longer includes dev toolbar source attributes when components are rendered under Vitest. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Fixes type errors in Astro's built-in Font component when type-checking with tsc and the content mapper. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- The fontsource provider now resolves variable fonts when the font name uses the Variable suffix. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- The glob loader no longer skips content files whose paths contain hash or question-mark characters. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Composable i18n handlers now render the custom 404 page for paths without a locale prefix. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Routes added with injectRoute now work without a locale prefix when this option is enabled. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Injected routes without locale prefixes no longer return 404 when the default locale is prefixed. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- CSS imported from a page injection script is no longer dropped during builds. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Localized error pages now return their error status instead of 200 through the pages handler. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Fixes type errors in Astro's built-in Picture component when type-checking with tsc and the content mapper. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Prevents stale scoped styles during HMR when markup and style change together. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Prevents hangs when a deferred component is inside another component's slot in an MDX content collection entry. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Framework components inside server islands no longer render empty in the dev server with a custom fetch file. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- The server manifest assets array now has deterministic ordering, producing byte-identical builds from identical inputs. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Astro now works in StackBlitz and other WebContainer environments. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Removes a stale directive that caused MODULE_LEVEL_DIRECTIVE warnings during builds. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Muted video elements no longer lose their muted state after ClientRouter navigation in Chrome. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Custom direction names that are invalid CSS identifiers now match their animations correctly. (7.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6)
- Responsive image styles no longer emit invalid object-position values for same-axis keyword pairs. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- Unchanged pages are no longer repeatedly rendered when bundled assets are referenced by modules or compiled CSS. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- Ampersands in Markdown image alt and title attributes are escaped exactly once in final HTML. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- The dev overlay now shows the documented unsuffixed error name instead of a name ending in Error. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- The dev overlay now shows the documented unsuffixed error name instead of a name ending in Error. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- The dev overlay now shows the documented unsuffixed error name. (7.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.4)
- Importing `astro:actions` in Cloudflare Vitest pool worker tests no longer causes a WebAssembly error. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Writes outside the module graph no longer invalidate middleware and trigger repeated SSR reloads. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Renderer server entrypoints and the default console logger are pre-bundled during dev, preventing mid-request re-optimization crashes on Cloudflare. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- The flag now starts preview or dev servers in the foreground in AI agent environments unless `--background` is also specified. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Locale matching now handles casing differences and underscores for object-form locale configurations. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Development URLs that merely share a prefix with the configured base are no longer incorrectly rewritten. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Content collection HMR now updates prerendered pages when adapters use a separate prerender environment. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- CSS HMR now works for framework components rendered through content entries after `ClientRouter` navigation. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Custom dev toolbar app UIs now persist through client-side navigation with `<ClientRouter />`. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- MDX files are included in dependency scanning so framework dependencies are bundled before runtime, preventing an initial page reload. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Restored pages no longer retain stale CSS after preprocessor changes or missing original images. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- TypeScript autocompletion now suggests all available predefined options. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Deleted files are removed from the content data store, and new files in empty collections are detected without restarting. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Invalid and missing local image paths now return appropriate 400 and 404 responses. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Prerendered Cloudflare pages no longer render as `[object Object]` when `nodejs_compat` is enabled. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Dynamic route parameters containing `$` replacement patterns no longer corrupt redirect targets. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Redirect response HTML now points to the corrected trailing-slash target and preserves the query string. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Generated CSS now serializes transition animation values more reliably. (7.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.3)
- Prevents a 504 Outdated Optimize Dep error when workspace-linked packages import dependencies missed by Vite's initial scan. (7.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.2)
- Fixes sessions breaking in dev mode when using the Cloudflare adapter with middleware. (7.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.2)
- Fixes an error that prevented projects using astro:assets from starting or building. (7.3.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.1)
- Incremental builds no longer disable caching when build.concurrency is greater than 1, so the workaround setting it to 1 can be removed. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- Fallback routing now replaces the actual locale segment instead of the first matching substring, preventing mangled paths. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.2), [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- The memory cache provider now skips responses with Vary: Cookie or Vary: *. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- Restores missing styles, links, and scripts from content collection entries rendered inside server islands. (7.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.0)
- The package is no longer pinned to an exact version, allowing compatible version resolution. (7.2.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.10)
- Cached responses containing Last-Modified or ETag validators are handled correctly by browser heuristic caching. (7.2.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.10)
- Editing entries during astro dev on Windows now refreshes served content without restarting the dev server. (7.2.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.10)
- Runtime logger initialization in development is corrected. (7.2.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.10)
- Images no longer render an empty srcset attribute when no responsive candidates are generated. (7.2.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.10)
- Warnings correctly identify the route that first rendered a duplicate pathname instead of an unrelated matching route. (7.2.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.10)
- The placeholder is replaced correctly in minified server builds, preventing an Invalid URL crash at server boot. (7.2.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.10)
- SSR manifests no longer reference prerender-only chunks absent from final build output. (7.2.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.9)
- `.html` imports are now typed outside `.astro` files. (7.2.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.9)
- Requesting `/index.html` no longer crashes against a dynamic page route. (7.2.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.9)
- `set:text` escaping now works correctly in MDX script and style elements. (7.2.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.9)
- next now works for GET and HEAD requests with host-provided bodies. (7.2.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.7)
- rewrite now works for GET and HEAD requests with host-provided bodies. (7.2.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.7)
- Route selection now works correctly for normalized request paths in adapters and development request handling. (7.2.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.7)
- The experimental svgOptimizer now generates unique per-file ID prefixes with SVGO's prefixIds plugin. (7.2.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.7)
- Fixes development failures when creating FetchState with a request while server dependencies are optimized. (7.2.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.6)
- CLI flags are preserved when running the development server in the background. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Accept-Language quality values are honored, including implicit quality 1.0 and q=0 rejection. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Locale selection now honors Accept-Language quality values regardless of header order. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Wrapped plugin errors now show the correct file location, line and column, and hints. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- A regression that could prevent content collection images from being resolved is fixed. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- The development server can restart in Docker containers without failing due to PID reuse in the lock-file check. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Valid font URLs are no longer rejected when using the Cloudflare adapter. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- i18n rewrite fallback returns 404 instead of 500 when no matching prerendered static path exists. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- The content loader now loads files whose names contain colons. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- The image() schema now includes apng so content collection images match imported image types. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Stylesheet-only edits no longer serve cached HTML referencing stale CSS filenames. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Responses that set cookies through Astro.cookies or Astro.session are no longer stored. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Deferred components importing from astro:i18n no longer crash the development server. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Persisted transitions work again for audio and video elements. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- User configuration for ssr, prerender, and client environments is now properly deep-merged with Astro's internal settings. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- User-provided environment settings are deep-merged with Astro's internal settings instead of breaking server entry naming. (7.2.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.5)
- Builds no longer hang when an image file is malformed. (7.2.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.4)
- Astro.site is now available when rendering components through the Container API if site is configured. (7.2.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.4)
- Dynamic routes no longer throw Missing parameter with build.format preserve and trailingSlash always. (7.2.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.4)
- Composable request helpers no longer throw when used on requests rewritten with Astro.rewrite() or next(). (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- If a configured logger fails to load, Astro reports the error and continues with the default console logger. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- The dev server now recognizes route changes after pages are added, removed, or renamed without requiring a restart. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- Prevents out-of-memory errors when chunked collection storage receives multiple concurrent updates to the same collection. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- new FetchState(request) now works anywhere inside a built Astro server, including custom src/fetch.ts entrypoints. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- getCollection() no longer throws DataCloneError when collection schema transforms return Temporal.PlainDate or other class instances. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- getEntry() no longer throws DataCloneError when collection schema transforms return Temporal.PlainDate or other class instances. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- Requests with malformed ports in the Host header now fall back to a server-controlled host instead of throwing. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- SSR full reloads triggered by third-party Vite plugins no longer fail to load astro:server-app.js. (7.2.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.3)
- astro dev now cleans stale lock files after Docker restarts and avoids signaling unrelated processes when --force is used. (7.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.2)
- Incremental builds no longer drop optimized images for cached pages when using a collectStaticImages prerenderer. (7.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.2)
- Component styles from content entries no longer remain stale until a second save in Astro's fallback development environment. (7.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.2)
- The Fonts API no longer breaks experimental.incrementalBuild caching because generated dependency-hash code uses a build-local server port. (7.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.2)
- Builds reduce intermittent ImageNotFound errors on projects with many images by limiting concurrent reads and retrying transient I/O failures. (7.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.2)
- The setting now applies to duplicate ID warnings from glob() and file() content loaders, throwing for 'error' and suppressing warnings for 'ignore'. (7.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.2)
- CSS hot module replacement now works after navigating between pages with ClientRouter. (7.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.1)
- Builds no longer fail because generated content collection image import identifiers collide. (7.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.1)
- Incremental builds no longer re-render unchanged routes that import multiple assets. (7.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.1)
- Middleware HMR now reloads when imported modules change, not only when the middleware file itself changes. (7.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.1)
- CSP no longer rejects speculation rules when security.csp and experimental.clientPrerender are used with data-astro-prefetch links. (7.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.1)
- Video and audio elements remain functional after navigation via view transitions. (7.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.1)
- Avoids crashing with Invalid URL when --host uses a specific non-loopback address. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Preserves cookies set inside custom 404.astro or 500.astro error pages in the final response. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Returns the correct .html pathname for non-index pages when build.format is preserve. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Prevents a build crash when an older hoisted neotraverse version is present at the project root. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Returns only requested glyphs instead of the full icon font when multiple experimental glyphs are specified. (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Boolean popover values on custom elements render as a bare attribute or are omitted, instead of popover="true" or popover="false". (7.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.2.0)
- Prevents stale CSS after editing component style blocks and CSS files during development. (7.1.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.6)
- Concurrent static builds now generate i18n rewrite fallbacks correctly for dynamic routes. (7.1.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.6)
- Resolved action function properties are no longer incorrectly treated as routable path segments. (7.1.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.5)
- Custom error pages now render after middleware rewrites target routes returning empty 404 or 500 responses. (7.1.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.5)
- Custom logger.entrypoint values now load correctly at runtime in built server bundles. (7.1.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.5)
- Errors while finalizing a request no longer prevent a response from being sent. (7.1.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.5)
- Session runtime errors now route through Astro's logger instead of being silently swallowed by console.error. (7.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.4)
- TypeScript path aliases from tsconfig.json now resolve correctly in astro.config.ts. (7.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.4)
- The background prop is now included in Image and Picture component types, preventing astro check errors. (7.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.4)
- Scoped styles for child components inside client:only islands are now included in production builds. (7.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.4)
- Server output now emits one shared stylesheet when prerendered and server-rendered pages use the same CSS source modules. (7.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.4)
- glob loader watcher negation patterns now exclude matching files during development as they do during the initial scan. (7.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.4)
- A storage failure during session regeneration no longer leaves the session partially initialized or causes unnecessary later storage reads. (7.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.4)
- Background dev servers on Windows no longer open a visible terminal window or steal focus. (7.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.4)
- astro build now respects container CPU limits during image optimization, reducing peak memory usage and preventing out-of-memory crashes. (7.1.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.3)
- Mutations to Astro.locals during the request lifecycle are now preserved and passed to custom error pages. (7.1.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.2)
- The fetch fallback for prefetch now catches rejected requests in WebKit, preventing flaky connections from causing unhandled promise rejections. (7.1.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.2)
- Encoded request paths are now routed correctly when using domain-based i18n. (7.1.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.1)
- Fixes crashes in non-Node runtimes by using console logging instead of process stdout and stderr. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- Preserves existing behavior for configured script and style resources when using element-specific CSP directives. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- Fixes integrations being unable to update the logger configuration. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- Fixes browser navigation returning 404 for assets imported with the ?url query. (7.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.1.0)
- The first browser visit after starting astro dev no longer triggers an immediate full page reload. (6.1.10, 7.0.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.9), [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.10)
- Client islands now recover from transient component import failures instead of permanently failing to hydrate. (7.0.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.9)
- The compiler was updated to fix multiple regressions. (7.0.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.8)
- The --force flag now replaces an already-running development server. (7.0.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.8)
- The --open flag now opens a browser when using an adapter with a custom preview entrypoint. (7.0.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.8)
- Fixes a dev server memory leak that caused Node.js warnings in the console. (7.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.7)
- Keeps CSS @import rules at valid positions after inline CSS chunks are merged during build. (7.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.7)
- Inlined scripts with ignored dynamic URL imports no longer fail at runtime because of unresolved Vite preload markers. (7.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.3.6), [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.7)
- Fixes CSS module scoped-name hash mismatches in astro dev when using Lightning CSS with content collections. (7.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.7)
- astro check now finds @astrojs/check and typescript when Astro is installed outside the project tree. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- Scripts inside components rendered through Astro.slots.render() remain next to their component content. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- Attribute rendering is now handled more robustly when working with custom elements. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- getViteConfig no longer crashes in Vitest browser mode because Astro skips dev server setup inside Vitest. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- Using the Container API no longer produces a false deprecation warning for markdown.gfm. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- Using the Container API no longer produces a false deprecation warning for markdown.smartypants. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- Dynamic route parameters with the value 0 are now generated correctly instead of causing a missing-parameter error or being dropped. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- Remote image dimensions are resolved once per render, avoiding failures when image servers rate-limit requests. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- Live collection entries now expose the correct render() type overload when only live.config.ts is present. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- Virtual style modules now include their CSS in dev mode when JavaScript is disabled. (7.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.6)
- Allows the background dev server to start when astro is hoisted outside the project's node_modules. (7.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.5)
- Preserves head elements after page transitions when the head contains a server:defer component. (7.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.5)
- Prevents requests from failing after adapter-based dev server restarts due to missing pre-bundled dependencies. (7.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.5)
- Restores prefetching for links inside server:defer components. (7.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.5)
- Prevents component style tags from being silently dropped when an await appears before the component in an .astro file. (7.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.5)
- The development toolbar now warns when implicit and manually specified ARIA roles are duplicated. (7.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.4)
- getCollection() no longer returns empty in dev mode for large content collections with 500k+ entries. (7.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.4)
- Dynamic file endpoints in dev mode no longer incorrectly require a trailing slash when trailingSlash is always. (7.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.4)
- An error in one route's getStaticPaths no longer prevents other valid routes from matching in dev mode. (7.0.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.3)
- Localized custom error routes such as /pt/404 are now used for missing localized pages and return the correct status code. (7.0.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.3)
- Background server output and `astro dev status` now show every exposed network URL. (7.0.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.1)
- Background development server startup no longer fails on Windows with a process spawn error. (7.0.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.1)
- Hybrid environments like Warp are no longer treated as AI agents for auto-background detection. (7.0.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.1)
- Advanced-routing pages() and middleware() handlers now render the custom 500.astro page when rendering or middleware throws. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The custom 500.astro page now receives the error prop when the error originated in middleware. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- The --port flag is now preserved after a Vite-triggered server restart. (6.1.7, 7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.7)
- Astro.session is always defined, and accessing it without configured session storage logs a helpful message. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)
- Internationalized domains no longer return 404 when trailingSlash is set to never. (6.1.9, 7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.9)
- Prerendered routes no longer emit a spurious Astro.request.headers warning when allowedDomains is configured. (7.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%407.0.0)

## astro 6

### Breaking changes

- Invalid HTML attribute names are now dropped instead of being accepted. (6.4.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.6)
- Redirect parameter mismatches now produce a clear InvalidRedirectDestination error during config validation. (6.3.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.8)
- isRemotePath() now rejects control characters after a leading slash. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- Double-encoded URL paths now receive a 400 response instead of partially decoding silently. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- SVG inputs are no longer rasterized by default; this flag opts back into processing them. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- Remote image optimization now follows redirects and validates every redirected URL against configured patterns or domains. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- The `svgo` experimental flag is removed and superseded by `experimental.svgOptimizer`. (6.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.0)
- Style persistence is limited to styles from Vue components instead of automatically persisting all style sheets. (6.1.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.5)
- Temporary support for the documented Node.js version range is removed because Stackblitz now uses Node 22 by default. (6.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.6)
- Requests using prototype method names such as constructor or toString as action paths now return 404. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes the old app.render() signature. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes exposed astro:actions internals. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The add command and --add option now accept only valid npm package names, preventing possible command injection. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Astro components can no longer be rendered in Vitest client environments. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes the unused astro:ssr-manifest virtual module. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Types for the removed astro:ssr-manifest module are no longer provided. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Introduces astro/zod as the preferred source for schema utilities. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- X-Forwarded-For is used only after the request host matches security.allowedDomains; otherwise the socket remote address is used. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes the previously deprecated Astro.glob(). (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The Rust compiler requires installing `@astrojs/compiler-rs` separately. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Replaces the self adapter entryType value. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes support for CommonJS configuration files. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- URLs with multiple leading slashes are normalized to one slash before middleware receives them. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The `astro/app/node` module exports a utility converting Node incoming messages into web-standard requests. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The cssesc dependency was removed and replaced with an ESM-friendly built-in implementation, avoiding occasional CommonJS-related errors. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes the function signature for defining dynamic schemas in content loaders. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes the deprecated emitESMImage() function. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Endpoint URLs with a file extension cannot be accessed with a trailing slash. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Renames the adapter entryType property to entrypointResolution. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes entryPoints from the astro:build:ssr integration hook. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The experimental CSP configuration flag is removed and must be replaced with security.csp. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The experimental fonts configuration flag is removed and replaced by the top-level `fonts` option. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The experimental Fonts API now downloads only woff2 files by default; formats can be specified explicitly. (5.16.7, 6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7)
- The experimental live collections flag must be removed because live content collections are now supported directly. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Replaces the legacy-dynamic adapter entryType value. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Throws an error when getImage() from astro:assets is called on the client. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes the handleForms prop from the ClientRouter component. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Fallback middleware now triggers only for 404 responses instead of intercepting redirects, forbidden responses, and server errors. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Changes the default value of i18n.routing.redirectToDefaultLocale from true to false. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- import.meta.env values are always inlined. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Changes integration hooks and HMR access patterns in the Integration API. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes legacy content collection support. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Changes how IDs are generated for Markdown headings. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Adapters can specify middleware mode using `middlewareMode`, including the `'edge'` value. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The minimum supported Node.js version increases to 22.12.0. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Changes the values allowed in params returned by getStaticPaths(); numbers are no longer allowed. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Routes containing percent-encoded percent signs such as %25 are no longer supported. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Replaces experimental.failOnPrerenderConflict with prerenderConflictBehavior. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- An exposed internal API of the preview server is removed. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The development server now blocks direct URL access to files outside srcDir and publicDir. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes rewrite() from the Actions context. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes RouteData.generate from the Integration API. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes routes from the astro:build:done integration hook. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- script and style tags render in the order they are defined. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Replaces the experimental CSP flag with a stable security configuration option. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Server actions now enforce a default request body size limit to prevent oversized requests from exhausting memory. (5.17.3, 6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.3)
- A session cookie without matching server-side data now causes a new session ID to be generated. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Session drivers are now configured as objects created by provider helpers such as `sessionDrivers.redis()`. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes setManifestData from App and NodeApp. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Updates the shiki dependency to v4. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Changes SSRManifest property shapes and adds required properties in the Adapter API. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The adapter feature formerly named `experimentalStaticHeaders` is now configured as `staticHeaders`. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes the session test driver. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes the deprecated ViewTransitions component. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Astro rejects envPrefix entries that match secret environment variables, preventing exposure in client-side bundles. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Astro 6 upgrades to Vite v7.0 as the development server and production bundler. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Removes the with option from prefetch(). (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The `astro/app/node` module exports a utility streaming web-standard responses to Node server responses. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- X-Forwarded-Proto is trusted only when security.allowedDomains is configured. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Astro 6 upgrades schema validation to Zod v4. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)

### Security

- Astro: Authorization Bypass via Decode Iteration Limit and Rewrite Path Canonicalization Mismatch (6.4.8) — [security advisory](https://github.com/advisories/GHSA-VJ59-8HWV-XXMV)
- Prerendered error page requests now validate the origin and use the original origin only when the Host header matches configured allowed domains. (6.4.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.6), [security advisory](https://github.com/advisories/GHSA-2PVR-WF23-7PC7)
- Astro: XSS via Unescaped Attribute Names in Spread Props (6.4.6) — [security advisory](https://github.com/advisories/GHSA-JRPJ-WCV7-9FH9)
- Astro.request.url now reflects validated forwarded protocol and host headers when security.allowedDomains is configured, keeping it aligned with Astro.url. (6.4.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.5)
- The position prop on Image and Picture no longer breaks Content Security Policy. (6.3.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.5)
- Slot names on hydrated components are HTML-escaped in SSR output to prevent reflected XSS. (6.3.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.3), [security advisory](https://github.com/advisories/GHSA-8HV8-536X-4WQP)
- The configuration is respected by astro preview with the Cloudflare adapter, preventing DNS rebinding attacks when previewing Cloudflare builds locally. (6.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.0)
- Prevents encrypted data from one island component being replayed against a different island component. (6.1.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.10), [security advisory](https://github.com/advisories/GHSA-XR5H-PHRJ-8VXV)
- Export resolution and hydration error handling are hardened for malformed component metadata. (6.1.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.9)
- The error overlay avoids unsafe HTML insertion, reducing security risks when displaying errors. (6.1.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.9)
- Server logging avoids unsafe format-string interpolation when handling error-related output. (6.1.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.9)
- The endpoint validates that the source is actually SVG before serving content as image/svg+xml. (6.1.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.7)
- Astro: XSS in define:vars via incomplete </script> tag sanitization (6.1.6) — [security advisory](https://github.com/advisories/GHSA-J687-52P2-XCFF)
- Makes CSRF origin checking work in astro dev behind TLS-terminating reverse proxies and respects security settings in development. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Duplicate slashes in target paths are collapsed before URL parsing, preventing protocol-relative URL interpretation. (6.0.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.8)
- Style tags inside SVG components are correctly tracked when content security policy is enabled. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- Server island POST endpoint validation now uses own-property checks for improved consistency. (6.0.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.3)
- clientAddress handling now correctly processes multiple header values and rejects values containing invalid IP-address characters. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Catch-all redirect parameters are hardened to prevent protocol-relative URLs in the Location header. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Internal and framing headers are no longer leaked or carried from the original response when rendering error pages. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Allowlists are now enforced when handling remote images. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Responsive images now work with `security.csp` by generating hashed build-time styles instead of runtime style elements. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The development server validates Sec-Fetch metadata headers to restrict cross-origin subresource requests. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Server island POST endpoints now enforce a configurable request body limit, defaulting to 1 MB. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Decoded backslashes are normalized consistently so middleware and the router see the same canonical pathname. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)

### Deprecations

- The static cookie consumption method is deprecated but remains for adapter compatibility. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- The dev server warns when Vite 8 is hoisted at the project top level because Astro requires Vite 7. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Deprecates astro:schema. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates exposed astro:transitions internals. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates Astro in getStaticPaths(). (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates createExports() in the Adapter API. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The adapter feature `edgeMiddleware` is deprecated and should be replaced with `middlewareMode`. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates import.meta.env.ASSETS_PREFIX. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates loadApp() from astro/app/node. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates loadManifest() from astro/app/node. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates NodeApp from astro/app/node. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates the string signature for session drivers. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Specifying a session driver as a string is deprecated in favor of the driver object shape. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- CSP and Shiki syntax highlighting are incompatible because Shiki uses inline styles; Astro now warns when both are enabled. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates start() in the Adapter API. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Deprecates z from astro:content in favor of astro/zod. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)

### New APIs and options

- Allows projects to replace the default unified Markdown processor with an alternative processor. (6.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.0)
- Adapters can preserve the dist/server/ directory structure for static builds, matching preserveBuildClientDir. (6.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.0)
- The satteri() processor can be imported and configured as an alternative Markdown processor. (6.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.0)
- Adds an interface for typing custom context providers on Astro and ctx. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- Adds fetchFile to customize or disable the advanced routing entrypoint file. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- Adds a type export for typing the advanced routing entrypoint. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- Adds response, automatically set after pages() or middleware() completes. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- Provides a low-level Fetch-based API for composing Astro request handlers. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- Adds an AstroCookies instance method that marks cookies consumed and returns Set-Cookie header values. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- Enables custom control over Astro's server request handling pipeline through a project entrypoint. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- Becomes the entrypoint for all server-rendered requests when advanced routing is enabled. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- Supports the `jsx` value, which strips whitespace using JSX rules instead of the default HTML compression strategy. (6.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.0)
- The new astro:assets helper resolves font file URLs from fontData, simplifying font access during development and prerendering. (6.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.0)
- Experimental configurable log handlers let users replace default console output with built-in or custom logging implementations. (6.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.0)
- Enables automatic optimization of imported SVG components for smaller file sizes and better performance. (6.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.0)
- Adapters can forward runtime background-task hooks to Astro, allowing cache providers to perform work such as stale-while-revalidate without blocking responses. (6.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.0)
- Exposes i18n fallback routes through IntegrationResolvedRoute for integrations using the astro:routes:resolved hook. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Supports codec-specific Sharp encoder defaults for compile-time image generation, while per-image quality still takes precedence. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Accepts an options object for fine-tuning punctuation, dash, ellipsis, and quote transformations in Markdown. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Adapters can collect prerenderable paths from within a target runtime using the new virtual module. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Lets .astro pages set server-rendered response caching directives. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The Node standalone adapter can limit request body size in bytes; the default is 1 GB and `0` disables the limit. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- CacheLike exposes whether caching is active, allowing libraries to avoid conditional try/catch logic. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Purges cached entries by tag or path. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The `<Code />` component can highlight embedded languages in addition to its primary language. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Live content collection loaders now receive the collection name in their parameters. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Lets API routes and middleware set and inspect server-rendered response caching directives. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Adapter createApp() accepts streaming, enabled by default, allowing adapters to disable HTML streaming when required. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Middleware and adapters can explicitly provide the client IP address to request context. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Adds createSchema() as the equivalent replacement for function-based dynamic schemas in content loaders. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Integration authors can emit assets that move to the client directory during SSR builds. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Enables experimental route caching by configuring a cache provider for on-demand rendered responses. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Queued rendering can cache node values during rendering for reuse. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Projects can opt into a queue-based rendering engine with potential speed and memory improvements. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Queued rendering can reuse a configurable pool of nodes during static page rendering. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Defines default route cache options declaratively, with per-route cache settings able to override them. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Projects can opt into an experimental Rust-based Astro compiler with faster builds and stricter HTML handling. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The Fonts API can load fonts from installed NPM packages or a CDN through the new provider. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Astro adds a first-party Fonts API supporting local fonts and built-in providers with optimization features. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Image services can override remote image metadata retrieval for caching or provider-specific dimension APIs. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- This migration flag restores v5 legacy content collection behavior, including automatic loaders, legacy config locations, entry APIs, and path-based IDs. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Content collections can fetch data at runtime through live loaders without rebuilding the site. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Provides a built-in in-memory LRU runtime cache provider with invalidation, stale-while-revalidate, and query filtering support. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Configures whether conflicting prerendered routes error, warn, or silently choose the highest-priority route. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Adapters can preserve client/server directory structure for static builds by opting into this feature. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Content loaders can resolve relative Markdown image paths and populate `metadata.localImagePaths`. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- renderMarkdown() extracts frontmatter into metadata.frontmatter and excludes it from the HTML output. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Astro Actions request bodies can be configured above the default 1 MB limit. (5.18.0, 6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%405.18.0)
- Adapters using `entryType: 'self'` can specify a custom server entrypoint. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Adapters can provide custom prerendering logic through the `astro:build:start` hook. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The default Sharp image service can convert SVGs to raster formats such as PNG and WebP. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)

### Performance

- SSR manifests omit inline CSS for prerendered routes, reducing SSR entry size and cold-start parse time. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Requests without a session cookie no longer initialize storage or perform guaranteed-miss reads. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- The dev server caches internal dependency crawling, slightly improving development-server performance. (6.1.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.8)
- Server rendering performance for .astro components improves by up to 2x, especially for component-heavy or text-heavy pages. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Astro's installation size is reduced by around 8 MB. (5.16.7, 6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7)
- Build memory usage is reduced by filtering routes per environment so each environment builds only the pages it needs. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Returns a cached highlighter based on Shiki options instead of creating a new instance every time. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- SSR renderers are no longer bundled when only API endpoints are dynamic. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)

### Behavior and default changes

- The static preview server is skipped when an adapter supplies previewEntrypoint, allowing the adapter to handle static and dynamic routes. (6.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.0)
- New Cloudflare projects use today’s date for compatibility_date instead of resolving it from locally installed packages. (6.1.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.5)
- The client router skips its animations when the browser already provides a visual transition, such as a swipe gesture. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- The command uses the latest valid compatibility_date in the Wrangler configuration when available. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Astro.csp can be undefined when CSP is not enabled, and its methods no longer throw. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Content collection loaders can now use await import() and import.meta.glob() during build. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- context.csp can be undefined when CSP is not enabled, and its methods no longer throw. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Astro’s `<Image>` output no longer emits redundant `fetchpriority="auto"` attributes by default. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The Node version requirement is lowered to support running on Stackblitz until it supports v22. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Changes how styles for responsive images are emitted. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Content loader schema types are inferred instead of generated. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- session.driver is optional because adapters can provide default session drivers. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- SSR builds now move only actual client assets, leaving server-side modules such as .sql files in place. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)

### Tooling

- Generates a Wrangler configuration file with a JSON schema. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Build-time printing is improved when builds take longer than 60 seconds. (6.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.6)
- The welcome message now highlights the graceful dev/preview server quit command instead of the kill process shortcut. (6.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.6)
- The command now configures Cloudflare types and adds a `generate-types` package script. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Changes the required or supported TypeScript configuration. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)

### Fixes and other changes

- Improves diagnostics emitted when Astro parses incorrect .astro files. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Prevents CSS from client:only islands leaking to unrelated pages. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Honors compressHTML when joining head elements. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Restores support for numeric IDs in YAML frontmatter references. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Iteratively decodes multi-level percent-encoding before middleware and route matching instead of rejecting such URLs with 400. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Strips trailing slashes when trailingSlash: 'never' is configured. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Strips trailing slashes when trailingSlash: 'never' is configured. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Strips trailing slashes when trailingSlash: 'never' is configured. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Updates inline style tags in server-rendered HTML after CSS files change during development. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Prevents prerendered redirect targets from being bundled into the SSR function in hybrid mode, reducing bundle size inflation. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Preserves children's slot attributes on custom elements in MDX for correct Shadow DOM named slot distribution. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Triggers HMR for files inside src/middleware/ during development. (6.4.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.7)
- Renaming an image while the dev server runs now hot-reloads correctly without triggering a build error or crashing. (6.4.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.6)
- The logger destination now applies to the “Server listening on...” startup message because the logger resolves before the server starts listening. (6.4.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.5)
- Runtime detection was reverted to avoid a significant build-time regression for Cloudflare adapter users with large prerendered sites. (6.4.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.5)
- App.match() no longer throws when request paths contain an invalid percent-sequence. (6.4.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.4)
- Astro.currentLocale now returns the mapped domain's locale on dynamic routes instead of the default locale. (6.4.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.4)
- Astro.routePattern now preserves the original casing of dynamic parameter names from filenames. (6.4.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.4)
- Dynamic routes no longer return a 500 Missing parameter error when using domain-based i18n routing in SSR. (6.4.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.4)
- Dynamic routes no longer return [object Object] instead of the expected content in certain runtimes. (6.4.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.4)
- Editing client-side components during development no longer causes an unnecessary full backend program reload. (6.4.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.4)
- Static file endpoints with .html in dynamic parameter values no longer fail with NoMatchingStaticPathFound during build. (6.4.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.4)
- Removes a false middleware warning when astro() is used in a custom src/app.ts and the first request is a redirect route. (6.4.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.3)
- Prevents false accessibility warnings for anchors inside closed details elements. (6.4.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.3)
- Unmatched routes with astro/hono handlers now render the custom 404 page instead of throwing a TypeError. (6.4.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.3)
- Improves optimized fallback generation for bold font variants by using better metrics. (6.4.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.3)
- Restores redirectToDefaultLocale functionality after the Advanced Routing refactoring. (6.4.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.3)
- Fixes a plugins is not iterable crash when pre-6.0 @astrojs/mdx is used alongside integrations configuring rehype plugins. (6.4.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.2)
- Fixes a plugins is not iterable crash when pre-6.0 @astrojs/mdx is used alongside integrations configuring remark plugins. (6.4.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.2)
- Fixes a plugins is not iterable crash when pre-6.0 @astrojs/mdx is used alongside integrations configuring remark-rehype plugins. (6.4.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.2)
- SSR dynamic routes no longer return 404 when a matching prerendered dynamic route is sorted first and cannot serve the request. (6.4.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.2)
- Fixes a dev-mode race condition where the Vite dependency optimizer could lose React dependencies. (6.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.0)
- Internal routes such as server islands are exempt from getStaticPaths validation, fixing server-island rendering on static sites. (6.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.0)
- Static preview now serves files from build.client when the adapter requires preserveBuildClientDir. (6.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.0)
- Preview now accounts for SSR routes discovered during route scanning instead of always using the static preview server. (6.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.0)
- Forwarded host and protocol headers set by a custom src/app.ts fetch handler are now respected before FetchState creation. (6.4.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.4.0)
- Dynamically imported JavaScript chunks no longer return 404s when adapters use assetQueryParams. (6.3.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.8)
- Production builds now include CSS for conditionally rendered Svelte components. (6.3.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.8)
- Scoped styles from Astro components rendered through MDX named slots are now retained. (6.3.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.8)
- A false-positive warning is no longer logged on every SSR request for dynamic routes. (6.3.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.8)
- The astro:i18n module can again be imported from client script blocks after a v6 regression. (6.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.7)
- Hyphenated custom elements in MDX now use registered renderers during SSR, falling back to raw HTML when unclaimed. (6.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.7)
- Dynamic routes no longer return 400 Bad Request when URLs contain a literal percent character. (6.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.7)
- Node adapter now passes Buffer, Uint8Array, and ArrayBuffer request bodies through directly instead of JSON-stringifying them. (6.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.7)
- The minify option is now forwarded to client-side builds, unless a client environment override takes priority. (6.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.7)
- Rollup output options are now forwarded to client-side builds, unless client environment overrides take priority. (6.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.7)
- The sourcemap option is now forwarded to client-side builds, unless a client environment override takes priority. (6.3.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.7)
- Empty markdown image alt text is preserved as alt="" in rendered HTML, supporting accessible decorative images. (6.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.6)
- HMR no longer serves stale content for dynamically imported components routed through barrel files. (6.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.6)
- The file content loader now generates valid JSON Schema for collections whose JSON or YAML data is a top-level array. (6.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.6)
- HMR no longer serves stale content when components are passed as props through getStaticPaths(). (6.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.6)
- Remote SVG sources pass through correctly without enabling dangerouslyProcessSVG or explicitly setting format="svg". (6.3.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.6)
- The dev server now serves fresh content after SSR-only modules change, including external monorepo files and dynamically imported components. (6.3.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.5)
- Actions and other SSR POST endpoints continue working in dev instead of returning HTTP 500 errors. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- Fixes Hono cache middleware to follow the standard wrapper pattern. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- Map and Set instances saved in a content collection are no longer broken when entries are retrieved. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- Fixes entry.data type inference for live collections configured without a schema. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- Styles are now extracted to head in the dev server for the specified Cloudflare prerender setup. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- SVG images with width or height zero are treated as valid dimensions instead of throwing NoImageMetadata. (6.3.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.4)
- assetsPrefix is available on build from astro:config/server. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- Compiler memory is correctly freed at the end of the build. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- Astro.cache is always defined as a no-op shim when experimental.cache is not configured, allowing cache methods to be called without conditional checks. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- Prevents HTMLElement is not defined errors during HMR for components with client-side scripts. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- The dev image endpoint origin check is corrected. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- Ampersands in meta tags no longer appear as raw entity strings in link previews or raw HTML. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- Non-prerendered routes no longer fail when a dynamic prerendered route exists with prerenderEnvironment set to node. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- Validation messages now better explain incorrect placement of script-src or style-src in the directives array. (6.3.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.2)
- Local images no longer return 404 on non-prerendered pages when using the generic image endpoint. (6.3.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.1)
- Hydration import failures now support retry and error event handling for transient network failures. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- Locale selection now respects the first matching code in configured locales order. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- Boolean arrays now correctly parse submitted "false" strings as false. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- Deleted content collection entries no longer persist in development results. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- CSP directives are no longer duplicated when inserted or merged. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- SSR responses in astro dev no longer crash because logger.flush is unavailable. (6.3.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.3.0)
- Builds no longer crash when processing animated AVIF images. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Conditional named slot callbacks no longer receive unintended arguments. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Tap prefetching now triggers when clicking nested elements inside an anchor. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- LiveLoader data types declared as interfaces are now accepted. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Dynamic parameters on non-page routes now preserve `.html` values for endpoints and redirects. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Dev rendering now propagates head metadata for adapters using the prerender Vite environment. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Fallback pages using rewrite mode now emit their page bodies during `astro build`. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- The index route now resolves correctly with a custom base path and `trailingSlash: 'never'`. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Partial pages imported as components now contribute their CSS styles. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- The `position` prop on Image and Picture components now correctly applies object-position styles. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Script deduplication state is no longer consumed while rendering inert template contexts. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Deleting a session key as the first request mutation now persists correctly. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Astro component imports through tsconfig path aliases no longer cause style compilation failures. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Scoped styles now target the correct element with Lightning CSS and nested selectors inside `:where(...)`. (6.2.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.2)
- Error formatting is now compatible with Zod 4.4.0. (6.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.1)
- Config validation now correctly handles omitted integrations fields with newer Zod versions. (6.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.1)
- Config validation no longer warns when the optional server property is missing. (6.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.1)
- The server config property is now compatible with Zod 4.4.0. (6.2.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.1)
- Scripts inside `<template>` elements are no longer deduplicated. (6.2.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.2.0)
- Stops a spurious content configuration warning for projects that do not use content collections. (6.1.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.10)
- Prevents a spurious dev toolbar sourcemap 404 caused by browser resolution from the `/@id/` URL prefix. (6.1.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.10)
- allowedDomains settings are correctly propagated when using the development server. (6.1.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.8)
- Build output filenames no longer contain special characters that can cause deployment failures on platforms like Netlify. (6.1.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.8)
- Build errors are fixed for inter-chunk JavaScript using dynamic imports on platforms with skew protection enabled. (6.1.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.8)
- Client-build asset hashes are no longer regenerated unnecessarily, making builds more stable. (6.1.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.8)
- Vue scoped style handling improves in development mode during client router navigation. (6.1.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.8)
- Remote image dimensions are now validated during static builds on Netlify. (6.1.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.7)
- Actions no longer fail with ActionsWithoutServerOutputError when output is static and an adapter is configured. (6.1.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.6)
- Inline script content now handles special characters more reliably. (6.1.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.6)
- SCSS and CSS module changes now hot-update styles in place during development instead of triggering a full page reload. (6.1.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.6)
- Sync content inside Fragment now streams without waiting for all async sibling expressions to resolve. (6.1.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.5)
- Fixes a build error when a pre-rendered page uses Picture and another page renders content collection entries. (6.1.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.5)
- Revives UnoCSS in dev mode when used with the client router. (6.1.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.5)
- Config changes in dev mode now restart Vite in place, preventing miniflare errors and 404 responses. (6.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.4)
- Pages with dots in their filenames no longer return 404 with trailing slashes in dev mode and respect the configured trailing slash behavior. (6.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.4)
- Static builds no longer produce redirect HTML instead of the actual response for extensionless endpoints when trailing slashes are always enabled. (6.1.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.4)
- Prevents HTML content from being incorrectly escaped as plain text when rendering MDX components through AstroContainer APIs. (6.1.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.3)
- Fixes dev rendering so head metadata is present and dev CSS/scripts are injected in the correct place. (6.1.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.3)
- Prevents page-level CSS from leaking between unrelated pages across top-level route boundaries. (6.1.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.3)
- Restores HMR when modifying files with the Cloudflare adapter and prerenderEnvironment set to 'node'. (6.1.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.3)
- Appends skew protection query parameters to inter-chunk JavaScript imports, preventing version mismatches during Vercel rolling deployments. (6.1.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.3)
- Allows SSR builds to succeed when projects contain only injected routes and no src/pages/ directory. (6.1.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.3)
- Catch-all routes no longer incorrectly intercept static asset requests with the @astrojs/node adapter in middleware mode. (6.1.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.2)
- Zod v4 validation errors now display human-readable messages instead of raw JSON. (6.1.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.2)
- astro preview now respects vite.preview.allowedHosts configured in astro.config.mjs. (6.1.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.2)
- Fixes Vue's :deep() notation being ignored by the client router in dev mode. (6.1.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.1)
- Prevents the dev toolbar audit from crashing when encountering the image ARIA role. (6.1.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.1)
- Automatically adds a Vite 7 override to package.json to prevent a require_dist crash caused by a Vite version split. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Prevents Rollup build failures when astro:config/client is used inside a script tag. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Allows cached assets to revalidate correctly when redirect checks encounter Not Modified responses. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Prevents duplicate client:component-path attributes from being added to client:only components in MDX. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Removes the unsupported emitFile warning during astro dev when integrations inject before-hydration scripts. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Stops queued rendering from escaping HTML page output so .html pages render as HTML instead of plain text. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Prevents font files from being copied several times unnecessarily during the build. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Prevents invalid development URLs for font families using an oblique style with angles. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Corrects the audit toolbar so the image role is not reported incorrectly. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Corrects the dev toolbar accessibility audit so menuitemradio is recognized as an interactive ARIA role. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Development server changes to middleware are now picked up without requiring a full restart. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Prevents an Astro Cloudflare dev server crash when navigating to a deferred server island after a page without one. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Correctly renders Zod metadata on the top-level schema when converting it to JSON Schema. (6.1.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.1.0)
- Nested object properties now work correctly, including with zod functions such as superRefine and discriminatedUnion. (6.0.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.8)
- The dev server no longer hangs on the first request when using the Cloudflare adapter. (6.0.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.8)
- Astro.currentLocale now resolves the actual locale for dynamic locale routes instead of always returning the default locale. (6.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.7)
- Styles from dynamically imported components are injected on the first dev server load. (6.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.7)
- URLs with locales that are not configured now render the custom 404 page instead of a dynamic locale page. (6.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.7)
- Static-page requests passed to Express or Fastify no longer leak socket listeners before next() is called. (6.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.7)
- Cloudflare dev server islands work with prerenderEnvironment set to node. (6.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.7)
- Images in markdown processed by custom content loaders are resolved and optimized correctly. (6.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.7)
- Server islands no longer fail at runtime in projects with multiple frontend integrations when all pages are prerendered. (6.0.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.7)
- HMR now correctly handles adding, changing, and deleting routes in `pages/` on Windows. (6.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.6)
- Type inference is fixed for content collections using a loader that includes a schema. (6.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.6)
- Client hydration now works for components imported through Node.js subpath imports, including Cloudflare adapter development. (6.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.6)
- Skew protection query parameters are applied to island hydration URLs and safely appended to asset URLs with existing search or hash parts. (6.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.6)
- SSR dynamic routes using an `.html` extension now work correctly. (6.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.6)
- Style-only changes now trigger eager recompilation to prevent stale slot rendering during HMR. (6.0.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.6)
- Validation now checks resolved routes, preventing startup failures with static output and at least one non-prerendered page or endpoint. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- The shared Vite watcher listener limit is increased to avoid MaxListenersExceededWarning during development startup. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- The root page pathname uses /index.html with build.format: "file" instead of /.html during builds. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- The before-hydration script chunk is emitted for the client Vite environment, preventing 404s and restoring hydration for integrations using injectScript. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- JSON schema generation now handles content collection schemas whose input and output shapes differ. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- Custom prerenderers are always torn down during builds, including when getStaticPaths() throws. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- Server island requests are treated as prerender-handler eligible, allowing deferred island content to load for node-prerendered pages. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- Deferred islands no longer fail at runtime in prerendered pages for affected adapters, including Cloudflare. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- The server entrypoint no longer leaks into the client environment, preventing adapter warnings during builds. (6.0.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.5)
- Prebundled in dev when custom toolbar apps are registered, preventing re-optimization reloads that can hide or break the toolbar. (6.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.4)
- Newly created pages in the dev server now receive layout-imported CSS without requiring a restart. (6.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.4)
- The dev server now serves a page when a project-root directory shares the page route's name. (6.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.4)
- Removes an incorrect warning when using prefetchAll. (6.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.4)
- Now produces an absolute path instead of a protocol-relative URL when base is '/'. (6.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.4)
- Server islands now work in prerendered pages when output is configured as server. (6.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.4)
- Unknown file extension errors now recommend the correct Vite 7 configuration key. (6.0.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.4)
- Routes emitted by the astro:build:done hook now have the distURL array correctly populated. (6.0.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.3)
- Prerendered routes now handle route and CSS updates, prerender middleware, route matching, and HMR consistently in Astro's dev environment. (6.0.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.3)
- Fixes return; syntax not working correctly in Astro frontmatter in certain contexts. (6.0.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.2)
- The tsconfig preview now shows the actual pending changes before confirmation. (6.0.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.1)
- Supports more operating systems when copying diagnostic information to the clipboard. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The astro:page-load event now fires on initial page loads. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Rewriting to URLs containing non-ASCII characters no longer incorrectly returns 404. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Framework components in multiple named MDX slots now receive their hydration scripts correctly. (5.16.9, 6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.9)
- build.serverEntry is respected when using the new Adapter API and works as expected again. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- ClientRouter navigation preserves inline styles and font preload links, preventing font flashes caused by re-evaluated @font-face declarations. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- ClientRouter preserves the target URL's original hash during server-side redirects. (5.16.7, 6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7)
- Using the Code component no longer produces an unexpected error. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- context.csp no longer logs warnings during development; those warnings are logged only in production. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The exported createApp types from astro/app/entrypoint are corrected. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- CSP headers are no longer incorrectly injected by the development server. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Newly added pages are correctly shown and served while the development server is running. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Dynamic URL attribute values containing `&` are now consistently escaped. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- poolSize can now be configured as 0. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Form actions from the original request are no longer executed while rendering error pages. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Rendering now preserves the hidden="until-found" attribute value. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Host header handling is improved for SSR deployments behind proxies. (5.17.2, 6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.2)
- Images now work in development when setups use port forwarding. (5.16.7, 6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0), [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7)
- inferSize is no longer retained as an HTML attribute on emitted img elements for non-remote images. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Integration-injected scripts now load in the dev server with non-runnable environment adapters such as @astrojs/cloudflare. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- JSON schema generation no longer fails for unrepresentable types. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- The Picture component avoids creating unused images during builds. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Public files now take priority over generated API routes in both development and production builds. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Script tags from components passed as slots to server islands are now included in the response. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Regenerated session data is now saved under the new session ID without requiring an additional set() call. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Adding or removing style tags in Astro components now updates styles visually during development without restarting the server. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)
- Setting vite.server.allowedHosts to true no longer produces an invalid array. (6.0.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%406.0.0)

## astro 5

### Breaking changes

- Remote image redirects are now rejected. (5.17.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.3)
- The experimental Fonts API no longer exports getFontBuffer due to significant memory usage during build. (5.17.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.1)
- Local fonts must now use the unified provider API with fontProviders.local() and move variants into options. (5.16.14) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.14)
- A fontData object replaces getFontData() for accessing font data by CSS variable and supports programmatic access to all font data. (5.16.12) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.12)
- Google and Google Icons family-specific options must now be configured on each font entry through the options property. (5.16.12) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.12)
- The experimental Fonts API no longer exports getFontData from astro:assets. (5.16.12) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.12)
- Changes the experimental FontProvider implementation and requires third-party unifont providers to wrap their runtime provider. (5.16.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.9)
- The experimental Fonts API removes defineAstroFontProvider(); custom font providers should use the FontProvider type instead. (5.16.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7)
- Using output: "hybrid" now produces a helpful error explaining the option was removed and recommending output: "static". (5.16.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.5)
- The experimental Fonts API now defaults to only the latin subset; extra subsets must be selected manually. (5.16.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.0)
- Data URIs now require explicit authorization through a remote pattern configuration. (5.15.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.9)
- The passthrough image service no longer generates WebP output. (5.15.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.9)
- Malformed cookies now return the raw unparsed value instead of throwing a URIError. (5.14.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.14.7)
- Live loader cacheHint objects no longer support maxAge; set page max age through headers instead. (5.14.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.14.6)

### Security

- Astro: Remote allowlist bypass via unanchored matchPathname wildcard (5.18.1) — [security advisory](https://github.com/advisories/GHSA-G735-7G2W-HH3F)
- Fixes protocol validation when allowedDomains includes both protocol and hostname fields. (5.18.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.18.0)
- Image allowlists are now respected when remote image sizes are inferred. (5.17.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.3)
- Certain unauthorized links are no longer rendered as clickable in the error overlay. (5.16.16) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.16)
- Server island requests now carry an encrypted component export identifier to prevent resolving to the wrong component. (5.16.16) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.16)
- CSP resources from configuration and the runtime API are combined into grammatically correct, deduplicated CSP headers. (5.16.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.4)
- Middleware validates decoded pathnames to prevent authentication bypass through multi-level URL encoding. (5.16.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.3)
- Astro Cloudflare adapter has Stored Cross-site Scripting vulnerability in /_image endpoint (5.15.9) — [security advisory](https://github.com/advisories/GHSA-FVMW-CJ7J-J39Q)
- Astro vulnerable to reflected XSS via the server islands feature (5.15.8) — [security advisory](https://github.com/advisories/GHSA-WRWG-2HG8-V723)
- Middleware receives normalized, decoded pathname values so URL-encoded paths cannot bypass checks. (5.15.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.8), [security advisory](https://github.com/advisories/GHSA-GGXQ-HP9W-J794), [security advisory](https://github.com/advisories/GHSA-WHQG-PPGF-WP8C)
- Slots are encrypted before browser transmission, improving integrity and preventing injection attacks. (5.15.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.8)
- Astro development server error page is vulnerable to reflected Cross-site Scripting (5.15.6) — [security advisory](https://github.com/advisories/GHSA-W2VJ-39QV-7VH7)
- Validates forwarded headers against allowedDomains patterns to prevent cache poisoning and header injection attacks. (5.15.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.5), [security advisory](https://github.com/advisories/GHSA-HR2Q-HP5Q-X767)
- Fixes a leak of server runtime code into client bundles when importing SVG files in client-side code. (5.15.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.2)

### Deprecations

- Astro.glob is now correctly marked as deprecated. (5.16.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.1)

### New APIs and options

- Cookies can be created as partitioned cookies with partitioned: true; they must also use secure: true. (5.17.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.0)
- The dev toolbar position can be configured as bottom-left, bottom-center, or bottom-right. (5.17.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.0)
- The glob() loader can omit raw content bodies from the data store to reduce deployed data-store size. (5.17.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.0)
- The Image component and getImage() helper can flatten transparent images using a specified background color. (5.17.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.0)
- Sharp image resizing can use a configured kernel instead of the default lanczos3 algorithm. (5.17.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.0)
- Custom FontProvider init() contexts now expose a root URL for resolving local files. (5.16.14) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.14)
- Adds a helper to retrieve font file buffers from URLs returned by getFontData(), including during prerendering. (5.16.13) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.13)
- Experimental font providers can declare family-specific options through a generic, with options inferred in Astro configuration. (5.16.12) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.12)
- Adds Google Icons as a built-in font provider available through fontProviders. (5.16.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.9)
- The experimental Fonts API adds formats to specify which font formats to download. (5.16.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7)
- Supports extending the type of props accepted by the getImage API. (5.16.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.6)
- Supports extending the type of props accepted by Astro’s Image component. (5.16.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.6)
- Supports extending the type of props accepted by Astro’s Picture component. (5.16.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.6)
- Button attribute types now allow command. (5.16.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.1)
- Button attribute types now allow commandfor. (5.16.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.1)
- Adds a utility type that infers an action's TypeScript input type from its Zod schema. (5.16.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.0)
- Adds experimental SVGO optimization for SVG assets during builds, reducing file sizes while maintaining visual quality. (5.16.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.0)
- Adds an export alias for astro/jsx-runtime, enabling JSX development runtime imports through astro/jsx-dev-runtime. (5.15.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.3)
- Adapters can append query parameters to all generated asset URLs during the build process. (5.15.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.0)
- Adapters can provide headers for Astro internal fetch calls, including Actions, View Transitions, Server Islands, and Prefetch. (5.15.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.0)
- The experimental Fonts API can preload selected font weights, styles, or subsets for a font family. (5.15.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.0)

### Performance

- Render chunks are grouped when emitted from async iterables to avoid encoding costs, improving rendering performance. (5.16.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7)
- Build performance and memory usage improve for medium-sized blogs with many content entries. (5.16.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.5)

### Behavior and default changes

- The file() loader parser() option can now return a Promise, enabling asynchronous fetching and parsing. (5.17.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.17.0)
- The glob() loader now warns when duplicated IDs are detected. (5.16.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.5)
- The experimental Fonts API warns when provided font families use conflicting cssVariable values. (5.15.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.6)
- Remote font families can be specified multiple times with different weight and style combinations, downloading only the required files. (5.15.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.6)
- getContainerRenderer() now returns a client hydration entrypoint, enabling client-side interactivity without manually calling container.addClientRenderer(). (5.15.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.4)
- Adapter-level query parameters now apply to all image and font asset URLs, including dynamic and static optimized images and experimental Fonts API requests. (5.15.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.3)

### Tooling

- Adding the Vercel adapter now adds .vercel to .gitignore. (5.16.14) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.14)
- Adds keyboard shortcuts to open the site, quit the preview, and display available shortcuts. (5.16.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.0)
- The experimental Fonts API build log now shows the number of downloaded files, helping identify excessive downloading from misconfiguration. (5.15.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.9)
- The command now scaffolds wrangler.jsonc and public/.assetsignore so Astro projects work out of the box as workers. (5.15.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.0)
- The MDX Content component's components prop now has TypeScript support when using await render(), providing IntelliSense and type checking. (5.15.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.0)
- The dev-mode error overlay stack trace now has a button for copying the stack trace. (5.15.0) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.0)

### Fixes and other changes

- SSR manifests now populate styles for prerendered routes, allowing workers or middleware to discover the CSS files used by a prerendered page. (5.18.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.18.2)
- Font providers supplied as class instances now work with the experimental Fonts API, including the local provider. (5.16.15) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.15)
- CSS assets with remote assetsPrefix URLs no longer receive an invalid leading slash in generated stylesheet links. (5.16.12) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.12)
- CSS deduplication is reintroduced for hydrated client components, preventing assets in client chunks from being flagged as orphaned. (5.16.12) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.12)
- Stopping the dev server with q+enter no longer creates a dist folder or copies font files. (5.16.12) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.12)
- React components nested inside HTML elements in MDX files now hydrate correctly. (5.16.12) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.12)
- Styles for conditionally rendered Svelte 5 components are now included in production builds. (5.16.12) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.12)
- Prevents the same CSS file from being bundled twice when imported in page frontmatter and a component script. (5.16.11) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.11)
- Validates route modules and provides a descriptive error when a valid page function is missing. (5.16.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.10)
- Fixes CSS url() references to public assets returning 404 in dev mode when a base path is configured. (5.16.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.10)
- Fixes an image 500 error when moving the dist directory in standalone Node deployments. (5.16.10) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.10)
- Fixes component scripts failing to render when an unused sibling slot Fragment exists. (5.16.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.9)
- Requests with query parameters to the base path no longer return a 404 in development when trailingSlash is not ignore. (5.16.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.8)
- Cookie values set with context.cookies.set() are no longer overridden by cookies set through response headers in development. (5.16.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.8)
- The Unsupported page types found error now appears only in more realistic cases. (5.16.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.8)
- The audit warning is skipped for images inside framework components such as React, Vue, and Svelte. (5.16.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.8)
- Certain aliases now work when using images in JSON files with the content layer. (5.16.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7)
- Remote image Etag header handling is fixed by disabling the internal cache. (5.16.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7)
- Images outside the project directory now work with astro:assets in development mode. (5.16.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.6)
- SVGs now work in development mode when using the passthrough image service. (5.16.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.6)
- JSDoc annotations now appear for font-related APIs in the Astro config. (5.16.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.5)
- Actions types now work correctly with specific TypeScript configurations. (5.16.3) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.3)
- In SSR, setting a page status to 404 now uses the current page instead of showing an empty page or 404.astro. (5.16.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.2)
- A Vite warning log during builds when using npm is fixed. (5.16.2) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.7), [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.2)
- Restores support for Astro component rendering in Vitest suites using client environments such as happy-dom or jsdom. (5.16.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.1)
- Fixes an unhandled rejection issue when using Astro with Vercel Workflow DevKit. (5.16.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.16.1)
- Wildcard hostname matching now rejects single-part hostnames that do not contain valid matching subdomains. (5.15.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.9)
- Adds handling for invalid encrypted props and slots in server islands. (5.15.9) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.9)
- The rewrite fallback system now generates fallback files for pages whose filename starts with a locale key. (5.15.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.7)
- process.env is now properly populated during the build. (5.15.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.7)
- Hydration now works in the dev server when a barrel file re-exports Astro and UI framework components. (5.15.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.6)
- Persisted components using declarative Shadow DOM no longer fail navigation because Astro avoids re-attaching an existing shadow root. (5.15.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.6)
- Improves fallback generation when using the experimental Fonts API. (5.15.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.5)
- Prevents build-time process.env values from being incorrectly inlined into server output. (5.15.5) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.5)
- The experimental Fonts API no longer filters available font files too aggressively, allowing Google-provider woff files to download. (5.15.4) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.4)
- Fixes a regression that caused ?url imports to not work correctly. (5.15.1) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.15.1)
- Normalizes bare filenames to relative paths for consistent image resolution in markdown frontmatter and JSON content collections. (5.14.8) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.14.8)
- The actions endpoint returns 404 for non-existent actions instead of throwing an unhandled error. (5.14.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.14.7)
- Actions no longer throw errors while loading. (5.14.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.14.7)
- Astro.site is no longer always undefined inside getStaticPaths(). (5.14.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.14.7)
- CSS handling for hydrated client components now prevents duplicate styles. (5.14.7) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.14.7)
- The muted HTML attribute now behaves consistently with other attributes. (5.14.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.14.6)
- The experimental live collections entry type now includes rendered, preventing TypeScript errors when using it. (5.14.6) — [release notes](https://github.com/withastro/astro/releases/tag/astro%405.14.6)
