NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4525 most downloaded on npm
Astro’s [Go](https://golang.org/) + WASM compiler.
Last release 5 months ago
27 Apr 2026
Release timing varies
gaps range from 9 days to 6 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
373 releases · first in 2021
One column per quarter.
a0a1082: Calling templateEnter / templateExit when emitting
templateEnter / templateExit when emitting <template>compact option to support JSX-style whitespace stripping05ef961: Fix scoped CSS nesting so descendant selectors without & inside nested rules are not incorrectly re-scoped.
& inside nested rules are not incorrectly re-scoped.c05e16e: Removes the first argument of $$result.createAstro()
c05e16e: Removes the first argument of $$result.createAstro()
$$result.createAstro() does not accept an AstroGlobalPartial as the first argument anymore:
-const Astro = $$result.createAstro($$Astro, $$props, $$slots);
+const Astro = $$result.createAstro($$props, $$slots);
c05e16e: Removes renderScript from TransformOptions. It is now the default and only behavior
c05e16e: Removes experimentalScriptOrder from TransformOptions. It is now the default and only behavior
811e90f: Fixes an issue where server:defer was treated like a transition directive, causing ViewTransitions CSS to be included even when no transition:* directives were used.
755f046: Fixes a CSS scoping regression where selectors using the nesting selector (&) with pseudo-classes or pseudo-elements (e.g. &:last-of-type, &::before) inside :global() contexts would incorrectly receive a duplicate scope attribute.
f89451a: Fixed an issue where explicit <html> and <head> tags were removed from output when a JSX comment appeared between DOCTYPE and the <html> tag.
8275bdd: Fixes a bug where trailing whitespaces were preserved before <style> tags after transformation, in certain cases. Now trailing whitespaces are correctly removed.
56ef0ca: Fixes TSX output to transform top-level returns into throws in order to avoid downstream TypeScript parsing issues
e329d20: Fix slot attribute stripped inside expression
02de370: fixed a bug where the Astro compiler incorrectly handled the 'as' property name in Props interfaces.
This allows Astro components to use 'as' as a prop name (common pattern for polymorphic components) without breaking TypeScript type inference. The Props type is now correctly preserved when destructuring objects with an 'as' property.
615eb21: Fix CSS nesting so nested selectors without an ampersand are parsed and scoped correctly.
755f046: Fixes a CSS scoping regression where selectors using the nesting selector (&) with pseudo-classes or pseudo-elements (e.g. &:last-of-type, &:
&) with pseudo-classes or pseudo-elements (e.g. &:last-of-type, &::before) inside :global() contexts would incorrectly receive a duplicate scope attribute.<html> and <head> tags were removed from output when a JSX comment appeared between DOCTYPE and the <html> tag.<style> tags after transformation, in certain cases. Now trailing whitespaces are correctly removed.c05e16e: Removes the first argument of $$result.createAstro()
c05e16e: Removes the first argument of $$result.createAstro()
$$result.createAstro() does not accept an AstroGlobalPartial as the first argument anymore:
-const Astro = $$result.createAstro($$Astro, $$props, $$slots);
+const Astro = $$result.createAstro($$props, $$slots);
c05e16e: Removes renderScript from TransformOptions. It is now the default and only behavior
c05e16e: Removes experimentalScriptOrder from TransformOptions. It is now the default and only behavior
357b8fe: Fixes a panic when parsing files with a closing frontmatter fence (---) but no opening fence. The compiler now returns a helpful diagnostic e
Based on the recent commit history, this change appears to be related to fixing issue #1093 regarding selectedcontent parsing in customizable selects.
59f77593: Support HTML <selectedcontent> element
Based on the recent commit history, this change appears to be related to fixing issue #1093 regarding selectedcontent parsing in customizable selects. The <selectedcontent> element is part of the new Customizable Select Element API in HTML, used within <selectlist> elements to display the currently selected option(s).
89c80fee: Adds a walkAsync utility function that returns a Promise from the tree traversal process.
Unlike the existing walk function which doesn't provide a way to wait for traversal completion, walkAsync allows consumers to await the full traversal of the AST.
950635e: Reverts a change where view transitions were made async to accomodate the CSP requirements.
138c07f: Improves detection of function body opening curly brace for exported functions.
e428ae0: Add head propagation metadata to server islands
0399d55: Add an experimental flag experimentalScriptOrder that corrects the order styles & scripts are rendered within a component. When enabled, the
experimentalScriptOrder that corrects the order styles & scripts are rendered within a component. When enabled, the order styles & scripts are rendered will be consistent with the order they are defined.This change updates a v5.0 breaking change when `experimental.directRenderScript` became the default script handling behavior. If you have already suc…
8cae811: Fixes an issue with the conditional rendering of scripts.
This change updates a v5.0 breaking change when experimental.directRenderScript became the default script handling behavior. If you have already successfully upgraded to Astro v5, you may need to review your script tags again and make sure they still behave as desired after this release. See the v5 Upgrade Guide for more details.
970f085: Fixes an issue when parsing elements inside foreign content (e.g. SVG), when they were inside an expression
6b6a134: Fixes a bug caused by having an extra space in the fragment tag in the TSX output
5d0023d: Fixes sourcemapping for CRLF line endings wrongfully including the last character
class:list directive was not correctly merging with the class attribute.f05a7cc: Adjust TSX output to return ranges using UTF-16 code units, as it would in JavaScript
21b7b95: Revert the transformation of top-level returns into throws in TSX as it was buggy in numerous situations
1d684b1: Adds detected language to extracted style tags in TSX
a765f47: Escape script tags with unknown types
9549bb7: Fixes style and script tags sometimes being forcefully put into the body / head tags in the AST
3e25858: Adds two new options to convertToTSX: includeScripts and includeStyles. These options allow you to optionally remove scripts and styles from
3e25858: Adds two new options to convertToTSX: includeScripts and includeStyles. These options allow you to optionally remove scripts and styles from the output TSX file.
Additionally this PR makes it so scripts and styles metadata are now included in the metaRanges property of the result of convertToTSX. This is notably useful in order to extract scripts and styles from the output TSX file into separate files for language servers.
9fb8d5d: Adds serverComponents metadata
This adds a change necessary to support server islands. During transformation the compiler discovers server:defer directives and appends them to the serverComponents array. This is exported along with the other metadata so that it can be used inside of Astro.
6b7c12f: Avoids stringifying undefined in scoped class attributes
undefined in scoped class attributes0bb2746: Allow data-astro-reload to take a value
data-astro-reload to take a value17f8932: The WASM binaries for the compiler are now built using Go 1.22.
createAstro code if the Astro global is not referencedasync for component functions if await is not used5467f40: Fix issue with head content being pushed into body
data-astro-rerun attribute can not be used on an external module <script> and that data-astro-reload is only supported on <a>, <area> and <form> elements.f45dbfd: Updates deprecated Node.js 16 github actions.
transition:persist-props transformationa90d99e: Adds a new renderScript option to render non-inline script tags using a renderScript function from internalURL, instead of stripping the scri
renderScript option to render non-inline script tags using a renderScript function from internalURL, instead of stripping the script entirelyis:inline.c17734d: Rollbacks the dynamic slot generation feature to rework it
418558c: Fixes an issue where a slotted element in an expression would cause subsequent ones to be incorrectly printed
th tag would cause an infinite loopd071b0b: Fixes an issue which caused the hydration script of default exported components to fail loading in some cases.
db13db9: - Adds support for dynamic slots inside loops
9938bc1: Fixes a sourcemap-related crash when using multibyte characters
7a07089: Fixes a bug where expressions starting with whitespace, followed by anything else, weren't printed correctly.
9ff6342: Return generated frontmatter and body ranges in TSX output
tr element which contained an expression would cause its parent table to swallow any trailing element inside said tabletable element would cause lots of missing pieces of markup/ or */ would cause prematurely closed comments in the tsx output56e1959: Fixes a memory reference error when an expression is the final node in a file
5b450df: Fixed an index out of range error when multibyte characters were rendered as markup
index out of range error when multibyte characters were rendered as markupindex out of range [0] error when there is a component before the <html> tagindex out of range errors when handling some multibyte characters like \u2028.2bdb4bb: Revert table related parsing change as it resulted in a regression
e241f2d: Fix generated code for expressions within td elements
td elements0c24ea1: Add a new annotateSourceFile option. This option makes it so the compiler will annotate every element with its source file location. This is
0c24ea1: Add a new annotateSourceFile option. This option makes it so the compiler will annotate every element with its source file location. This is notably useful for dev tools to be able to provide features like a "Open in editor" button. This option is disabled by default.
<div>
<span>hello world</span>
</div>
Results in:
<div data-astro-source-file="/Users/erika/Projects/..." data-astro-source-loc="1:1">
<span data-astro-source-file="/Users/erika/Projects/..." data-astro-source-loc="2:2">hello world</span>
</div>
In Astro, this option is enabled only in development mode.
bf76663: [TSX] Add ASTRO__MergeUnion util to allow destructuring from automatically inferred union Prop types
ASTRO__MergeUnion util to allow destructuring from automatically inferred union Prop typesa52c181: Fixed an issue where spread attributes could not include double quotation marks.
7579d7c: Support CSS @starting-style rule (From: )
@starting-style rule (From: https://github.com/evanw/esbuild/pull/3249)Astro.props and Astro.params when getStaticPaths is used2584348: Add propagation metadata to the TransformResult
4e1e907: Remove experimental flags from transition: directives. They are now enabled by default.
transition: directives. They are now enabled by default.cd93272: The scope hash created by the compiler is now lowercase.
cd93272: The scope hash created by the compiler is now lowercase.
This aligns with the HTML spec of the attribute names, where they are lowercase by spec.
This change is needed because the compiler now creates data attributes that contain the hash in their name.
80b7e42: Pass the type of the current component as a type argument to the AstroGlobal in order to type Astro.self
52fe144: Change the value of the generated attribute
365710c: Support the transition:persist directive
5c19809: Add a scopedStyleStrategy called "attribute". The strategy will print styles using data attributes.
scopedStyleStrategy called "attribute". The strategy will print styles using data attributes.Nothing published for this version
Nothing published for this version
Nothing published for this version
6b4873d: Pass transition directives onto components
ce5cf31: Pass transition:animate expressions
486614b: Fixes use of expression in transition:name
2906df2: Support for view transition directives
2906df2: Support for view transition directives
This adds support for transition:animate and transition:name which get passed into the new renderTransition runtime function.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →