AstroEco is Releasing…
Display your GitHub releases using astro-loader-github-releases
Patch Changes
-
#4160
88442c3Thanks @ArmandPhilippot! - Adds the missing translations for Expressive Code in the following locales:ar,hi,it,ja,ko,pt,zh-CN, andzh-TW. -
#4159
a0e0ba2Thanks @trueberryless! - Adds 1 new icon:npmx

Patch Changes
-
#17846
b441180Thanks @Princesseuh! - Fixes importing.htmlfiles not being typed outside of.astrofiles -
#17831
32e8b44Thanks @astro-factory! - Fixes a crash when requesting/index.htmlagainst a dynamic page route like[slug].astro -
#17841
c35448eThanks @astro-factory! - Fixes SSR manifest containing staleentryModulesreferences to prerender-only chunks that no longer exist in the final build output -
#17847
eb87a23Thanks @matthewp! - Fixesset:textescaping in MDX script and style elements



Patch Changes
-
#17819
633855bThanks @matthewp! - Updates generated and default Cloudflarecompatibility_datevalues to match the installed runtime and requires Wrangler^4.125.0 -
#17675
44d384cThanks @danielmlr! - Adds the Worker version to the cache metadata of cached responses when theCF_VERSION_METADATAbinding is configured. Responses carry anastro-version:<id>cache tag for version-specific purging, and responses that already sendLast-Modifiedget a weakETagthat 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 []:
- @astrojs/underscore-redirects@1.0.4


Patch Changes
-
#17415
55d38c8Thanks @iseraph-dev! - Deserializes each route once when loading the SSR manifest -
#17772
023b48bThanks @matthewp! - Fixes route selection for normalized request paths in adapter and development request handling -
#17819
633855bThanks @matthewp! - Updates generated and default Cloudflarecompatibility_datevalues to match the installed runtime and requires Wrangler^4.125.0 -
#17813
ae26d18Thanks @matthewp! - Fixesrewrite()andnext(payload)for GET and HEAD requests with host-provided bodies -
#17816
a0d2fe3Thanks @astro-factory! - Fixes the experimentalsvgOptimizernot generating unique per-file ID prefixes when using SVGO'sprefixIdsplugin
Patch Changes
-
#4142
cacbc9fThanks @alebelcor! - Adds 1 new icon:whatsApp -
#4133
3944311Thanks @delucis! - Internal refactor: numberedidattributes in the<Tabs>component are now page-specific instead of using a global counter -
#4138
cd4b665Thanks @delucis! - Fixes localisation of code block UI elements when using the Sätteri Markdown processor


Patch Changes
- #17794
dd29ce8Thanks @astro-factory! - Fixes a bug where@vercel/nftfile tracing silently dropped all dependency files whenoutDirwas configured outsideroot, causing deployed functions to crash withERR_MODULE_NOT_FOUND



Patch Changes
- #17756
f88c875Thanks @astro-factory! - Fixesnpm installwarnings on npm v11+ about esbuild's install scripts not being covered byallowScripts. AddsensureNpmScriptsAllowed()to pre-approve esbuild inpackage.jsonbefore runningnpm install, matching the existing pnpm v11 compatibility fix.

Patch Changes
-
#17758
5f419e2Thanks @astro-factory! - Fixes a bug whereexperimental_getFontFileURL()rejected valid font URLs when using the Cloudflare adapter -
#17416
493796bThanks @iseraph-dev! - Skips no-op pathname writes when normalizing SSR request URLs -
#17712
bd374b7Thanks @fkatsuhiro! - Updates deprecation messages target from Astro 7 to 8 -
#17719
dac1768Thanks @astrobot-houston! - Fixes session ID validation to reject non-UUID cookie values before using them as storage keys -
#17770
84eb7e7Thanks @astro-factory! - Fixes--mode,--site,--base,--out-dir,--verbose,--silent, and--openflags being silently dropped when usingastro dev --backgroundorastro preview --background -
#17713
d035290Thanks @wakqasahmed! - Fixescontent-modules.mjsnot removing entries for deleted or renamed content files, which could cause Vite to attempt to resolve non-existent modulesAs part of this fix,
#moduleImportsis now fully rebuilt fromdeferredRenderentries before every write, so a module import added only through the publicaddModuleImport()API without a correspondingdeferredRenderentry in the store will no longer be preserved across writes. -
#17743
adc750fThanks @contactjawad! - FixesAstro.preferredLocaleandAstro.preferredLocaleListignoringAccept-Languagequality values when they are absent or0. An entry without an explicitq=now correctly counts as quality1.0(per RFC 7231) and an entry withq=0is treated as not acceptable, so the highest-quality locale is selected regardless of header order. -
#17757
660991cThanks @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 -
#17783
60b14ffThanks @matthewp! - Fixes a type error when passing an image from a content collectionimage()schema to a component or<Image />. The schema returned byimage()was missing theapngformat, so it no longer matched the type of an imported image. -
#17664
d483125Thanks @astrobot-houston! - Fixes an issue where Astro CSP support didn't correctly handle cases"unsafe-inline"resource. Now when"unsafe-inline", Astro won't emit hashes for the directive specified. -
#17810
0fc5f65Thanks @florian-lefebvre! - Fixes a regression in the content collections that could cause images to not be resolved -
#17781
aa33b44Thanks @matthewp! - FixesmemoryCache()storing responses that set cookies throughAstro.cookiesorAstro.session -
#17787
6661fbeThanks @astro-factory! - Fixesserver:defercrashing the dev server with "undefined is not a function" when a deferred component imports fromastro:i18n -
#17750
dd0e3acThanks @dobrodob! - Fixes a regression wheretransition:persiststopped working for<audio>and<video>elements. -
#17774
fe1d16dThanks @astro-factory! - Adds support for importing.apngfiles as image metadata for use with standard<img>elements. Astro's image components reject APNG files to avoid removing their animation -
#17799
8797754Thanks @astro-factory! - Fixes i18nfallbackType: "rewrite"returning 500 instead of 404 when the fallback locale also has no matching static path for a prerendered dynamic route -
#17741
99d3d3dThanks @ericswpark! - Bumps the Astro compiler to the latest version. Changelog. -
#17782
3578d45Thanks @Princesseuh! - Improves the performance of the Astro CLI in local by enabling Node's module compilation cache. -
#17705
2043e4fThanks @astrobot-houston! - Fixes incremental builds serving cached HTML that references stale CSS filenames after a stylesheet-only edit -
#17754
3d50dfdThanks @astro-factory! - Fixes the dev server refusing to start in Docker containers after a restart due to PID reuse in the lock file check -
#17769
bbda94dThanks @astro-factory! - Fixes a build failure when definingvite.environments.ssrin the Astro config. User-provided environment config forssr,prerender, orclientis now properly deep-merged with Astro's internal environment settings instead of silently breaking the server entry naming. -
#17776
0874da8Thanks @astro-factory! - Fixes theglob()content loader failing to load files with colons in their names (e.g.,Guide: Architecture.md) -
Updated dependencies [
0762a83,0c99615]:- @astrojs/markdown-satteri@0.3.8

Patch Changes
-
#17757
660991cThanks @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
0762a83Thanks @HiDeoo! - Fixes Sätteri processor option types to accept all plugin entries supported by Sätteri v0.10.3.


Patch Changes
-
#17789
7c541a7Thanks @astro-factory! - Fixes dep scanning failure when.astrofrontmatter contains regex literals with quote characters (e.g./"/g) -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.4

Patch Changes
- Updated dependencies [
05763a0]:- @astrojs/internal-helpers@0.10.4

Patch Changes
-
#17731
bc171afThanks @Princesseuh! - Updates Sätteri processor to v0.10.3. See its changelog for details on bugs fixed and features added. -
Updated dependencies [
05763a0]:- @astrojs/internal-helpers@0.10.4

Patch Changes
- Updated dependencies [
05763a0]:- @astrojs/internal-helpers@0.10.4

Patch Changes
- Updated dependencies [
05763a0]:- @astrojs/internal-helpers@0.10.4
- @astrojs/underscore-redirects@1.0.4

Patch Changes
-
#17687
0a22ff5Thanks @asmyshlyaev177! - FixesmiddlewareMode: 'edge'not running your middleware whenisris also enabledPreviously, 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]:- @astrojs/internal-helpers@0.10.4

Patch Changes
- Updated dependencies [
05763a0]:- @astrojs/internal-helpers@0.10.4
- @astrojs/underscore-redirects@1.0.4

Patch Changes
-
#17731
bc171afThanks @Princesseuh! - Updates Sätteri processor to v0.10.3. See its changelog for details on bugs fixed and features added. -
Updated dependencies [
05763a0]:- @astrojs/internal-helpers@0.10.4
- @astrojs/markdown-remark@7.2.4

Patch Changes
- Updated dependencies [
05763a0]:- @astrojs/internal-helpers@0.10.4

Patch Changes
- Updated dependencies [
05763a0]:- @astrojs/internal-helpers@0.10.4


Patch Changes
- Updated dependencies [
05763a0]:- @astrojs/internal-helpers@0.10.4

Patch Changes
- Updated dependencies [
8c193f6]:- @astrojs/internal-helpers@0.10.3

Patch Changes
- Updated dependencies [
8c193f6]:- @astrojs/internal-helpers@0.10.3

Patch Changes
- Updated dependencies [
8c193f6]:- @astrojs/internal-helpers@0.10.3
- @astrojs/underscore-redirects@1.0.4

Patch Changes
- Updated dependencies [
8c193f6]:- @astrojs/internal-helpers@0.10.3

Patch Changes
- Updated dependencies [
8c193f6]:- @astrojs/internal-helpers@0.10.3
- @astrojs/markdown-remark@7.2.3

Patch Changes
-
#17680
ce9f1daThanks @astrobot-houston! - Fixes server islands returning 404 responses in Vercel deployments usingoutput: "static" -
Updated dependencies [
8c193f6]:- @astrojs/internal-helpers@0.10.3

Patch Changes
- Updated dependencies [
8c193f6]:- @astrojs/internal-helpers@0.10.3
- @astrojs/underscore-redirects@1.0.4


Patch Changes
- Updated dependencies [
8c193f6]:- @astrojs/internal-helpers@0.10.3

Patch Changes
- #17668
bef9db5Thanks @lazerg! - Fixes Astro's ambient types leaking into unrelated TypeScript projects. In a monorepo with hoistednode_modules, the plugin found the sharedastroinstall from any project and injectedenv.d.tsandastro-jsx.d.tsinto it, which pulled@types/nodeinto projects that never asked for it. The plugin now only injects those types when the project actually depends onastroor has anastro.config.*file.

Patch Changes
- #17696
8c193f6Thanks @astrobot-houston! - Fixes incremental build cache invalidation caused by Shiki mutating thelangAliasconfig object when loading languages

Patch Changes
- Updated dependencies [
8c193f6]:- @astrojs/internal-helpers@0.10.3

Patch Changes
- #17400
c1cf110Thanks @tianrking! - Return a 404 instead of a 500 for unknown parameters that match a prerendered dynamic endpoint.

Patch Changes
-
#17627
ba6a9f6Thanks @astrobot-houston! - Fixes theastropeer dependency range from^7.0.0to^7.2.0. The adapter imports symbols (beginContentEntryCollection,beginImageCollection,endContentEntryCollection,endImageCollection) fromastro/appthat were added in Astro 7.2.0, so earlier versions fail at build time with aMISSING_EXPORTerror. -
Updated dependencies [
0891ac9]:- @astrojs/underscore-redirects@1.0.4


Patch Changes
- #17658
8b211a5Thanks @astrobot-houston! - Fixes an EventEmitter memory leak when serving static pages over keep-alive connections withstaticHeadersenabled and CSP (security.csp) active

Patch Changes
- Updated dependencies [
0891ac9]:- @astrojs/underscore-redirects@1.0.4

Patch Changes
- #17620
0891ac9Thanks @astrobot-houston! - Fixes dynamic redirect routes to honour user-configured status codes instead of hardcoding 301. Previously, a redirect configured with{ destination: '/new', status: 302 }would be emitted as 301 in the_redirectsfile when the route was dynamic.

Patch Changes
- #17584
5462b81Thanks @astrobot-houston! - Fixes a build crash when a Solid island imports a package that ships pre-compiled browser artifacts via theexports.solidcondition (e.g.@kobalte/core). Solid ecosystem packages are now bundled in non-client environments so that Vite resolves the correct export condition during prerendering.





Minor Changes
- #16871
90c98aeThanks @adamchal! - Whensession: falseis set inastro.config, the adapter no longer auto-wires the Netlify Blobs session driver. Combined with the matchingastrochange, this lets the session runtime tree-shake out of the function bundle.
Patch Changes
- Updated dependencies []:
- @astrojs/underscore-redirects@1.0.3

Patch Changes
- #17474
c895b12Thanks @nicksnyder! - Updates dependencyjs-yamlto v4.3.0

Patch Changes
- #17474
c895b12Thanks @nicksnyder! - Updates dependencyjs-yamlto v4.3.0

Patch Changes
- Updated dependencies [
c895b12]:- @astrojs/internal-helpers@0.10.2

Patch Changes
- Updated dependencies [
c895b12]:- @astrojs/internal-helpers@0.10.2

Patch Changes
- Updated dependencies [
c895b12]:- @astrojs/internal-helpers@0.10.2

Patch Changes
- Updated dependencies [
c895b12]:- @astrojs/internal-helpers@0.10.2
- @astrojs/markdown-remark@7.2.2

Patch Changes
- Updated dependencies [
c895b12]:- @astrojs/internal-helpers@0.10.2

Patch Changes
- Updated dependencies [
c895b12]:- @astrojs/internal-helpers@0.10.2

Patch Changes
- Updated dependencies [
c895b12]:- @astrojs/internal-helpers@0.10.2

Patch Changes
- #17423
08e8adbThanks @astrobot-houston! - Fixescreate-astrosilently writing template files to the wrong directory on Linux when the path contains non-ASCII characters.

Patch Changes
- #17447
b01a692Thanks @ocavue! - Update dependencyyargsto version 18. See the yargs changelog for details.

Patch Changes
-
#17460
3b93a1aThanks @astrobot-houston! - Fixes customtransformfunctions being dropped when a tag or node also specifies a customrendercomponent. User-written transforms are now always preserved; only Markdoc's built-in transforms are removed so the custom component wins. -
#17191
fc3fb2bThanks @eldardada! - Fixes customtransformfunctions being incorrectly dropped for tags and nodes whose names require bracket access (e.g.side-note). The check that detects whether a transform respects a customrendercomponent now recognizes bracket notation, optional chaining and whitespace, not only dot notation.

Patch Changes
- #17514
41a00ddThanks @gtritchie! - Fixes a bug where the integration was emitting React-cased attribute names.

Patch Changes
- #17465
6a1c1d8Thanks @florian-lefebvre! - Fixes a case where errors in files included in tsconfig project references would never be caught


Patch Changes
- #17345
5196fb4Thanks @kkhys! - Fixes an opaqueCannot read properties of undefined (reading 'fileExists')crash whenastro checkruns against the TypeScript 7 native compiler. The native compiler does not ship the programmatic API the checker relies on yet, soastro checknow fails early with a clear message pointing to the tracking issue instead.

Patch Changes
- #17341
64b0d66Thanks @Princesseuh! - Fixes customprecomponents not applying to syntax-highlighted code blocks when using the Sätteri Markdown processor with MDX.

Patch Changes
-
#17323
4298883Thanks @ematipico! - Refactors internal WSL detection by removing theis-wsldependency. -
#17323
4298883Thanks @ematipico! - Replacedwhich-pm-runsdependency withpackage-manager-detector

🚨 Breaking Changes
- Upgrade from Astro 5.14.4 to Astro 7.0.6 and more - by @lin-stephanie in #77 (f1712)
View changes on GitHub

Patch Changes
-
Expand the Astro peer range from
>=4.14.0 <7.0.0to>=4.14.0 <8.0.0so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058) -
Migrate the package build from inline
tsupscripts andpostbuild.graphqlcopying totsdown --watch/tsdownwithtsdown.config.ts, keepastro:env/serverexternal throughdeps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058)

Patch Changes
-
Expand the Astro peer range from
>=4.14.0 <7.0.0to>=4.14.0 <8.0.0so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058) -
Migrate the package build from inline
tsupscripts andpostbuild.graphqlcopying totsdown --watch/tsdownwithtsdown.config.ts, keepastro:env/serverexternal throughdeps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058)

Patch Changes
-
Expand the Astro peer range from
>=4.14.0 <7.0.0to>=4.14.0 <8.0.0so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058) -
Migrate the package build from inline
tsupscripts andpostbuild.graphqlcopying totsdown --watch/tsdownwithtsdown.config.ts, keepastro:env/serverexternal throughdeps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058)

Patch Changes
-
Expand the Astro peer range from
>=4.14.0 <7.0.0to>=4.14.0 <8.0.0so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058) -
Relax Release identifier validation from fixed 16-character Base64 node IDs to GitHub global node IDs such as
RE_..., reuse shared URL regexes, and document live entry identifiers asstring | object. (70b8058) -
Update GraphQL Code Generator (
codegen.config.ts) to emit typed string documents with pure annotations, operation-only types, pre-resolved result shapes, type-only imports, string-union enums, and a scoped post-generation formatter forsrc/graphql/gen/operations.ts. (70b8058) -
Replace
graphql#printcalls withString(...)because generated documents are now typed string documents instead of GraphQL AST documents. (70b8058) -
Migrate the package build from inline
tsupscripts andpostbuild.graphqlcopying totsdown --watch/tsdownwithtsdown.config.ts, keepastro:env/serverexternal throughdeps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058) -
Add
__typenameto the release GraphQL fragment and use it ingetValidReleaseNode()so lookups only map realReleasenodes before stripping the typename from returned data. (70b8058) -
Return an
INVALID_IDENTIFIERloader error when live release entry lookups by node ID, URL or{ owner, repo, tagName }do not resolve to a GitHub Release, instead of returning an empty result. (70b8058) -
Align README with the updated runtime behavior. (
70b8058)

Patch Changes
-
Expand the Astro peer range from
>=4.14.0 <7.0.0to>=4.14.0 <8.0.0so Astro 7 projects can install the loader without peer dependency conflicts. (70b8058) -
Normalize PR search construction by prefixing
type:pronly when neithertype:prnoris:pris present, and preserve existing positive or negativecreated:qualifiers when applyingmonthsBack. (70b8058) -
Relax PR identifier validation from fixed 16-character Base64 node IDs to GitHub global node IDs such as
PR_..., reuse shared URL regexes, and document live entry identifiers asstring | object. (70b8058) -
Update GraphQL Code Generator (
codegen.config.ts) to emit typed string documents with pure annotations, operation-only types, pre-resolved result shapes, type-only imports, string-union enums, and a scoped post-generation formatter forsrc/graphql/gen/operations.ts. (70b8058) -
Replace
graphql#printcalls withString(...)because generated documents are now typed string documents instead of GraphQL AST documents. (70b8058) -
Migrate the package build from inline
tsupscripts andpostbuild.graphqlcopying totsdown --watch/tsdownwithtsdown.config.ts, keepastro:env/serverexternal throughdeps.neverBundle, disable declaration/source maps, and mark the package as side-effect free for better tree-shaking. (70b8058) -
Add
__typenameto the PR GraphQL fragment and use it ingetValidPrNode()so lookups only map realPullRequestnodes before stripping the typename from returned data. (70b8058) -
Return an
INVALID_IDENTIFIERloader error when live PR entry lookups by node ID, URL or{ owner, repo, number }do not resolve to a GitHub PR, instead of returning an empty result. (70b8058) -
Align README with the updated runtime behavior. (
70b8058)

Patch Changes
- #17059
60cb289Thanks @dupontcyborg! - Update volar-service-* dependencies from 0.0.70 to 0.0.71 to pull in yaml-language-server 1.23.0 and yaml 2.8.3, resolving CVE-2026-33532 (GHSA-48c2-rrv3-qjmp), a denial-of-service vulnerability in yaml <2.8.3.

Patch Changes
- #17270
0142964Thanks @FrancoKaddour! - Fix@astrojs/solid-jsincorrectly claiming Svelte 5 components compiled with the newer$$rendererprop (instead of the legacy$$payload). Projects mixing Solid and Svelte could see Svelte components silently rendered as empty strings by the Solid renderer.

Patch Changes
- Updated dependencies [
eb6f97e]:- @astrojs/internal-helpers@0.10.1

Patch Changes
- Updated dependencies [
eb6f97e]:- @astrojs/internal-helpers@0.10.1

Patch Changes
- Updated dependencies [
eb6f97e]:- @astrojs/internal-helpers@0.10.1

Patch Changes
- #17259
ed6bea5Thanks @astrobot-houston! - Fixes proxy support by respectingHTTP_PROXYandHTTPS_PROXYenvironment variables when downloading templates. On Node.js v22.21.0+ and v24.5.0+,create-astronow automatically enables the--use-env-proxyflag so that nativefetch()routes requests through the configured proxy.

Patch Changes
-
#17252
eb6f97eThanks @matthewp! - Fixes trailing-slash handling for request paths that begin with a backslashWith
trailingSlash: 'always', the standalone Node server could append a trailing slash to a request path that begins with a backslash (for example/\example.com/foo) and echo that path back in theLocationheader of a301response. Because browsers resolve a leading\the same way as/, the resultingLocationcould point off-site.Such paths are now recognized as internal paths, matching the existing handling for paths that begin with
//, so they are no longer rewritten with a trailing slash.


Patch Changes
- #17249
02b73b0Thanks @ematipico! - Fixes an issue where thepeerDependenciesfield used incorrect dependencies.

Patch Changes
- #17254
2cffae1Thanks @astrobot-houston! - Fixes syntax highlighting breaking when using CSS@propertyat-rules inside<style>blocks. The</style>closing tag and all subsequent blocks are now correctly recognized regardless of CSS content.

Patch Changes
- #17249
02b73b0Thanks @ematipico! - Fixes an issue where thepeerDependenciesfield used incorrect dependencies.
Last fetched: | Scheduled refresh: Every Saturday
See Customizing GitHub Activity Pages to configure your own
Inspired by releases.antfu.me