AstroEco is Contributing…
Display your GitHub pull requests using astro-loader-github-prs
Changes
issue: #15062
This PR restores TypeScript-related features (e.g., "Find All References") by ensuring the ts-plugin-bundle is correctly included in the VSIX package.
- The Problem: The
ts-plugin-bundlewas being deleted during the build process. This issue was not present in v2.15.x, suggesting that the recent monorepo migration caused the build pipeline to delete manually created folders innode_modules. - The Fix: Changed the output location of the bundle to the
distdirectory to prevent it from being deleted during the production build/prune steps.
Testing
I verified this change by comparing the contents of the generated .vsix package before and after the fix.
Test Steps:
- Generate the extension package using
npx vsce package --no-dependencies. - Inspect the contents of the
.vsixfile usingunzip -l.
Before Implementation
The astro-ts-plugin-bundle was missing from the package (as shown in the screenshot below). grep returned no results.
After Implementation
The extension/dist/astro-ts-plugin-bundle/index.js is correctly included in the package.
Docs
Changes
- adds new stub
GITIGNOREto cli - ensures new stub exists or else creates it for certain adapters
- includes
.vercel/to stub when using vercel adapter
Closes #15058
Testing
There don't seem to be existing tests for this area of the code but to make sure it worked I ran the code path to create the vercel adapter on a fresh test project locally
Docs
I don't think this will affect a user's behavior so I haven't added docs to this PR
/cc @withastro/maintainers-docs for feedback!
Changes
Move wrangler to peer dependencies
Testing
Existing tests should pass
Docs
Not necessary
Changes
Previously the CLoudflare adapter applied a default config if there was no wrangler config file. This PR changes the behaviour to always apply defaults, which are merged with the user config. This allows us to auto-provision bindings for sessions, assets and images.
Testing
Added lots of tests: unit tests for the config handling, and integraiton tests for sessions and images.
Docs
Updates the JSDocs for the cloudflare adapter config.
I'm working on an update to the adapter docs that will include this.
Per request in Discord, adds errors to each of these getters instructing users what to use instead.
Changes
- runtime.env -> import { env } from 'cloudflare:workers'
- runtime.cf -> Astro.request.cf
- runtime.caches -> global caches object
- runtime.ctx -> Astro.locals.cfContext
Testing
N/A
Docs
N/A, already documented.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
astro@6.0.0-alpha.5
Patch Changes
-
#15064
caf5621Thanks @ascorbic! - Fixes a bug that caused incorrect warnings of duplicate entries to be logged by the glob loader when editing a file -
#15073
2a39c32Thanks @ascorbic! - Don't log an error when there is no content config
@astrojs/cloudflare@13.0.0-alpha.4
Patch Changes
- #15079
4463a55Thanks @ascorbic! - Fixes auto-provisioning of default bindings (SESSION KV, IMAGES, and ASSETS). Default bindings are now correctly applied whether or not you have awrangler.jsonfile.
Previously, these bindings were only added when no wrangler config file existed. Now they are added in both cases, unless you've already defined them yourself. - Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
Changes
Currently we log an error when building if no content config is found. This shouldn;t be an error state. This PR changes the sync command to silently return if there is no config.
Testing
Added a test
Docs
This PR contains the following updates:
Release Notes
NaturalIntelligence/fast-xml-parser (fast-xml-parser)
v5.3.3: bug fix and performance improvements
- fix #775: transformTagName with allowBooleanAttributes adds an unnecessary attribute
- Performance improvement for stopNodes (By Maciek Lamberski)
preactjs/preact (preact)
v10.28.1
Fixes
- Fix erroneous diffing w/ growing list (#4975, thanks @JoviDeCroock)
shikijs/shiki (shiki)
v3.20.0
🚀 Features
- cli: Add --format option for html output - by @Divyapahuja31 in #1211 (28dd0)
🐞 Bug Fixes
- rehype: Handle promise rejections in lazy language loading - by @ambujvashistha in #1221 (99654)
- vitepress-twoslash: Fix popper positions being recomputed too early within vitepress code groups - by @Dschungelabenteuer, charles.gruenais and @antfu in #1116 (19ea5)
🏎 Performance
- core: Eliminate redundant tokenization call in tokenizeWithTheme - by @ShivanshBhargava and @NssGourav in #1216 (c78b1)
View changes on GitHub
squirrelchat/smol-toml (smol-toml)
v1.6.0
As of this version, smol-toml now supports the newly released TOML 1.1.0 specification!
Highlights
Multiline inline tables
TOML 1.1.0 now allows inline tables to have newlines, as well as trailing commas.
database = {
driver = "postgresql",
server = {
host = "127.0.0.1",
port = 3307,
},
}Omitting seconds in datetime and time
TOML 1.1.0 renders the seconds component of time elements optional.
datetime-tz = 1979-05-27 07:32Z
datetime = 2001-09-21 10:17
time = 13:37
New string escapes
Strings now support 2 additional escape sequences:
\xHHfor code points between 0 and 255\efor the escape character (U+001B)
What's Changed
- feat: toml 1.1 support by @cyyynthia in #49
Full Changelog: squirrelchat/smol-toml@v1.5.2...v1.6.0
sveltejs/svelte (svelte)
v5.46.0
Minor Changes
- feat: Add
cspoption torender(...), and emit hashes when usinghydratable(#17338)
vercel/turborepo (turbo)
v2.7.2: Turborepo v2.7.2
What's Changed
Docs
- perf(create-turbo): Download files faster by @anthonyshew in #11297
Examples
- examples(dev-deps): bump turbo from 2.6.3 to 2.7.1 in /examples/with-shell-commands in the with-shell-commands group by @dependabot[bot] in #11291
- examples(dev-deps): bump the with-svelte group in /examples/with-svelte with 3 updates by @dependabot[bot] in #11292
- examples(deps): bump the basic group in /examples/basic with 4 updates by @dependabot[bot] in #11293
Changelog
- fix: Use newline for separator in misuse text by @anthonyshew in #10834
- fix(create-turbo): Loader UI states by @anthonyshew in #11300
- fix: Exclude framework-inferred env vars with wildcards by @anthonyshew in #11303
- fix: Don't flash TUI on a >>> FULL TURBO by @anthonyshew in #11306
- fix: Transit nodes in Devtools by @anthonyshew in #11307
Full Changelog: vercel/turborepo@v2.7.1...v2.7.2
v2.7.1: Turborepo v2.7.1
What's Changed
Docs
- docs: Release post for 2.7 by @anthonyshew in #11272
Examples
- fix: Typo in example with-solid README.md description by @jack-dev-crypto in #11287
Changelog
- fix: Correctly validate workspace root as package by @anthonyshew in #11284
- fix: Overly aggressive path checking in microfrontends loading by @anthonyshew in #11286
- chore(boundaries): Allow packages to import themselves by @NicholasLYang in #10202
- feat(query): Provide query for external dependencies by @chris-olszewski in #9929
- fix: Correct version mismatch causing noUpdateNotifier to fail by @DevaanshKathuria in #11133
- chore: Format version printing similar to rest of prelude by @anthonyshew in #11289
New Contributors
- @jack-dev-crypto made their first contribution in #11287
Full Changelog: vercel/turborepo@v2.7.0...v2.7.1
v2.7.0: Turborepo v2.7.0
What's Changed
Docs
- docs(security): Update Next.js by @anthonyshew in #11208
- docs: Remove flags code by @anthonyshew in #11209
- docs: Cleanup Sentry from gitignore by @anthonyshew in #11210
- docs: Comment out Tinybird by @anthonyshew in #11211
- docs(fix): Sitemap by @anthonyshew in #11207
- docs: Revert "Comment out Tinybird" by @anthonyshew in #11223
- docs: Move search to built-in by @anthonyshew in #11224
- docs: fix typo in design-system.css comment by @YASHRDX0001 in #11231
- chore: Upgrade pnpm to 9 by @anthonyshew in #11226
- chore: Update pnpm to version 10 by @anthonyshew in #11237
- fix: React Server Components CVE vulnerabilities by @vercel[bot] in #11245
- docs: Add
turboExtendsKeywordfuture flag and$TURBO_EXTENDS$microsyntax by @anthonyshew in #11246 - docs: Fix Bun filtered install commands by @anthonyshew in #11260
- docs: Add
turbo.jsoncomposition docs by @anthonyshew in #11247 - feat: Turborepo Devtools by @anthonyshew in #11263
- fix: Improve layouts and task graph sourcing for devtools" by @anthonyshew in #11269
- docs: Devtools by @anthonyshew in #11270
- chore: Remove future flags for nonRootExtends and turboExtendsKeyword in preparation for stable release by @anthonyshew in #11280
create-turbo
- fix(cli): Preserve exit codes in notifyUpdate functions by @pyrytakala in #11153
turbo-ignore
- fix: Quoting in turbo-ignore commands by @anthonyshew in #11239
eslint
- fix: Upgrade Next.js to 15.5.7 (CVE-2025-55182) by @ctate in #11232
@turbo/repository
Examples
- examples(dev-deps): bump turbo from 2.6.1 to 2.6.3 in /examples/with-shell-commands by @dependabot[bot] in #11217
- examples(dev-deps): bump the basic group in /examples/basic with 2 updates by @dependabot[bot] in #11218
- examples(dev-deps): bump the with-svelte group in /examples/with-svelte with 3 updates by @dependabot[bot] in #11219
- examples: Use slim image (debian) for prepare and builder stage, use latest no… by @mrr11k in #11228
- examples(dev-deps): bump the with-svelte group in /examples/with-svelte with 2 updates by @dependabot[bot] in #11254
- examples(dev-deps): bump typescript-eslint from 8.48.1 to 8.49.0 in /examples/basic in the basic group by @dependabot[bot] in #11253
- examples(deps): bump react from 19.2.0 to 19.2.3 in /examples/non-monorepo by @dependabot[bot] in #11255
Changelog
- fix(turbo-utils): Add test for conflicting configs and remove stale TODO by @deepakpathik in #11201
- feat: Yarn 4 catalogs by @anthonyshew in #11115
- fix: Add Windows-specific env var to default passthroughs by @anthonyshew in #11233
- fix: Add fine grained interruptible task restarts in watch mode by @johnpyp in #11135
- perf: Find tasks impacted by packages faster by @anthonyshew in #11235
- ci: Fix release pipeline by @anthonyshew in #11240
- ci: Fix release pipeline by @anthonyshew in #11241
- fix: Compose tasks when composing turbo.json by @anthonyshew in #11248
- chore: Run pre-commit fmt on all files by @anthonyshew in #11261
- feat: Task-level
extendsfield by @anthonyshew in #11259 - fix: Allow root microfrontends.json config for @vercel/microfrontends by @anthonyshew in #11264
- chore: Fix lint-staged and orphan GitHub Action by @anthonyshew in #11275
- chore: Remove coverage tooling by @anthonyshew in #11276
- chore: Clear false positive unused warnings by @anthonyshew in #11277
- ci: Fix flaky test (hopefully) by @anthonyshew in #11278
New Contributors
- @deepakpathik made their first contribution in #11201
- @YASHRDX0001 made their first contribution in #11231
- @ctate made their first contribution in #11232
- @johnpyp made their first contribution in #11135
- @vercel[bot] made their first contribution in #11245
Full Changelog: vercel/turborepo@v2.6.3...v2.7.0
typescript-eslint/typescript-eslint (typescript-eslint)
v8.50.1
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
v8.50.0
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
vuejs/core (vue)
v3.5.26
Bug Fixes
- compat: fix compat handler of draggable (#12445) (ed85953), closes #12444
- compat: handle v-model deprecation warning with missing appContext (#14203) (945a543), closes #14202
- compiler-sfc: demote const reactive bindings used in v-model (#14214) (e24ff7d), closes #11265 #11275
- compiler-ssr: handle ssr attr fallthrough when preserve whitespace (#12304) (4783118), closes #8072
- hmr: handle cached text node update (#14134) (69ce3c7), closes #14127
- keep-alive: use resolved component name for async components in cache pruning (#14212) (dfe667c), closes #14210
- runtime-core: ensure correct anchor el for deeper unresolved async components (#14182) (f5b3bf2), closes #14173
- runtime-core: handle patch stable fragment edge case (#12411) (94aeb64), closes #12410
- runtime-core: pass component instance to flushPreFlushCbs on unmount (#14221) (e857e12), closes #14215
Performance Improvements
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
Changes
When a Svelte component types its children prop as Snippet, Astro may still type passed children as any when using elements or string for text. Which can produce false-positive TypeScript errors (e.g. string is not assignable to Snippet) even though Svelte treats passed children as snippets.
With these changes, Astro respects the children type declared by the Svelte component. Additionally, if a component references children but doesn’t explicitly type it, we default children to Snippet to mirror Svelte’s implicit prop behavior.
Known limitation: we still can’t reliably error when a component doesn’t accept children but is used with element/multiple children. Astro’s element-children typing currently becomes any, which prevents TypeScript from catching those cases. Text-only children are typed as string, so TypeScript can still flag that scenario. This could be improved in the future by tightening the type Astro uses for one or multiple element children.
For example, given:
<script lang="ts">
const value = $state();
</script>
<p>hello world</p>The Svelte component above should error if it’s used with children. With current limitations, we do error for text children:
<Empty>Hello</Empty>but not for this:
<Empty><p>Hello</p></Empty>
<!-- or -->
<Empty>
<p>Hello</p>
<p>Hello</p>
</Empty>Other than the example above, it should respect the type defined in the Svelte component.
Overall, this should improve the Svelte integration’s type-checking and catch more cases than before.
Fixes #15040
Testing
Added a new test to check the children prop.
Docs
Changes
Adding the ASTRO_DB_APP_TOKEN secret to the environment in a CD workflow for pushing Astro DB migrations to a remote server creates a security vulnerability for repos hosted on some platforms like GitHub. The issue is that you cannot selectively block PRs from forked repos to segregate trusted and untrusted contributions. Both will run in the established CI / CD workflows. When the CD job checks out such a forked repo, untrusted code then has access to the ASTRO_DB_APP_TOKEN secret that is only needed by the npm astro db commands. With the addition of a --db-app-token flag for the astro db commands, that secret can be securely passed to the executable.
Testing
Added unit and integration tests for the changeset for happy path, error condition, and edge cases.
Docs
Docs updated in PR #12965
Description
Related to the Add Accessibility Statemement (#3616) discussion 🙂
Changes
#14901 added a check for duplicate IDs to the glob() loader. However this caused false warnings, because when a file is edited, the existing entry is not removed before applying changes.
This PR changes the warnign to first check that the filename is different, ensuring it only warns for different files with the same ID.
Testing
Adds tests for the false positive, but also adds tests for the warning added in #14901. Claude wrote the tests and I checked them
Docs
Just a bugfix
Changes
Allows creation of partitioned cookies, https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies.
This is provided in the underlying library:
https://github.com/jshttp/cookie?tab=readme-ov-file#partitioned
Testing
- Added unit tests
- Using this patch on my own servers
Docs
Will need to update https://docs.astro.build/en/reference/api-reference/#cookies
/cc @withastro/maintainers-docs for feedback!
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
astro@6.0.0-alpha.4
Major Changes
- #15049
beddfebThanks @Ntale3! - Removes the ability to render Astro components in Vitest client environments - (v6 upgrade guidance)
Patch Changes
Testing
Skipping this test which fails 50+% of the time, causing us to need to rerun tests to get clean PRs.
This is particularly bad for outside contributors who don't know that tests can be flakey.
Will re-enable when the flakiness can be dealt with.
Changes
This PR further reduce code branching between DevApp and AstroServerApp.
- The two classes had the same
renderErrorcode, so I created arenderDevErrorinside theBaseAppand use the variableimport.meta.env.DEV, and userenderDevErrorwhen it'strue, otherwise it uses the previous function. BothDevAppandAstroServerAppdon't need to use a customrenderErroranymore - The function
AstroServerapp.handleRequesthas been moved into a file that belongs to the astro server plugin. I renamed toprepareRequest. It accepts a callback that we can use to callapp.render
Testing
Current tests should still pass.
Docs
N/A
Changes
- Updates the
@capsizecss/unpackandfontaceutilities used by Astro’s experimental font features - These two new versions both switch from using
fontkittofontkittenunder the hood which reduces Astro’s install size by almost 8 MB. See: - The
@capsizecss/unpackupdate is a major but the breaking changes don’t impact us (switches to ESM-only and moves thefromFile()API we don’t use to a new entrypoint)
Testing
Existing tests should pass
Docs
N/A — no user-facing impact other than smaller installs.
Changes
- Zod issues have an optional
messagethat is a good message in case of unions. Use it.
Testing
- Updated existing tests with more descriptive messages.
Docs
N/A, bug fix.
Changes
- Moves astro:* and virtual:astro:* exclusion to core.
- This is needed because prefetch gets optimized for the client and
virtual:astro:adapter-config/clientis part of the dep graph.
Testing
- Verified this fixes astro.build
Docs
N/A
Changes
So Vite actually exposes a method that allows you to check if a file is authorized or not in its dev server, this is pretty neat however it requires a resolved config because it uses some of the properties. Since the image endpoint runs in the user's code, we can only expose this through a Vite plugin, but it's not the first time we do that, so it's ok.
Testing
Added a few tests
Docs
N/A
Changes
- Fixes the main entrypoint to the new one.
- Hardcodes the
compatibility_dateto the one we have in the cloudflare integration. - Removes
compatibility_flagswhich is no longer needed.
Testing
Test manually.
Docs
N/A
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
astro@6.0.0-alpha.3
Major Changes
-
#15006
f361730Thanks @florian-lefebvre! - Removes sessiontestdriver - (v6 upgrade guidance) -
#15006
f361730Thanks @florian-lefebvre! - Deprecates session driver string signature - (v6 upgrade guidance)
Minor Changes
-
#15006
f361730Thanks @florian-lefebvre! - Adds new session driver object shapeFor greater flexibility and improved consistency with other Astro code, session drivers are now specified as an object:
-import { defineConfig } from 'astro/config' +import { defineConfig, sessionDrivers } from 'astro/config' export default defineConfig({ session: { - driver: 'redis', - options: { - url: process.env.REDIS_URL - }, + driver: sessionDrivers.redis({ + url: process.env.REDIS_URL + }), } })
Specifying the session driver as a string has been deprecated, but will continue to work until this feature is removed completely in a future major version. The object shape is the current recommended and documented way to configure a session driver.
Patch Changes
-
#15044
7cac71bThanks @florian-lefebvre! - Removes an exposed internal API of the preview server -
#15047
5580372Thanks @matthewp! - Fixes wrangler config template inastro add cloudflareto use correct entrypoint and compatibility date -
#15053
674b63fThanks @matthewp! - Excludesastro:*andvirtual:astro:*from client optimizeDeps in core. Needed for prefetch users since virtual modules are now in the dependency graph.
@astrojs/cloudflare@13.0.0-alpha.3
Minor Changes
-
#15006
f361730Thanks @florian-lefebvre! - Adds new session driver object shapeFor greater flexibility and improved consistency with other Astro code, session drivers are now specified as an object:
-import { defineConfig } from 'astro/config' +import { defineConfig, sessionDrivers } from 'astro/config' export default defineConfig({ session: { - driver: 'redis', - options: { - url: process.env.REDIS_URL - }, + driver: sessionDrivers.redis({ + url: process.env.REDIS_URL + }), } })
Specifying the session driver as a string has been deprecated, but will continue to work until this feature is removed completely in a future major version. The object shape is the current recommended and documented way to configure a session driver.
Patch Changes
-
#15044
7cac71bThanks @florian-lefebvre! - Removes an exposed internal API of the preview server -
#15039
6cc96e7Thanks @matthewp! - Fixes static content deployment by moving it to another folder, so Wrangler can tell the static and worker content apart -
#15045
31074fcThanks @ematipico! - Fixes an issue where using the Vue integration with the Cloudflare adapter resulted in some runtime errors. -
#15053
674b63fThanks @matthewp! - Excludesastro:*andvirtual:astro:*from client optimizeDeps in core. Needed for prefetch users since virtual modules are now in the dependency graph. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/netlify@7.0.0-alpha.4
Minor Changes
-
#15006
f361730Thanks @florian-lefebvre! - Adds new session driver object shapeFor greater flexibility and improved consistency with other Astro code, session drivers are now specified as an object:
-import { defineConfig } from 'astro/config' +import { defineConfig, sessionDrivers } from 'astro/config' export default defineConfig({ session: { - driver: 'redis', - options: { - url: process.env.REDIS_URL - }, + driver: sessionDrivers.redis({ + url: process.env.REDIS_URL + }), } })
Specifying the session driver as a string has been deprecated, but will continue to work until this feature is removed completely in a future major version. The object shape is the current recommended and documented way to configure a session driver.
Patch Changes
- Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/node@10.0.0-alpha.3
Minor Changes
-
#15006
f361730Thanks @florian-lefebvre! - Adds new session driver object shapeFor greater flexibility and improved consistency with other Astro code, session drivers are now specified as an object:
-import { defineConfig } from 'astro/config' +import { defineConfig, sessionDrivers } from 'astro/config' export default defineConfig({ session: { - driver: 'redis', - options: { - url: process.env.REDIS_URL - }, + driver: sessionDrivers.redis({ + url: process.env.REDIS_URL + }), } })
Specifying the session driver as a string has been deprecated, but will continue to work until this feature is removed completely in a future major version. The object shape is the current recommended and documented way to configure a session driver.
@astrojs/vue@6.0.0-alpha.1
Patch Changes
- #15045
31074fcThanks @ematipico! - Fixes an issue where using the Vue integration with the Cloudflare adapter resulted in some runtime errors.
Changes
- Renames
AstroDevPipelinetoRunnablePipeline, as an analogy of the vite runnable dev environment - Renames
DevApptoNonRunnablePipeline, as an analogy of the vite non-runnable dev environment - Removes
handleRoutefromAstroServerApp, and usesrenderinstead (reduced code branching) - Fixes the Cloudflare + Vue bug, by renaming the virtual module to use our internal
virtual:astro:*nomenclature. This fixes it because the Cloudflare adapter pre-bundles all virtual l modules that start withvirtual:astro:*
Testing
CI should stay green
Docs
N/A
Changes
- This thing was temporary
- When trying things out, I found it was actually unused now.
.dev.varsare retrieved from the project root anyways - Resolves https://github.com/orgs/withastro/projects/21/views/1?pane=issue&itemId=145119668
- Unrelated: optimizes
piccolore
Testing
Manually, should pass
Docs
Changeset
Changes
- Previously the default layout was
dist/_worker.js/as the worker and static files indist/. That caused Wrangler to see the entiredist/folder as being static content, including the worker, so no worker would be deployed.- Fix is to move the static stuff to
dist/client/. Confirmed this fixes it.
- Fix is to move the static stuff to
- Updated the automatic wrangler config to remove the
idfor KV. With this it errors as the id doesn't exist. Without it will automatically create one.
Testing
- Tested manually.
Docs
N/A
Changes
This is an identical fix to #15032 -- unfortunately, the problem occurred twice in the code and I only caught it in one place!
Testing
No tests
Docs
For rendering in docs
This documents a few changes based on user feedback.
Docs
- The optional wrangler config.
- The new entrypoint which replaces pointing the main to the built worker.
- Better explanation for the Astro.locals.runtime changes. Users missed that in the changelog so wanted to highlight it all better.
Changes
- What does this change?
- Be short and concise. Bullet points can help!
- Before/after screenshots can help as well.
- Don't forget a changeset! Run
pnpm changeset. - See https://contribute.docs.astro.build/docs-for-code-changes/changesets/ for more info on writing changesets.
Testing
Docs
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.
next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.
Releases
@astrojs/cloudflare@13.0.0-alpha.2
Major Changes
-
#15037
8641805Thanks @matthewp! - Updates the Wrangler entrypointPreviously, the
mainfield inwrangler.jsoncpointed to the built output, since Wrangler only ran in production after the build completed:Now that Wrangler runs in both development (via workerd) and production, Astro provides a default entrypoint that works for both scenarios.
What should I do?
Update your
wrangler.jsoncto use the new entrypoint:{ "main": "@astrojs/cloudflare/entrypoints/server", }This single entrypoint handles both
astro devand production deployments.
Minor Changes
-
#15037
8641805Thanks @matthewp! - The Wrangler configuration file is now optional. If you don't have custom Cloudflare bindings (KV, D1, Durable Objects, etc.), Astro will automatically generate a default configuration for you.What should I do?
If your
wrangler.jsonconly contains basic configuration like this:{ "main": "@astrojs/cloudflare/entrypoints/server", "compatibility_date": "2025-05-21", "assets": { "directory": "./dist", "binding": "ASSETS", }, }You can safely delete the file. Astro will handle this configuration automatically.
You only need a wrangler config file if you're using:
- KV namespaces
- D1 databases
- Durable Objects
- R2 buckets
- Environment variables
- Custom compatibility flags
- Other Cloudflare-specific features
Patch Changes
-
#15026
90c608cThanks @matthewp! - Improves prebundling of internal Astro modules -
#15030
b5aa52bThanks @ematipico! - Fixed an issue where the featureexperimental.chromeDevtoolsWorkspacewasn't supported by the new version of the adapter. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
astro@6.0.0-alpha.2
Patch Changes
-
#15024
22c48baThanks @florian-lefebvre! - Fixes a case where JSON schema generation would fail for unrepresentable types -
#15036
f125a73Thanks @florian-lefebvre! - Fixes certain aliases not working when using images in JSON files with the content layer -
#15036
f125a73Thanks @florian-lefebvre! - Fixes a vite warning log during builds when using npm
@astrojs/sitemap@3.6.1-alpha.1
Patch Changes
- #15036
f125a73Thanks @florian-lefebvre! - Updates how routes are retrieved to avoid relying on a deprecated API
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.16.7
Patch Changes
-
#14954
7bec4bdThanks @volpeon! - Fixes remote imagesEtagheader handling by disabling internal cache -
#15028
87b19b8Thanks @Princesseuh! - Fixes certain aliases not working when using images in JSON files with the content layer -
#15055
4e28db8Thanks @delucis! - Reduces Astro’s install size by around 8 MB -
#15034
8115752Thanks @florian-lefebvre! - Fixes a vite warning log during builds when using npm
@astrojs/sitemap@3.6.1
Patch Changes
- #15033
dd06779Thanks @florian-lefebvre! - Updates how routes are retrieved to avoid relying on a deprecated API
Changes
- fixes a bug where the feature
experimental.chromeDevtoolsWorkspacewasn't supported anymore by the Cloudflare adapter because the handling was done inside the astro dev server code path. I fixed it by moving the implementation inside a vite plugin, which is added tocreateVite. - Reduced the code duplication of the patch overlay logic. It was added twice: once as a plugin inside
createViteand again in the astro server vite plugin. Now we have only one instance. I removed the use ofopts.ssrbecause we already useapplyToEnvironment - Removed the use of the module loader in some places. This is part of removing
AstroServerApp - Added the same logic for CSS we use in
DevAppinsideAstroServerApp. This is part of removingAstroServerAppfrom the codebase
Testing
Manually tested the cloudflare fixture. Manually tested examples/blog.
CI should stay green
Docs
N/A
Changes
This updates our JSDoc for the new CSP entries so that they show at the appropriate header depth.
Also adds a missing code example that didn't get added to the original entry.
Testing
No tests.
Docs
This PR is for proper rendering in docs.
Description
Added the STACKIT Docs as showcase: https://docs.stackit.cloud/
Changes
Bit of a wasteful code, but this is only way I figured out to make it work in every case since we don't have access to Vite.
Fix #14766
Testing
There's a test for what the original PR tried to fix already. I don't think this necessarily warrant a new test because there's not exactly a real issue underneath here. I think some people were confused by the error message, some by the alias regression etc.
Docs
N/A
Changes
- Cloudflare does some prebundling, and Astro entrypoints (like astro/runtime and astro/app are prebundled. We need to exclude the virtual modules which can't be prebundled by esbuild.
Testing
This is based on a demo app that failed without this config.
Docs
N/A, bug fix
Changes
- https://github.com/orgs/withastro/projects/21/views/1?pane=issue&itemId=145121908
- Only handles dates as I'm not sure what else we could do. Other data types do not seem to be representable so
anyseems acceptable
Testing
N/A
Docs
Changeset
Changes
Adds a new retainBody option to the glob() loader to allow reducing the size of the data store.
Currently, the glob() loader stores the raw body of each content file in entry.body, in addition to the rendered HTML in entry.rendered.html.
The retainBody option defaults to true, but you can set it to false to prevent the raw body of content files from being stored in the data store. This significantly reduces the deployed size of the data store and helps avoid hitting size limits for sites with very large collections. This has caused issues for some very large sites, which have hit the maximum JSON string size.
The rendered body will still be available in the entry.rendered.html property for markdown files, and the entry.filePath property will still point to the original file. For MDX collections this will dramatically reduce the size of the collection, as there will no longer be any body retained in the store.
import { defineCollection } from 'astro:content';
import { glob } from 'astro/loaders';
const blog = defineCollection({
loader: glob({
pattern: '**/*.md',
base: './src/content/blog',
retainBody: false
}),
});When retainBody is false, entry.body will be undefined instead of containing the raw file contents.
Testing
Docs
This PR contains the following updates:
Release Notes
tailwindlabs/tailwindcss (@tailwindcss/vite)
v4.1.18
Fixed
- Ensure validation of
source(…)happens relative to the file it is in (#19274) - Include filename and line numbers in CSS parse errors (#19282)
- Skip comments in Ruby files when checking for class names (#19243)
- Skip over arbitrary property utilities with a top-level
!in the value (#19243) - Support environment API in
@tailwindcss/vite(#18970) - Preserve case of theme keys from JS configs and plugins (#19337)
- Write source maps correctly on the CLI when using
--watch(#19373) - Handle special defaults (like
ringColor.DEFAULT) in JS configs (#19348) - Improve backwards compatibility for
contenttheme key from JS configs (#19381) - Upgrade: Handle
futureandexperimentalconfig keys (#19344) - Try to canonicalize any arbitrary utility to a bare value (#19379)
- Validate candidates similarly to Oxide (#19397)
- Canonicalization: combine
text-*andleading-*classes (#19396) - Correctly handle duplicate CLI arguments (#19416)
- Don’t emit color-mix fallback rules inside
@keyframes(#19419) - CLI: Don't hang when output is
/dev/stdout(#19421)
sveltejs/devalue (devalue)
v5.6.1
Patch Changes
2161d44: fix: add hasOwn check before calling reviver
v5.6.0
Minor Changes
mmkal/expect-type (expect-type)
v1.3.0
What's Changed
- Update TypeScript to 5.9 and test against it by @charpeni in #166
- Improve type error for failures on types with optional props by @mmkal in #160
Full Changelog: mmkal/expect-type@v1.2.2...v1.3.0
NaturalIntelligence/fast-xml-parser (fast-xml-parser)
v5.3.3: bug fix and performance improvements
- fix #775: transformTagName with allowBooleanAttributes adds an unnecessary attribute
- Performance improvement for stopNodes (By Maciek Lamberski)
publint/publint (publint)
v0.3.16
Patch Changes
- Re-enable file existence checks for TS and TSX files if they do not use custom conditions. In v0.3.10, this was done unconditionally instead which missed catching possible file typos if only common conditions are used. (
7b1408e)
sass/dart-sass (sass)
v1.96.0
- Allow numbers with complex units (more than one numerator unit or more than
zero denominator units) to be emitted to CSS. These are now emitted as
calc()expressions, which now support complex units in plain CSS.
v1.95.1
- No user-visible changes.
v1.95.0
-
Add support for the CSS-style
if()function. In addition to supporting the
plain CSS syntax, this also supports asass()query that takes a Sass
expression that evaluates totrueorfalseat preprocessing time depending
on whether the Sass value is truthy. If there are no plain-CSS queries, the
function will return the first value whose query returns true during
preprocessing. For example,if(sass(false): 1; sass(true): 2; else: 3)
returns2. -
The old Sass
if()syntax is now deprecated. Users are encouraged to migrate
to the new CSS syntax.if($condition, $if-true, $if-false)can be changed to
if(sass($condition): $if-true; else: $if-false).See the Sass website for details.
-
Plain-CSS
if()functions are now considered "special numbers", meaning that
they can be used in place of arguments to CSS color functions. -
Plain-CSS
if()functions andattr()functions are now considered "special
variable strings" (likevar()), meaning they can now be used in place of
multiple arguments or syntax fragments in various CSS functions.
v1.94.3
- Fix the span reported for standalone
%expressions followed by whitespace.
sveltejs/svelte (svelte)
v5.45.10
Patch Changes
- fix: race condition when importing
AsyncLocalStorage(#17350)
v5.45.9
Patch Changes
-
fix: correctly reschedule deferred effects when reviving a batch after async work (#17332)
-
fix: correctly print
!doctypeduringprint(#17341)
v5.45.8
Patch Changes
-
fix: set AST
root.startto0androot.endtotemplate.length(#17125) -
fix: prevent erroneous
state_referenced_locallywarnings on prop fallbacks (#17329)
v5.45.7
Patch Changes
-
fix: Add
<textarea wrap="off">as a valid attribute value (#17326) -
fix: add more css selectors to
print()(#17330) -
fix: don't crash on
hydratableserialization failure (#17315)
v5.45.6
Patch Changes
typescript-eslint/typescript-eslint (typescript-eslint)
v8.49.0
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
This fixes a regression where redirects with dynamic params (like /foo/bar/[a]/[b] → /foo/baz/[...spread]) fail during static builds with GetStaticPathsRequired error.
The issue: redirect routes with dynamic params were inheriting the default prerender setting. When the destination uses spread syntax or doesn't exist, redirectRoute is undefined, so prerender detection skips them — leaving them marked as static. The build then tries to call getStaticPaths() on a route that doesn't have it.
Changes
- Closes #14709
- Set
prerender: falsefor any redirect with dynamic params - Static redirects (no params) continue to use the default config
That's it — one line.
Testing
Ran the existing redirect test suite:
All tests pass. The existing static output tests already cover dynamic redirects to spread routes (see redirects.test.js lines 127-134).
Docs
No docs needed — this is a bug fix restoring expected behavior.
Fixes #14991
Problem
When CSS was imported in both a page's frontmatter and a component's script tag, it was bundled twice in production builds.
Solution
Added content-based deduplication that checks existing styles before adding new ones.
Testing
- New test:
test/css-double-bundle.test.js - New fixture:
test/fixtures/css-double-bundle/ - All existing CSS tests pass
Summary
Fixes #14686
Vue components can accept arbitrary HTML attributes via $attrs fallthrough (Vue docs), but the generated TypeScript types didn't include these attributes. This caused false TypeScript errors when passing attributes like class or style to Vue components, even though they work correctly at runtime.
Changes
-
Created
vue-shims.d.tswith aPropsWithHTMLAttributes<T>type helper that combines:- Component props (
T) - HTML attributes (
astroHTML.JSX.HTMLAttributes) - Astro client directives (
AstroClientDirectives)
- Component props (
-
Updated
editor.ctsto wrap all generated props types withPropsWithHTMLAttributes<T>
Testing
Vue components now accept standard HTML attributes without TypeScript errors:
---
import MyButton from './MyButton.vue';
---
<MyButton class="large" style="color: red" id="my-btn" />
RFC / Context: Dev Toolbar: allow configuring default position roadmap#1277
DX / Quality of life tweak for dev toolbar placement.
Changes
Adds optional devToolbar.placement configuration option.
-
New config property:
devToolbar.placementaccepts'bottom-left','bottom-center', or'bottom-right' -
Priority:
defaultSettings→config→localStorage(user's UI choice still wins) -
Use case: Sites with bottom-center UI elements (chat widgets, cookie banners) can set a project-wide default that persists across team members and localStorage clears
Before this PR, it would require manually setting the
placementevery timelocalStorageis cleared. Doesn't persist as a project default.
Exampe usage, astro.config.mjs:
export default defineConfig({
devToolbar: {
placement: 'bottom-left',
},
});Files changed
| File | Change |
|---|---|
types/public/toolbar.ts |
Export DevToolbarPlacement type |
types/public/config.ts |
Add placement to interface with JSDoc |
core/config/schemas/base.ts |
Add Zod schema validation |
vite-plugin-astro-server/pipeline.ts |
Pass placement to client metadata |
runtime/client/dev-toolbar/settings.ts |
Implement priority chain |
test/units/config/config-validate.test.js |
Add validation tests |
Testing
- Added unit tests for config validation:
- Valid placement values are accepted
- Invalid placement values are rejected
- Omitting placement is allowed (optional)
Testing only test/units/config/config-validate.test.js:
pnpm:
pnpm --filter=astro exec astro-scripts test "test/units/config/config-validate.test.js"npm:
node --test packages/astro/test/units/config/config-validate.test.jsDocs
@withastro/maintainers-docs for feedback, Documentation needed for:
- Configuration reference: new
devToolbar.placementoption - Default value:
'bottom-center' - Behavior: config acts as default, localStorage overrides persist user choice
Changes
Adds an Astro.CustomImageProps interface that users can extend to support additional props in <Image>, <Picture>, and getImage(). Handling non-standard props is already supported in the Image Service API, there’s just no way to type them.
For example, with this PR, an image service that supports blurring images can add a custom blur prop:
// example.d.ts
declare namespace Astro {
interface CustomImageProps {
/** Apply a Gaussian blur with this radius to the image. */
blur?: number;
}
}Notes:
- This is a single interface that extends all three APIs (
<Image>,<Picture>, andgetImage()). Maybe hypothetically someone only wants to extend one of these? But I feel like if you’re saying any of these APIs should behave differently, you may want to export specific wrapper components/functions instead of reusing Astro’s. getImage()uses a different type from the components, which doesn’t seem to share anything even though many of the properties overlap, so this required a separate change to theImageTransformtype.
Testing
Tested by patching node_modules in a project with a custom image service.
Docs
Includes a changeset and has an accompanying docs PR: withastro/docs#12897
/cc @withastro/maintainers-docs for feedback!
Changes
- None, just test
Testing
- Use the workspace version of
@astrojs/sitemap.
Docs
N/A
Changes
This fixes syntax for the new CSP docs in configuration reference by adding @docs to some entries on which it was missing
Testing
No tests (doesn't render in current docs without this)
Docs
Just for docs!
Changes
- Closes #14967
- Remove the
testdriver as it was only used by us internally. There's another way to test now - Other driver shape from v5 still work (will be removed in v7)
- New driver shape in v6
- Moves a few things around to keep session stuff together
Testing
- Existing tests pass
- Types for
defineConfig()manually tested
Docs
- Changesets
- withastro/docs#12951
- Link in config warning
- JSDocs
- Types
- Config reference
Changes
When svelte2tsx generates types for components without props (or strict Svelte 5 components), it often includes a Record<string, never> index signature to forbid arbitrary props. This conflicted with Astro's client:* directives, causing false positive type errors. To fix the type error, we conditionally remove that strict index signature while preserving other prop types.
Testing
Added a new test to check client directives.
Docs
Changes
This updates the links to the upgrade guide in all the v6 changesets (and ones already published in the changelog) to point to v6.docs.astro.build instead of deploy-preview-12322--astro-docs-2.netlify.app.
(I don't think this PR itself needs a changeset? The PR deploy preview links still work, and will for the entire beta period, but we'll use these going forward so they're easier for people to access.)
Notes:
- from now on, we will use this
v6.docs.astro.build/en/guides/upgrade-to/v6/#URL format for all v6 changesets that link to the upgrade guide - When releasing v6 (stable), we will make a similar PR that removes the
v6.from the URL so that these changelog entries all point to regular docs.
Testing
Visited a few links to make sure they work.
Docs
does not require docs.
Changes
- Follows #14995
- Updates
transformhooks when applicable - Biggest change I think is I had to split the vite plugin for
.astrofiles to have more efficient filters
Testing
Should pass
Docs
N/A, internal refactor
Changes
Fixes current tests and updates the contribution guide to help triage possible issues when triaging/creating tests
Testing
CI should stay green
Docs
This documents the server build process to explain the steps and which environments get built in which order and why.
Testing
N/A
Description
I should be forbidden of creating workflows…
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.16.6
Patch Changes
-
#14982
6849e38Thanks @Princesseuh! - Fixes images outside the project directory not working when using astro:assets in development mode -
#14987
9dd9fcaThanks @Princesseuh! - Fixes SVGs not working in dev mode when using the passthrough image service -
#15014
a178422Thanks @delucis! - Adds support for extending the type of the props accepted by Astro’s<Image>component,<Picture>component, andgetImage()API.
@astrojs/svelte@7.2.4
Patch Changes
- #15004
16f3994Thanks @antonyfaris! - Fixes an issue where Svelte components used in Astro files would incorrectly report type errors when usingclient:*directives.
Description
This one is pretty self-explanatory and makes sense in this context, my brain used yaml-style comments while this script is actually run in a JavaScript context 🙈
Changes
What the title says, the announcement script needs it
Testing
We'll see
Docs
N/A
Description
Feels like "déjà vu", but this PR is a new attempt to get preview releases working. I noticed 2 issues:
- In the
Get preview packagesstep (which we've never hit before), I noticed while reading the code that I improperly named a variable. - While reading the changesets CLI code, I noticed that the comparison is is done using a
refthat is defined if the--sinceflag is used (or if the deprecated--sinceMasteris used). This is not our case and when it's not defined, it fallbacks toconfig.baseBranch. After checking out, the Astro repo sets it toorigin/main, while our repo usesmain.
Changes
- See https://rolldown.rs/apis/plugin-hook-filters
- Rolldown introduced a new way of filtering some hooks in order to be more efficient. This API has been backported to rollup so it's fine to adopt it now
- This is mostly a 1-1 port. I improved the filters when I had to opportunity to. That can make a huge diff (eg.
vite-plugin-config-aliasloadhook ran twice as less in my test) - It converts all relevant
resolveIdandloadhooks. I didn't want to includetransformto avoid making it more complicated than it already is. There will be another PR for it entirely (#15000) - Regexes are the key. I used Chatgpt and Regex101 to help write them
- Review this PR without whitespace changes!
- This PR contains a lot of unrelated diffs because of formatting, not much I can do about unfortunately until the zod 4 is merged
Testing
Should pass
Docs
N/A, internal refactor
Changes
- Updates the action that checks dependency sizes on PRs
- This release adds proper support for use with the
pull_request_targettrigger we use (see e18e/action-dependency-diff#95)
Testing
n/a
Docs
n/a
Description
This PR fixes our currently broken preview release workflow by ensuring a full Git history is fetched during the checkout step.
While shallow clones are extended during the release process, this code path seems to not be hit when running changeset status. Here is a side-by-side comparison of running that command in a full clone vs a shallow clone:

Changes
What the title says
Testing
N/A
Docs
N/A
Changes
- jsdocs annotations with zod have a problem that make them not to be reflected after
z.infer - This PR duplicates the types and schemas
- It also makes the schema merging more efficient, per zod docs
Testing
Adds type tests to make sure types and schemas remain in sync
Docs
Changeset
Changes
- Removed the compatibility flags from our tests
- Updated the cloudflare plugin to the latest, and use their latest feature: programmatic configuration
Testing
- Manually built the updated fixtures, and now warnings regarding compatibility flags are emitted.
- Current tests should pass
Docs
Should we update the docs about the default configuration?
Changes
When an image is using @fs, we can fetch it directly through Vite, that way it'll automatically respect Vite's limitations in regard to which files are allowed to be loaded.
Testing
We had a test for this already, but it didn't fetch the images (mostly because it was about path construction back in the day) so I updated it to actually try to fetch them
Docs
N/A
This PR contains the following updates:
Release Notes
withastro/astro (astro)
v5.16.4
Patch Changes
-
#14940
2cf79c2Thanks @ematipico! - Fixes a bug where Astro didn't properly combine CSP resources from thecspconfiguration with those added using the runtime API (Astro.csp.insertDirective()) to form grammatically correct CSP headersNow Astro correctly deduplicate CSP resources. For example, if you have a global resource in the configuration file, and then you add a
a new one using the runtime APIs.
v5.16.3
Patch Changes
-
#14889
4bceeb0Thanks @florian-lefebvre! - Fixes actions types when using specific TypeScript configurations -
#14929
e0f277dThanks @matthewp! - Fixes authentication bypass via double URL encoding in middlewarePrevents attackers from bypassing path-based authentication checks using multi-level URL encoding (e.g.,
/%2561dmininstead of/%61dmin). Pathnames are now validated after decoding to ensure no additional encoding remains.
v5.16.2
Patch Changes
-
#14876
b43dc7fThanks @florian-lefebvre! - Fixes a vite warning log during builds when using npm -
#14884
10273e0Thanks @florian-lefebvre! - Fixes a case where setting the status of a page to404in ssr would show an empty page (or404.astropage if provided) instead of using the current page
v5.16.1
Patch Changes
-
#14769
b43ee71Thanks @adriandlam! - Fixes an unhandled rejection issue when using Astro with Vercel Workflow DevKit -
#14761
345eb22Thanks @ooga! - Updatesbuttonattributes types to allowcommandandcommandfor -
#14866
65e214bThanks @GameRoMan! - FixesAstro.globto be correctly marked as deprecated -
#14894
1ad9a5bThanks @delucis! - Fixes support for Astro component rendering in Vitest test suites using a “client” environment such ashappy-domorjsdom -
#14782
abed929Thanks @florian-lefebvre! - Improves syncing
sveltejs/svelte (svelte)
v5.45.5
Patch Changes
-
fix: correctly reconcile each blocks after outroing branches are resumed (#17258)
-
fix: destroy each items after siblings are resumed (#17258)
v5.45.4
Patch Changes
-
chore: move DOM-related effect properties to
effect.nodes(#17293) -
fix: allow
$props.id()to occur after anawait(#17285) -
fix: keep reactions up to date even when read outside of effect (#17295)
v5.45.3
Patch Changes
-
add props to state_referenced_locally (#17266)
-
fix: preserve node locations for better sourcemaps (#17269)
-
fix: handle cross-realm Promises in
hydratable(#17284)
v5.45.2
Patch Changes
v5.45.1
Patch Changes
- fix: link offscreen items and last effect in each block correctly (#17240)
v5.45.0
Minor Changes
- feat: add
print(...)function (#16188)
v5.44.1
Patch Changes
-
fix: await blockers before initialising const (#17226)
-
fix: link offscreen items and last effect in each block correctly (#17244)
-
fix: generate correct code for simple destructurings (#17237)
-
fix: ensure each block animations don't mess with transitions (#17238)
v5.44.0
Minor Changes
- feat:
hydratableAPI (#17154)
v5.43.15
Patch Changes
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
This PR contains the following updates:
Release Notes
withastro/astro (@astrojs/check)
v0.9.6
Patch Changes
-
#14740
abfed97Thanks @ArmandPhilippot! - Fixes link targets in documentation following repository relocation. -
Updated dependencies [
abfed97]:- @astrojs/language-server@2.16.1
antfu-collective/package-manager-detector (package-manager-detector)
v1.6.0
🚀 Features
- Add
packageJsonParserhook for custom package.json parsing - by @Wxh16144 in #64 (33d90)
View changes on GitHub
preactjs/preact (preact)
v10.28.0
Types
- Updates dangerouslySetInnerHTML type so future TS will accept Trusted… (#4931, thanks @lukewarlow)
- Adds snap events (#4947, thanks @argyleink)
- Remove missed jsx duplicates (#4950, thanks @rschristian)
- Fix scroll events (#4949, thanks @rschristian)
Fixes
- Fix cascading renders with signals (#4966, thanks @JoviDeCroock)
- add
commpat/server.browserentry (#4941 & #4940, thanks @marvinhagemeister) - Avoid lazy components without result going in throw loop (#4937, thanks @JoviDeCroock)
Performance
- Backport some v11 optimizations (#4967, thanks @JoviDeCroock)
prettier/prettier (prettier)
v3.7.4
LWC: Avoid quote around interpolations (#18383 by @kovsu)
<!-- Input -->
<div foo={bar}> </div>
<!-- Prettier 3.7.3 (--embedded-language-formatting off) -->
<div foo="{bar}"></div>
<!-- Prettier 3.7.4 (--embedded-language-formatting off) -->
<div foo={bar}></div>TypeScript: Fix comment inside union type gets duplicated (#18393 by @fisker)
// Input
type Foo = (/** comment */ a | b) | c;
// Prettier 3.7.3
type Foo = /** comment */ (/** comment */ a | b) | c;
// Prettier 3.7.4
type Foo = /** comment */ (a | b) | c;TypeScript: Fix unstable comment print in union type comments (#18395 by @fisker)
// Input
type X = (A | B) & (
// comment
A | B
);
// Prettier 3.7.3 (first format)
type X = (A | B) &
(// comment
A | B);
// Prettier 3.7.3 (second format)
type X = (
| A
| B // comment
) &
(A | B);
// Prettier 3.7.4
type X = (A | B) &
// comment
(A | B);v3.7.3
API: Fix prettier.getFileInfo() change that breaks VSCode extension (#18375 by @fisker)
An internal refactor accidentally broke the VSCode extension plugin loading.
v3.7.2
JavaScript: Fix string print when switching quotes (#18351 by @fisker)
// Input
console.log("A descriptor\\'s .kind must be \"method\" or \"field\".")
// Prettier 3.7.1
console.log('A descriptor\\'s .kind must be "method" or "field".');
// Prettier 3.7.2
console.log('A descriptor\\\'s .kind must be "method" or "field".');JavaScript: Preserve quote for embedded HTML attribute values (#18352 by @kovsu)
// Input
const html = /* HTML */ ` <div class="${styles.banner}"></div> `;
// Prettier 3.7.1
const html = /* HTML */ ` <div class=${styles.banner}></div> `;
// Prettier 3.7.2
const html = /* HTML */ ` <div class="${styles.banner}"></div> `;TypeScript: Fix comment in empty type literal (#18364 by @fisker)
// Input
export type XXX = {
// tbd
};
// Prettier 3.7.1
export type XXX = { // tbd };
// Prettier 3.7.2
export type XXX = {
// tbd
};v3.7.1
API: Fix performance regression in doc printer (#18342 by @fisker)
Prettier 3.7.1 can be very slow when formatting big files, the regression has been fixed.
v3.7.0
shikijs/shiki (shiki)
v3.19.0
🚀 Features
- Support
rootStyle: falseoption - by @khushthecoder and @antfu in #1184 (baf9a) - transformers:
- Add
classActiveCodeoption to notation transformers - by @GreenHacker420 in #1171 (a6a44) - Add transformerRemoveComments - by @Bitshifter-9, Copilot, @crazylogic03 and @antfu in #1144 (f2ee3)
- Add
- twoslash:
- Add context parameter to filter option - by @siddu-09 in #1173 (ac7f5)
🐞 Bug Fixes
- Add typesVersions for legacy resolution support - by @khushthecoder in #1179 (100b7)
- core: Check embeddedLanguages in registry dependency check - by @vamsi2246 in #1178 (6ad16)
- monaco: Correctly handle sparse color map updates - by @wcr-karan in #1169 (38c7f)
View changes on GitHub
v3.18.0
🚀 Features
- transformers: Support
zeroIndexedoption totransformerMetaHighlight- by @manak-sharma20 in #1149 (c39ff)
🐞 Bug Fixes
- core:
View changes on GitHub
v3.17.1
🚀 Features
- core: Enhance string utils with robust edge case handling - by @shekhar-narayan-mishra in #1154 (a2b68)
🐞 Bug Fixes
- core: Correctly parse 4-digit hex colors in dimColor - by @shalini-saloni in #1151 (fcdd3)
- monaco: Ensure correct color map update when switching themes - by @shivank-1011 in #1155 (d2e94)
View changes on GitHub
v3.17.0
🚀 Features
- cli: Support passing remote file url - by @o-az in #1139 (fb05a)
- core: Support embeddedLanguages alias for backwards compatibility - by @Ipshita29 in #1044 and #1145 (3a367)
- monaco: Normalize theme tokenScopes and tighten monaco type import - by @Simon-He95 in #1140 (dc792)
🐞 Bug Fixes
- monaco: Preserve Markdown font styles - by @prempyla and @antfu in #1107 (e4dec)
- shiki: Rename
createdBundledHighlightertocreateBundledHighlighter- by @tushar73-jet, Tushar and @antfu in #1135 (e6d21) - transformers: Handle multi-token comments in rose-pine theme - by @ish1416 and @antfu in #1118 (3e1bd)
- twoslash: Fix typo in
twoslash-query-persisted, close #1130, close #981 - by @antfu in #1130 and #981 (55a17) - types: Add 'plain' to PlainTextLanguage type - by @kevinkucharczyk in #1133 (156c5)
View changes on GitHub
v3.16.0
🚀 Features
🐞 Bug Fixes
- Enable decorations for structure: inline - by @Aashish-Jha-11 and Aashish_Jha_1107 in #1103 (8806b)
- Resolve vitest alias for wasm-inlined - by @sahilsharda (2d7b3)
- transformers: Support comment-prefixed [code . highlight] markers in v3 notation matcher - by @Hariksh in #1102 (5068b)
View changes on GitHub
sveltejs/svelte (svelte)
v5.45.5
Patch Changes
-
fix: correctly reconcile each blocks after outroing branches are resumed (#17258)
-
fix: destroy each items after siblings are resumed (#17258)
v5.45.4
Patch Changes
-
chore: move DOM-related effect properties to
effect.nodes(#17293) -
fix: allow
$props.id()to occur after anawait(#17285) -
fix: keep reactions up to date even when read outside of effect (#17295)
v5.45.3
Patch Changes
-
add props to state_referenced_locally (#17266)
-
fix: preserve node locations for better sourcemaps (#17269)
-
fix: handle cross-realm Promises in
hydratable(#17284)
v5.45.2
Patch Changes
v5.45.1
Patch Changes
- fix: link offscreen items and last effect in each block correctly (#17240)
v5.45.0
Minor Changes
- feat: add
print(...)function (#16188)
v5.44.1
Patch Changes
-
fix: await blockers before initialising const (#17226)
-
fix: link offscreen items and last effect in each block correctly (#17244)
-
fix: generate correct code for simple destructurings (#17237)
-
fix: ensure each block animations don't mess with transitions (#17238)
v5.44.0
Minor Changes
- feat:
hydratableAPI (#17154)
v5.43.15
Patch Changes
typescript-eslint/typescript-eslint (typescript-eslint)
v8.48.1
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
v8.48.0
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
vuejs/core (vue)
v3.5.25
Bug Fixes
- compiler: share logic for comments and whitespace (#13550) (2214f7a)
- provide: warn when using
provideafter mounting (#13954) (247b2c2), closes #13921 #13924 - reactivity: correctly wrap iterated array items to preserve their readonly status (#14120) (301020b)
- reactivity: toRef edge cases for ref unwrapping (#12420) (0d2357e)
- runtime-core: keep options API typing intact when expose is used (#14118) (8f82f23), closes #14117 vuejs/language-tools#5069
- suspense: defer clearing fallback vnode el in case it has dirs (#14080) (c0f63dd), closes #14078
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
Changes
- export const noop from noop module instead of empty string
- suppresses vite empty chunk warning when no client JS
- bundle still deleted in generateBundle hook so no code ships
Testing
- add test to verify no empty chunk warning is produced
Docs
N/A, bug fix
Cloudflare dev was broken due to non-optimized dependencies. Added .dev.vars files to pre-optimize deps so Vite doesn't have to on startup.
Added comprehensive e2e test suite for Cloudflare that covers:
- SSR rendering
- Content collections (getCollection, getEntry, render)
- React/Vue client components
- Server islands (server:defer)
- URL search params
- Worker runtime detection
- Data mapping
- Dynamic content
Tests run in both dev & prod modes to ensure functionality works in both environments.
Changes
Fixes #14893
- Replaced O(n²) object spread pattern with direct mutation in generateLookupMap
- For each content/data entry, the code was creating new objects via
{...lookupMap[collection]?.entries, [key]: value} - With 10,000+ entries, this caused ~50 million string copies (n × n/2)
- Now uses nullish coalescing (
??=) and direct property assignment - O(n) complexity
Before:
lookupMap[collection] = {
type: 'content',
entries: {
...lookupMap[collection]?.entries, // ← Creates new object each time
[slug]: rootRelativePath(root, filePath),
},
};After
lookupMap[collection] ??= { type: 'content', entries: {} };
lookupMap[collection].entries[slug] = rootRelativePath(root, filePath);Testing
All 1326 existing tests pass (3 unrelated failures: clipboard + network flakes)
All content-related tests pass: Content Collections, references, render(), Intellisense
Docs
No docs changes needed - this is an internal performance optimization with no API changes.
Changes
- Fixes incorrect syntax highlighting when the
lang="sass"attribute is placed on a new line within a<style>tag. - Updates the
tags-langgrammar lookahead patterns inastro.tmLanguage.src.yamlto support multi-line attribute parsing using[\s\S]*?. - Regenerates the corresponding
astro.tmLanguage.jsonto ensure consistent highlighting behavior. - Ensures SASS blocks render correctly in the VS Code extension regardless of
<style>formatting.
Before
SASS content inside a multi-line <style> tag was highlighted as CSS instead of SASS:
<style
lang="sass"
>
.bar
color: var(--foo)
</style>After
The same SASS block is now parsed and highlighted correctly as SASS, matching the behavior when lang="sass" is on a single line.
Testing
- Updated the grammar and rebuilt the VS Code extension via
pnpm -C packages/language-tools/vscode build. - Launched the Extension Development Host and manually verified syntax highlighting using the provided reproduction case.
- Confirmed that SASS content and closing
</style>tags are now highlighted consistently in both single-line and multi-line<style lang="sass">formats.
Docs
No documentation updates required. This change affects syntax highlighting behavior only and does not introduce user-facing configuration or API changes.
Changes
When updating @sveltejs/vite-plugin-svelte from v5 to v6, the build fails with a parsing error:
[vite-plugin-svelte:compile] Unexpected token
file: astro-entry:/home/runner/work/astro/astro/packages/integrations/svelte/test/fixtures/async-rendering/src/components/Counter.svelte:1:9
1 | export { default } from "/home/runner/work/astro/astro/packages/integrations/svelte/test/fixtures/async-rendering/src/components/Counter.svelte"
^Root cause: pluginComponentEntry creates virtual modules like \0astro-entry:.../Component.svelte containing re-export statements.
In @sveltejs/vite-plugin-svelte v6, these modules are incorrectly treated as Svelte components due to the .svelte extension, causing parse errors.
In @sveltejs/vite-plugin-svelte v5, these modules are ignored because the module id contains \0 and get filtered out at createFilter.ts#L51.
See also: changelog for @sveltejs/vite-plugin-svelte v6.0.0
Solution: Add a .js suffix to virtual entry modules for non-JS files (like .svelte, .vue, etc.) to ensure that SFC plugins won't mistakenly process them as components.
This fix is applicable to all UI frameworks with custom file extensions, including Vue, Svelte, Marko, Riot, Ripple, and any other SFC framework that may arise in the future.
Testing
All existing tests pass.
Docs
No docs/changeset added because there are no changes to the public API. The pluginComponentEntry is just an implementation detail.
(I can add a changeset if the Astro team thinks it's necessary.)
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.16.5
Patch Changes
-
#14985
c016f10Thanks @florian-lefebvre! - Fixes a case where JSDoc annotations wouldn't show for fonts related APIs in the Astro config -
#14973
ed7cc2fThanks @amankumarpandeyin! - Fixes performance regression and OOM errors when building medium-sized blogs with many content entries. Replaced O(n²) object spread pattern with direct mutation ingenerateLookupMap. -
#14958
70eb542Thanks @ascorbic! - Gives a helpful error message if a user setsoutput: "hybrid"in their Astro config.The option was removed in Astro 5, but lots of content online still references it, and LLMs often suggest it. It's not always clear that the replacement is
output: "static", rather thanoutput: "server". This change adds a helpful error message to guide humans and robots. -
#14901
ef53716Thanks @Darknab! - Updates theglob()loader to log a warning when duplicated IDs are detected -
Updated dependencies [
d8305f8]:- @astrojs/markdown-remark@6.3.10
@astrojs/markdoc@0.15.10
Patch Changes
- Updated dependencies [
d8305f8]:- @astrojs/markdown-remark@6.3.10
@astrojs/mdx@4.3.13
Patch Changes
- Updated dependencies [
d8305f8]:- @astrojs/markdown-remark@6.3.10
@astrojs/svelte@7.2.3
Patch Changes
- #14934
4264a36Thanks @antonyfaris! - Fixes an issue where Svelte 5 components used in Astro files would not have proper type checking and IntelliSense.
astro-vscode@2.16.5
Patch Changes
- #14988
a3a20d8Thanks @Princesseuh! - Retries failed deploy
@astrojs/markdown-remark@6.3.10
Patch Changes
- #14902
d8305f8Thanks @tuyuritio! - Prevents HAST-only props from being directly converted into HTML attributes
Changes
Gives a helpful error message if a user sets output: "hybrid" in their Astro config.
The option was removed in Astro 5, but lots of content online still references it, and LLMs often suggest it. It's not always clear that the replacement is output: "static", rather than output: "server". This change adds a helpful error message to guide humans and robots.
Testing
Added a unit test
Docs
@withastro/maintainers-docs for feedback on the error wording pls
Changes
- A lot of use of
.prefault()and changingz.object(z.number())toz.object(z.string(), z.number())
Testing
- Existing tests pass
- Most significant changes here are because error messages are a little different in Zod 4.
Docs
- Upgrade guide: withastro/docs#12848
Fixes #14942
Changes
Sets cache: "no-cache" for the Request object when revalidating remote images. Internal caching mechanisms may change an expected HTTP 304 response to HTTP 200 in an opaque way which causes Astro to reprocess remote images even if it has the latest ones in its cache.
Testing
Manual testing with my personal website. Before vs after:
Build time is way shorter since images are now used from cache.
Docs
No need to update docs since this simply fixes unexpected behavior.
Description
As discussed, this PR adds support for preview releases in the monorepo using pkg.pr.new.
The worflow is heavily inspired by the one used in the Astro repo with the following changes:
- Maintainers can trigger a preview release by adding the
pr-previewlabel (it's not possible to trigger it directly using a comment). - A little bit stricter permissions (I don't think we need write access to the
issuesandid-tokenscope). - I added some comments to the step computing the packages to be included as it was not really obvious to me at first glance to understand exactly what was going on and I needed to run it locally to verify the output.
- I also added a bit more logic to this step to compute the list of package paths as needed by the
pkg-pr-newcommand rather than doing it later so all logic is in one place. - If no packages are published, the workflow errors out with a message indicating to make sure there are changesets included in the PR. I think I would prefer to see an error than waiting for the comment to show up before realizing the action succeeded but nothing was published.
Also checked the workflow using zizmor, and only an info for prefer trusted publishing for authentication is reported for pnpm dlx pkg-pr-new publish but this sounds like a false positive for pnpm publish as there is no trusted publishing possible here afaik.
If I'm not mistaken, I think we need this PR to be merged first before being able to test the entire process though so probably need a thorough review before merging in case I made any mistake.
Note that when we would want to use preview releases with #3572, we would also need to edit this workflow to include a build step.
Changes
This PR reworks how dependencies are optimised and resolved by using the new hook configEnvironment from vitev7.
Astro core
As for createVite, I decided to move the resolution inside a plugin, so it doesn't clutter the already big craeteVite function. I tried to keep the same logic we had before.
Cloudflare
I removed stuff that I think it's not needed anymore. All current tests work and the fixture builds without issues. The preview server still works as expected.
I had to add an exception for the unstorage driver because it couldn't be optimised, and the server was crashing.
Other integrations
I updated other integrations such as react, vue, solid, svelte and preact.
As for vue, I had to add vue/server-renderer because it was crashing the Cloudflare server.
Note
I plan to optimise the rest of the integrations in another PR
Testing
After this change, one of the tests in cloudflare broke. The thing is, I had to change the test assumptions earlier, but now the build output is back to how it was, so I restored the test's previous assertion.
The remaining tests should work.
Docs
N/A
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@astrojs/starlight@0.37.1
Patch Changes
Changes
- updates
volar-services-*dependencies to 0.0.67 - fixes issue reported in #14544
- this fixes problems when installing astro from enterprise environments and Deno.
Testing
Docs
Description
- Closes #2647
- We were processing favicon URLs assuming they were always relative paths, but users can also provide an absolute URL here.
- To fix this I extracted an existing utility we had for checking sidebar links to a shared location to reuse. (I also ran some benchmarks on it, and it looks like a RegExp like we were using was already the most performant option for this utility, but we get a modest performance improvement by moving the regular expression out of the function body at least running in Node 24 like I was.)
Description
As previously discussed, this PR adds the Visual Studio Code extension starlight-links to the list of recommended extensions in the .vscode/extensions.json file.
This only adds it to the Starlight monorepo recommendations for now with the goal to increasingly get more feedback/users before potentially adding it to the examples at some point.
- Closes #3263
As suggested in #3263 (comment), this PR updates the social icons hover effect to use the same hover effect we use in other parts of Starlight rather than relying on an opacity decrease. Turns out that this was something I personally changed in the Rapide theme a while back so definitely happy to have the same effect as default in Starlight.
| Before | After | |
|---|---|---|
| Normal | ||
| Hover |
The second change is updating the select (theme and language switcher) color and hover colors to use a contrast increase rather than a decrease. This matches what we currently do for example in the search bar or mobile table of contents.
As this change was not explicitly requested in the linked comment above, this is done in a separate commit so we can easily revert it if needed.
| Before | After | |
|---|---|---|
| Normal | ![]() |
![]() |
| Hover | ![]() |
![]() |
Remaining tasks
- Add changeset with instructions on how to preserve old behavior (I will only do this after confirming all the changes we want to ship)
Changes
This PR fixes a bug where injecting the same resource twice could have led to an error.
We now fix this issue by duplicating the directives.
Testing
Added new unit tests. Updated existing integration tests with new assertions
Docs
/cc @withastro/maintainers-docs for feedback!
Please review the changeset
Description
This PR updates the pull request template to include some guidelines regarding new features.
The goal is to reduce the number of PRs adding new features that have not been previously discussed which can lead to such PRs being closed without merging.
Changes
That barrel file has an import to vite-load which has a dynamic import, Vite tries to resolve said dynamic import but we don't want that.
Testing
Tested manually
Docs
N/A
Fixes #14903
Changes
- Fix content files not being copied when
outDiris outside project directory - Add
copyDotAstroFiles()function to copy.astro/files to external outDir - Ensure content collections work consistently regardless of outDir location
Testing
- Added
content-outdir-external.test.jsto verify files are copied to external outDir - Tested with mock scenarios to validate the fix resolves the reported issue
- No existing functionality affected
Docs
No docs needed - this is a bug fix that restores expected behavior without changing the API.
Last fetched: | Scheduled refresh: Every Saturday
See Customizing GitHub Activity Pages to configure your own
Inspired by prs.atinux.com





{ "main": "dist/_worker.js/index.js", }