This site’s Astro stack was updated on November 9, 2026, using npx @astrojs/upgrade. Two integrations moved up a major version, @astrojs/mdx and @astrojs/react. Everything else received minor or patch releases. The new Astro release also raises the minimum Node.js version.
What changed
| Package | From | To | Release type |
|---|---|---|---|
astro | 7.2.0 | 7.4.8 | Minor |
@astrojs/mdx | 7.0.5 | 8.1.3 | Major |
@astrojs/react | 6.0.2 | 7.1.5 | Major |
@astrojs/markdown-remark | 7.3.1 | 7.3.6 | Patch |
@astrojs/sitemap | 3.7.3 | 3.7.4 | Patch |
@astrojs/check | 0.9.10 | 0.9.12 | Patch |
@astrojs/rss | 4.0.19 | 4.0.19 | Unchanged |
Node.js 22.23.4 minimum
Astro 7.4.0 raised the minimum supported Node.js version to 22.22.0. Astro 7.4.2 raised it again to 22.23.4, the Node.js 22 LTS release from October 21, 2026, which carries the fixes from the October 2026 Node.js security releases. Astro’s Node.js support policy lets the core team raise the minimum Maintenance LTS version in a patch release when a disclosed Node.js security flaw affects Astro, which is why this bump shipped as a patch. The same minimum applies to @astrojs/mdx 8.1.1 and @astrojs/react 7.1.1.
@astrojs/mdx 8 (major)
- MDX processing moved to the Markdown processor.
@astrojs/mdxis still required for MDX support, but it now hands.mdxfiles to the configured Markdown processor. Projects without an explicitly installed processor need no changes. Projects usingunified()need@astrojs/markdown-remark7.3.0 or later, and projects usingsatteri()need@astrojs/markdown-satteri0.4.0 or later (8.0.0). - Deprecated plugin options now warn. The
remarkPlugins,rehypePlugins,recmaPlugins, andremarkRehypeoptions still apply underunified(). When a processor does not run them, MDX now logs a warning instead of dropping them silently (8.0.0). extendMarkdownConfig: falseuses a clean processor. In that case.mdxfiles now use a clean default processor instead ofmarkdown.processor(8.0.0).- Patch releases fixed an incompatibility with Astro versions that bundle an older
@astrojs/markdown-satteriand improved the error message that points to updatingastro(8.0.2), and added YAML timestamp and merge key support (8.0.3).
@astrojs/react 7 (major)
- Oxc replaces Babel. The integration now uses
@vitejs/plugin-reactv6, with Oxc handling JSX and Fast Refresh. Thebabeloption onreact()is removed. Custom Babel transforms move to@rolldown/plugin-babelundervite.plugins(7.0.0). - Opt-in React Compiler.
react({ compiler: true })enables the Oxc-based React Compiler, which memoizes client components and hooks. It requiresoxc-transform-react. Server rendering is not compiled (7.0.0). - Patch releases fixed duplicate
React.useId()values whenexperimentalDisableStreamingis enabled (7.1.2), preserved component-rendered stylesheet, preload, and modulepreload links in React island output (7.1.3), and widened theoxc-transform-reactpeer dependency range (7.1.5).
astro 7.2.0 to 7.4.8
astro preview --ignore-lockallows several preview servers to run at once on different ports.- Custom image services and cache providers receive Astro’s runtime logger.
- Builds are faster for sites with many pages coming from many different modules.
- i18n fallback routes keep the correct path when the locale code also starts a later path segment.
svgoupdated to 4.0.2 to resolve a security advisory.
astro build --timingsprints a summary after the build to show what slows it down, such as integrations, Markdown processor plugins, image processing, or syntax highlighting.- Experimental parallel prerendering (
experimental.parallelPrerender) renders static pages across multiple CPU cores. - Experimental custom redirect page (
experimental.redirectPage) letssrc/pages/3xx.astroreplace the generated redirect page in static builds. image.serviceaccepts separatebuildandruntimeservices.- Font providers gain an optional
getFontProperties()callback, which Astro uses to warn about font values a provider cannot serve. astro/fetchandastro/honogain anotFound()handler for custom server entrypoints.- Minimum Node.js raised to 22.22.0.
- Minimum Node.js raised to 22.23.4.
- String tag names in dynamic
.astrotags, JSX, and MDX render more strictly. A string that does not start with a valid element name now throws an error instead of producing invalid HTML.
The remaining releases in this range are patch releases.
@astrojs/markdown-remark 7.3.6
- YAML frontmatter parsing supports timestamps and merge keys (7.3.2).
- Code blocks in languages ending in a symbol, such as
c#,c++, andf#, highlight with the correct language (7.3.2). - Markdown processing and syntax highlighting report measurements to
astro build --timings(7.3.3). - Prism code blocks in languages Prism does not support, such as
vueorsvelte, display as plain text, and the language name is escaped in the generatedclassanddata-languageattributes (7.3.5).
@astrojs/sitemap 3.7.4
- The homepage URL keeps its trailing slash (
https://example.com/) whentrailingSlashis"never"orbuild.formatis"file"(3.7.4).
@astrojs/check 0.9.12
- The
astro-checkbinary respects flags such as--help,--root,--watch, and--tsconfigagain (0.9.12). astro check --watchkeeps running when the project path containsnode_modulesor.git(0.9.11).- The
--preserveWatchOutputhelp text matches the flag’s behavior (0.9.11).
Playwright 1.65
playwright and playwright-core moved from 1.63.0 to 1.65.0 with npm update. Running npx playwright install afterward downloaded the browser versions that Playwright 1.65 uses.
| Browser | Playwright 1.63 | Playwright 1.65 |
|---|---|---|
| Chromium | 153.0.8010.12 | 158.0.8127.18 |
| Firefox | 155.0 | 159.0 |
| WebKit | 26.6 | 27.2 |
- 1.64 added
page.webmcpfor testing tools a page registers through the experimental WebMCP API, custom video frame rates with VP9 encoding,Locator.within(), a--shuffleoption, and adefaultoption for test projects. Its breaking changes: device descriptors now pass through theirscreensetting, JSX in test files followstsconfig.json,--update-snapshots=missingnow passes the run, and elements inside hidden iframes count as hidden. - 1.65 runs the test runner under Bun with
--bun, adds afailuresreporter and anonlyFailuresoption, and adds an-exclusive-test lock. Its breaking changes include TypeScript class fields followinguseDefineForClassFields, actions waiting for elements to stop being inert, cookie matching that follows RFC 6265, and proxy credentials no longer being sent to websites. Playwright no longer tests on Node.js 20.
Changelogs and notes
- astro CHANGELOG
- @astrojs/mdx CHANGELOG
- @astrojs/react CHANGELOG
- @astrojs/markdown-remark CHANGELOG
- @astrojs/sitemap CHANGELOG
- @astrojs/check CHANGELOG
- Node.js 22.23.4 (LTS) release notes
- Playwright release notes