Astro is a JavaScript web framework optimized for building fast, content-driven websites. Server-First
Update May 28, 2026 tracked by Updatify
astro@6.4.0
Minor Changes
-
#16468
4cff3a1Thanks @matthewp! - Adds a newpreserveBuildServerDiradapter featureAdapters can now set
preserveBuildServerDir: truein their adapter features to keep thedist/server/directory structure for static builds, mirroring the existingpreserveBuildClientDiroption. This is useful for adapters that require a consistentdist/client/anddist/server/layout regardless of build output type.setAdapter({ name: 'my-adapter', adapterFeatures: { buildOutput, preserveBuildClientDir: true, preserveBuildServerDir: true, }, }); -
#16848
f732f3cThanks @Princesseuh! - Adds a newmarkdown.processorconfiguration option, allowing you to choose an alternative Markdown processor.Websites with many Markdown/MDX files tend to be slow to build because the unified ecosystem (e.g., remark, rehype) is slow to process. This feature introduces the ability to replace this part of the build pipeline with another processor.
Update May 26, 2026 tracked by Updatify
@astrojs/svelte@8.1.2
Patch Changes
-
#16496
4d79750Thanks @fkatsuhiro! - Fixed an issue where type errors occurred during testing library type checks because Astro overrides Svelte 5 component types.
Update May 26, 2026 tracked by Updatify
@astrojs/cloudflare@13.5.5
Patch Changes
-
#16607
98297afThanks @alexanderflodin! - Fixes incorrectassets.directoryin the generatedwrangler.jsonwhen abasepath is configured -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.3
Update May 26, 2026 tracked by Updatify
@astrojs/sitemap@3.7.3
Patch Changes
-
#16837
783c4a6Thanks @jdevalk! - Improves<lastmod>accuracy in the sitemap index. Each<sitemap>entry insitemap-index.xmlis now stamped with the most recentlastmodof the URLs in the child sitemap it points to, instead of repeating a single global date on every entry. When a child sitemap has no per-URLlastmod, the entry falls back to thelastmodoption as before. This gives search engines a per-file freshness signal, so they can tell which child sitemaps actually changed without refetching all of them.
Update May 26, 2026 tracked by Updatify
astro@6.3.8
Patch Changes
-
#16830
f2bf3cbThanks @matthewp! - Fixes 404s for dynamically imported JS chunks when using an adapter withassetQueryParams(e.g. Vercel skew protection) -
#16831
ace96baThanks @astrobot-houston! - Fixes a misleadingGetStaticPathsRequirederror when a redirect is configured from a dynamic route to a static (or less-dynamic) destination. For example,'/project/[slug]': '/'previously produced a confusing error pointing atindex.astro. Astro now detects the parameter mismatch at config validation time and throws a clearInvalidRedirectDestinationerror naming the missing parameters.
Update May 21, 2026 tracked by Updatify
@astrojs/cloudflare@13.5.4
Patch Changes
-
#16769
428cb1bThanks @astrobot-houston! - Forwards user-providedoptimizeDepssettings (exclude, include, esbuildOptions.loader) to SSR/prerender environments. Previously, top-levelvite.optimizeDepsin the Astro config was silently ignored for server environments because Vite 6 scopes it to client-only and the adapter’sconfigEnvironmenthook did not forward it. This caused packages with non-standard file types (e.g..datafiles) to fail during dev-mode dependency optimization with errors like “No loader is configured for ‘.data’ files”. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.3
Update May 21, 2026 tracked by Updatify
astro@6.3.7
Patch Changes
-
#16821
9c76b12Thanks @astrobot-houston! - Fixes request body handling in the Node adapter whenreq.bodyis aBuffer,Uint8Array, orArrayBuffer. Previously, binary body data was incorrectly JSON-stringified (producing{"type":"Buffer","data":[...]}) instead of being passed through directly. This affected libraries likeserverless-httpthat setreq.bodyto aBuffer. -
#16785
de96360Thanks @astrobot-houston! - Fixesvite.build.minify,vite.build.sourcemap, andvite.build.rollupOptions.output(e.g.compact) being ignored for client-side builds. These top-level Vite build options are now properly forwarded to the client environment, with environment-specific overrides (vite.environments.client.build.*) taking priority when set.
Update May 20, 2026 tracked by Updatify
astro@6.3.6
Patch Changes
-
#16774
8f77583Thanks @astrobot-houston! - Fixes markdown images with empty alt text () in content collections dropping thealtattribute entirely. Thealt=""attribute is now correctly preserved in the rendered HTML output, which is important for accessibility (indicating decorative images). -
#16776
3d10b5eThanks @matthewp! - Fixes HMR serving stale content when components are passed as props viagetStaticPaths() -
#16784
7453860Thanks @ematipico! - Improved the printing of the build time if it goes over the 60 seconds.
Update May 20, 2026 tracked by Updatify
@astrojs/cloudflare@13.5.3
Patch Changes
-
#16801
d619277Thanks @ematipico! - Reverts a change to the esbuild dep-scan plugin that causedastro checkandastro buildto fail by making esbuild incorrectly bundlevirtual:modules (e.g. from expressive-code) -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.3
Update May 18, 2026 tracked by Updatify
astro@6.3.5
Patch Changes
-
#16771
07c8805Thanks @ematipico! - Fixespositionprop on<Image>and<Picture>components breaking Content Security Policy (CSP). -
#16593
50924ceThanks @yanthomasdev! - Improves error messages with more consistent and correct writing. -
#16757
5d661cdThanks @astrobot-houston! - Fixes dev server serving stale content when SSR-only modules change (e.g..astrofiles outside the project root in a monorepo, or dynamically imported components).Previously, the
astro:hmr-reloadplugin returned an empty array after detecting SSR-only module changes, which prevented Vite’supdateModulesfrom propagating the invalidation to the SSR module runner. The runner’s evaluated module cache stayed stale, so subsequent requests continued returning old content.
Update May 18, 2026 tracked by Updatify
astro@6.3.4
Patch Changes
-
#16723
0f10bfeThanks @matthewp! - AddsfetchFileoption toexperimental.advancedRoutingto customize or disable the entrypoint fileexport default defineConfig({ experimental: { advancedRouting: { fetchFile: 'fetch.ts', }, }, }); -
#16723
0f10bfeThanks @matthewp! - Fixes Honocache()middleware to follow the standard wrapper pattern -
#16723
0f10bfeThanks @matthewp! - AddsApp.Providersinterface for typing custom context providers onAstroandctxdeclare namespace App { interface Providers { oauth: import('./lib/oauth').OAuthSession; } }
Update May 18, 2026 tracked by Updatify
astro-vscode@2.16.16
Patch Changes
-
#16719
2b1df12Thanks @alexisintech! - fix MDX syntax highlighting for indented astro codeblocks
Update May 18, 2026 tracked by Updatify
@astrojs/cloudflare@13.5.2
Patch Changes
-
#16708
bb709ffThanks @fkatsuhiro! - Fixed a bug where a cascade of reloads would cause the page to crash during the first visit when building or developing with Cloudflare SSR in Astro v6 due to dependency loading issues. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.3
Update May 14, 2026 tracked by Updatify
@astrojs/mdx@5.0.6
Patch Changes
-
#16579
49e10e3Thanks @igor-koop! - Fixes an issue where thesmartypantsoption was ignored.
Update May 13, 2026 tracked by Updatify
@astrojs/cloudflare@13.5.1
Patch Changes
-
#16707
2ff3f8fThanks @helio-cf! - FixesremoteBindings: falsebeing ignored duringastro build. The Cloudflare prerenderer’s internal Vite preview server now receives the user’s adapter options, so remote-flagged bindings (e.g. a D1 database withremote: trueinwrangler.toml) are emulated locally during build, matching the existingastro devbehavior. -
#16652
98c32ccThanks @greatjourney589! - Fixes user-declared KV namespace bindings being duplicated in the generateddist/server/wrangler.json, which caused wrangler validation to fail with “<binding> assigned to multiple KV Namespace bindings.” The Astro Cloudflare config customizer now returns only the auto-injectedSESSIONbinding and lets@cloudflare/vite-pluginmerge it with the user’s wrangler config, instead of pre-merging the user’s bindings into the output.
Update May 13, 2026 tracked by Updatify
astro@6.3.2
Patch Changes
-
#16675
11d4592Thanks @ascorbic! - Fixes a regression whereAstro.cachewasundefinedwhenexperimental.cachewas not configured.The previous documented behavior is for
Astro.cacheto always be defined as a no-op shim:cache.set()warns once,cache.invalidate()throws andcache.enabledcan be used to gate. This allows library and user code can call cache methods without conditional checks. The cache provider registration was being gated at the call site onexperimental.cachebeing configured, which meant the disabled shim branch inside the provider was unreachable and theAstro.cachegetter was never attached to the context. -
#16691
0f0a4ceThanks @matthewp! - FixesHTMLElement is not definederror during HMR when using components with client-side scripts (e.g. Starlight<Tabs>) and the Cloudflare adapter
Update May 7, 2026 tracked by Updatify
@astrojs/cloudflare@13.5.0
Minor Changes
-
#16639
4d72482Thanks @ematipico! - The adapter now depends on Astro 6.3.0.
Update May 7, 2026 tracked by Updatify
@astrojs/node@10.1.0
Minor Changes
-
#16639
4d72482Thanks @ematipico! - The adapter now depends on Astro 6.3.0.
Update May 7, 2026 tracked by Updatify
@astrojs/language-server@2.16.8
Patch Changes
-
#16627
5778cb7Thanks @Princesseuh! - Fixes unintended dependency on thetypescriptpackage being available to the language server
Update May 7, 2026 tracked by Updatify
@astrojs/telemetry@3.3.2
Patch Changes
-
#16260
354e231Thanks @gameroman! - Refactors internal config logic to remove thedlvdependency in favor of native logic
Update May 7, 2026 tracked by Updatify
astro@6.3.0
Minor Changes
-
#16366
d69f858Thanks @matthewp! - Adds a newexperimental.advancedRoutingoption that lets you take full control of Astro’s request handling pipeline by creating asrc/app.tsfile in your project.Today, Astro handles every incoming request through a fixed internal pipeline: trailing slash normalization, redirects, actions, middleware, page rendering, i18n, and so on. That pipeline works great for most sites, but as projects grow you often want to run your own logic between those steps — an auth check before rendering, a rate limiter before actions, custom logging around the whole stack. Advanced routing gives you that control.
When enabled, Astro looks for a
src/app.tsfile in your project. If it finds one, that file becomes the entrypoint for all server-rendered requests. You compose the pipeline yourself using the handlers Astro provides, and you can slot your own logic anywhere in the chain.Enabling advanced routing
// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ experimental: { advancedRouting: true, }, });Two ways to build your pipeline
Astro ships two entrypoints for advanced routing:
astro/fetchandastro/hono.
Update May 7, 2026 tracked by Updatify
@astrojs/cloudflare@13.4.0
Minor Changes
-
#16519
1b1c218Thanks @louisescher! - Adds support for redirecting URLs in remote image optimization.Previously, when a remote image URL meant to be optimized by Astro led to a redirect, Astro would fail silently and ignore the redirect. Now, Astro tracks up to 10 redirects for these images. If any of the redirects are not covered by a pattern in
image.remotePatternsor a domain inimage.domains, Astro will fail with a helpful error message.In the following example, the first image would be loaded successfully, while the second would lead to Astro throwing an error:
export default defineConfig({ image: { domains: ['example.com', 'cdn.example.com'], }, });{ /* Redirects to https://cdn.example.com/assets/image.png: */ } <Image src="https://example.com/assets/image.png" width="1920" height="1080" alt="An example image." />; { /* Redirects to https://malicious.com/image.png: */ } <Image src="https://example.com/bad-image.png" width="1920" height="1080" alt="An example image." />;In cases where all redirects to HTTPS hosts should be trusted, the following configuration for
image.remotePatternscan be used:
Update May 4, 2026 tracked by Updatify
@astrojs/cloudflare@13.3.1
Patch Changes
-
#16552
409f6efThanks @web-dev0521! - Fixes an issue where existing KV namespace bindings were silently removed when session support was enabled. -
#16277
7666bcdThanks @Calvin-LL! - Fix static assets and prerendered pages 404ing whenbaseis configured. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.3
Update May 4, 2026 tracked by Updatify
astro@6.2.2
Patch Changes
-
#16292
00f48eeThanks @p-linnane! - Fixes head metadata propagation in dev for adapters that load modules in theprerenderVite environment, such as@astrojs/cloudflare. Theastro:head-metadataplugin previously only tracked thessrenvironment, somaybeRenderHead()could fire inside an unrelated component’s<template>element, trapping subsequent hoisted<style>blocks. -
#16451
778865fThanks @maximslo! - Fixes build crash when processing animated AVIF images. Sharp now gracefully passes through unsupported image formats instead of crashing during the build. -
#16548
7214d3eThanks @senutpal! - Fixes scoped styles applying to the wrong element whenvite.css.transformeris set to'lightningcss'and a selector uses a nested&inside:where(...), such as Tailwind v4’sspace-x-*,space-y-*, anddivide-*utilities.
Update Apr 30, 2026 tracked by Updatify
astro@6.2.1
Patch Changes
-
#16531
76db01dThanks @rodrigosdev! - Fixes config validation for omittedintegrationsfields with newer Zod versions. -
#16535
7df0fe4Thanks @rururux! - Fixed an issue where a warning was displayed when theserverproperty was missing during config validation, even though it is not required. -
#16534
5cf6c51Thanks @matthewp! - Fixes compatibility with Zod 4.4.0 for theserverconfig property and error formatting