Update Sep 3, 2026 tracked by Updatify
astro@7.3.1
Patch Changes
-
#17899
0389640Thanks @ematipico! - Fixes an error that prevented projects usingastro:assetsfrom starting or building
Astro is a JavaScript web framework optimized for building fast, content-driven websites. Server-First
Update Sep 3, 2026 tracked by Updatify
0389640 Thanks @ematipico! - Fixes an error that prevented projects using astro:assets from starting or building Update Sep 3, 2026 tracked by Updatify
#17795 15e2deb Thanks @matthewp! - Adds concurrent rendering support for experimental.incrementalBuild, including when using @astrojs/cloudflare
Incremental builds no longer disable caching when build.concurrency is greater than 1. Projects that set build.concurrency: 1 to keep the cache enabled can remove that workaround. Cloudflare builds also reduce serialization overhead for large prerendered pages.
#17887 35aa62e Thanks @matthewp! - Adds a Cloudflare finalize() response handler for custom request handlers
Call finalize() to apply cookies and Cloudflare CDN cache defaults to the response from an astro/fetch pipeline:
import { astro, FetchState } from 'astro/fetch';
import { cf, finalize } from '@astrojs/cloudflare/fetch';
export default {
async fetch(request: Request, env: Env, context: ExecutionContext) {
const state = new FetchState(request);
const asset = await cf(state, env, context);
if (asset) return asset;
return finalize(state, await astro(state));
},
};
Update Sep 3, 2026 tracked by Updatify
#17767 ce7c91f Thanks @astro-factory! - Adds --ignore-lock flag to astro preview, allowing multiple preview servers to run simultaneously on different ports. This is useful for E2E testing workflows (e.g., Playwright) that need to run several preview servers at once.
#17818 c0b6581 Thanks @florian-lefebvre! - Adds a logger parameter to image services hooks
Custom image services now receive Astro’s runtime logger as an extra argument. Messages logged with it are routed through the destination configured in logger and respect your log level, instead of being written straight to the console:
import type { LocalImageService } from 'astro';
const service: LocalImageService = {
// ...
async transform(inputBuffer, transform, imageConfig, logger) {
logger.warn(`Could not optimize "${transform.src}". Passing it through unchanged.`);
return { data: inputBuffer, format: 'png' };
},
};
Astro’s built-in Sharp service now uses this logger for the warnings it emits when it encounters an unexpected or unsupported source format.
Update Sep 3, 2026 tracked by Updatify
c0b6581 Thanks @florian-lefebvre! - Updates the development image service to forward every argument it receives to Astro’s Sharp service, including the new logger parameter Update Aug 31, 2026 tracked by Updatify
#17262 f8e9458 Thanks @Princesseuh! - Moves MDX file processing to the Markdown processors.
‘@astrojs/mdx’ is still required to add MDX support to your project. However, it now delegates the MDX files processing to Markdown processors.
If you haven’t explicitly installed a Markdown processor, you don’t need to do anything.
Otherwise, ensure that your configured Markdown processor uses the following version:
@astrojs/markdown-satteri 0.4.0 or later if you use satteri() @astrojs/markdown-remark 7.3.0 or later if you use unified() f8e9458 Thanks @Princesseuh! - Fixes .mdx files still using markdown.processor when extendMarkdownConfig is false. They now use a clean default processor instead; pass mdx({ processor }) to choose one explicitly. Update Aug 31, 2026 tracked by Updatify
f8e9458 Thanks @Princesseuh! - Adds an @astrojs/internal-helpers/mdx entrypoint with the shared helpers the Markdown processor packages use to render .mdx files. Update Aug 31, 2026 tracked by Updatify
#17262 f8e9458 Thanks @Princesseuh! - Adds MDX rendering to the unified() and satteri() processors.
Both processors now compile .mdx files themselves. You still need to install @astrojs/mdx to add MDX support to your project.
f8e9458]: Update Aug 31, 2026 tracked by Updatify
f8e9458]: Update Aug 31, 2026 tracked by Updatify
#17854 07b919f Thanks @ematipico! - Added @astrojs/prism to the list of dependencies to optimise. The dev server is now faster for sites that use Prism as code highlighter.
#17850 1301c37 Thanks @matthewp! - Fixes React SSR failures on the first Cloudflare dev request when JSON logging is enabled
Updated dependencies [f8e9458]:
Update Aug 31, 2026 tracked by Updatify
#17262 f8e9458 Thanks @Princesseuh! - Adds MDX rendering to the unified() and satteri() processors.
Both processors now compile .mdx files themselves. You still need to install @astrojs/mdx to add MDX support to your project.
#17262 f8e9458 Thanks @Princesseuh! - Adds a recmaPlugins option to unified() for adding recma (estree/JSX) plugins to the MDX compiler.
f8e9458]: Update Aug 31, 2026 tracked by Updatify
#17262 f8e9458 Thanks @Princesseuh! - Fixes @astrojs/markdown-remark being pinned to an exact version.
#17874 10c7e63 Thanks @astro-factory! - Fixes SSR manifest placeholder not being replaced when the server build is minified, which caused a runtime Invalid URL crash at server boot
#17869 2548abf Thanks @ematipico! - Fixes a case where the logger was improperly initialized at runtime in dev.
#17878 76eff3d Thanks @ematipico! - Fixes browser heuristic caching for cached responses that include Last-Modified or ETag validators
Update Aug 31, 2026 tracked by Updatify
52d3f56 Thanks @astro-factory! - Fixes the sitemap outputting a URL with an empty path for the homepage (e.g. https://example.com instead of https://example.com/) when trailingSlash is set to "never" or build.format is set to "file" Update Aug 31, 2026 tracked by Updatify
a51c533 Thanks @wakqasahmed! - Fixes astro check silently skipping .astro files that are only reachable through a TypeScript project reference (a tsconfig referenced via references in another tsconfig). These files are now checked and reported like any other .astro file. Update Aug 27, 2026 tracked by Updatify
#17846 b441180 Thanks @Princesseuh! - Fixes importing .html files not being typed outside of .astro files
#17831 32e8b44 Thanks @astro-factory! - Fixes a crash when requesting /index.html against a dynamic page route like [slug].astro
#17841 c35448e Thanks @astro-factory! - Fixes SSR manifest containing stale entryModules references to prerender-only chunks that no longer exist in the final build output
#17847 eb87a23 Thanks @matthewp! - Fixes set:text escaping in MDX script and style elements
Update Aug 25, 2026 tracked by Updatify
#17819 633855b Thanks @matthewp! - Updates generated and default Cloudflare compatibility_date values to match the installed runtime and requires Wrangler ^4.125.0
#17675 44d384c Thanks @danielmlr! - Adds the Worker version to the cache metadata of cached responses when the CF_VERSION_METADATA binding is configured. Responses carry an astro-version:<id> cache tag for version-specific purging, and responses that already send Last-Modified get a weak ETag that folds the version in. Conditional revalidation then returns fresh content after a deploy that changes rendered output but not content — most commonly the hashed asset URLs in server-rendered HTML. Without the binding, nothing changes.
Updated dependencies []:
Update Aug 25, 2026 tracked by Updatify
#17415 55d38c8 Thanks @iseraph-dev! - Deserializes each route once when loading the SSR manifest
#17772 023b48b Thanks @matthewp! - Fixes route selection for normalized request paths in adapter and development request handling
#17819 633855b Thanks @matthewp! - Updates generated and default Cloudflare compatibility_date values to match the installed runtime and requires Wrangler ^4.125.0
#17813 ae26d18 Thanks @matthewp! - Fixes rewrite() and next(payload) for GET and HEAD requests with host-provided bodies
Update Aug 24, 2026 tracked by Updatify
dd29ce8 Thanks @astro-factory! - Fixes a bug where @vercel/nft file tracing silently dropped all dependency files when outDir was configured outside root, causing deployed functions to crash with ERR_MODULE_NOT_FOUND Update Aug 24, 2026 tracked by Updatify
f88c875 Thanks @astro-factory! - Fixes npm install warnings on npm v11+ about esbuild’s install scripts not being covered by allowScripts. Adds ensureNpmScriptsAllowed() to pre-approve esbuild in package.json before running npm install, matching the existing pnpm v11 compatibility fix. Update Aug 24, 2026 tracked by Updatify
#17758 5f419e2 Thanks @astro-factory! - Fixes a bug where experimental_getFontFileURL() rejected valid font URLs when using the Cloudflare adapter
#17416 493796b Thanks @iseraph-dev! - Skips no-op pathname writes when normalizing SSR request URLs
#17712 bd374b7 Thanks @fkatsuhiro! - Updates deprecation messages target from Astro 7 to 8
#17719 dac1768 Thanks @astrobot-houston! - Fixes session ID validation to reject non-UUID cookie values before using them as storage keys
Update Aug 24, 2026 tracked by Updatify
#17757 660991c Thanks @astro-factory! - Fixes build errors showing wrong file location, missing line:col, and misleading hints when a plugin error (e.g. from MDX) is wrapped by Vite’s build error
#17766 0762a83 Thanks @HiDeoo! - Fixes Sätteri processor option types to accept all plugin entries supported by Sätteri v0.10.3.
Update Aug 24, 2026 tracked by Updatify
#17789 7c541a7 Thanks @astro-factory! - Fixes dep scanning failure when .astro frontmatter contains regex literals with quote characters (e.g. /"/g)
Updated dependencies []:
Update Aug 19, 2026 tracked by Updatify
#17731 bc171af Thanks @Princesseuh! - Updates Sätteri processor to v0.10.3. See its changelog for details on bugs fixed and features added.
Updated dependencies [05763a0]:
Update Aug 19, 2026 tracked by Updatify
#17747 a90ff66 Thanks @Princesseuh! - Fixes builds hanging when an image file is malformed
#17701 05763a0 Thanks @matthewp! - Fixes base path stripping to respect path-segment boundaries. With a configured base such as /docs, a request like /docs-archive/page is no longer treated as being under the base, so routing and context.url.pathname now agree on the same pathname.
#17742 70b449d Thanks @Kjubikstronk! - Fixes astro build throwing TypeError: Missing parameter for dynamic routes when build.format: 'preserve' and trailingSlash: 'always' are used together. Stripping the framework-injected .html suffix dropped the trailing slash that the compiled route pattern requires, so the route no longer matched itself and its params resolved as empty.
Update Aug 19, 2026 tracked by Updatify
05763a0]: Update Aug 19, 2026 tracked by Updatify
#17687 0a22ff5 Thanks @asmyshlyaev177! - Fixes middlewareMode: 'edge' not running your middleware when isr is also enabled
Previously, enabling both options deployed the edge middleware but never reached it: requests went straight to the ISR function, which skips rendering entirely on a cache hit. Middleware now runs at the edge for ISR-backed routes before the cached response is served, and query strings are preserved when it forwards the request.
Updated dependencies [05763a0]:
Update Aug 19, 2026 tracked by Updatify
05763a0]: Update Aug 19, 2026 tracked by Updatify
#17731 bc171af Thanks @Princesseuh! - Updates Sätteri processor to v0.10.3. See its changelog for details on bugs fixed and features added.
Updated dependencies [05763a0]:
Update Aug 18, 2026 tracked by Updatify
8c193f6]: Update Aug 18, 2026 tracked by Updatify
8c193f6]: