AstroEco is Contributing…
Display your GitHub pull requests using astro-loader-github-prs
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.12
Patch Changes
Changes
When Svelte 5 components are conditionally rendered (e.g., inside {#if} blocks with an initially false condition), their styles were not being included in production builds. This happened because:
- Svelte 5.26+ added css.hasGlobal flag to compiler output
- vite-plugin-svelte 5.1.0+ uses this to add cssScopeTo metadata
- Vite 6.2+ cssScopeTo allows CSS treeshaking if the export isn't "used"
During SSR, conditionally rendered components aren't included in the server build (tree-shaken), but they are in the client build. Astro's CSS-to-page mapping primarily happens during the server build, so the CSS gets orphaned.
The fix adds logic in the client build's generateBundle to:
- Track which component exports are actually rendered (renderedComponentExports)
- For CSS modules with cssScopeTo metadata where the export IS rendered, walk up the module graph to find pages and ensure the CSS is included
Fixes #14252
Testing
Test case added based on the provided issue reproduction.
Docs
Bug fix
Changes
What the title says
Testing
N/A
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.4
Patch Changes
Description
This PR fixes handling of a boolean attribute in our sidebar code to avoid adding redundant aria-current="false" attributes. Before Astro v5, passing false to aria-current resulted in omitting the attribute in the HTML output. But since v5, this is now stringified to "false" (Astro only omits the attribute for officially boolean attributes in the HTML spec now).
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.11
Patch Changes
Changes
Updates devalue to the latest
I commented minimumReleaseAge, installed the library, and uncommented it minimumReleaseAge
Testing
I believe I needed to add devalue to minimumReleaseAgeExclude so that it will be installed in fresh installs too, but I might be wrong.
CI should stay green.
Docs
N/A
This PR includes an addition of a link to a new Starlight community plugin.
Note: This PR body was truncated due to platform limits.
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| svelte (source) | ^4.2.20 → ^5.0.0 |
||
| svelte (source) | 5.46.1 → 5.46.4 |
GitHub Vulnerability Alerts
CVE-2025-15265
Summary
An XSS vulnerability exists in Svelte 5.46.0-2 resulting from improper escaping of hydratable keys. If these keys incorporate untrusted user input, arbitrary JavaScript can be injected into server-rendered HTML.
Details
When using the hydratable function, the first argument is used as a key to uniquely identify the data, such that the value is not regenerated in the browser.
This key is embedded into a <script> block in the server-rendered <head> without escaping unsafe characters. A malicious key can break out of the script context and inject arbitrary JavaScript into the HTML response.
Impact
This is a cross-site scripting vulnerability affecting applications that have the experimental.async flag enabled and use hydratable with keys incorporating untrusted user input.
- Impact: Arbitrary JS execution in the client’s browser.
- Exploitability: Remote, single-request if key is attacker-controlled.
- Typical Outcomes:
- Session/token theft
- DOM defacement
- CSRF bypass via injected JS
- Account takeover depending on cookie/session strategy
Affected applications should upgrade to a patched version immediately.
Release Notes
sveltejs/svelte (svelte)
v5.46.4
Patch Changes
- fix: use
devalue.unevalto serializehydratablekeys (ef81048e238844b729942441541d6dcfe6c8ccca)
v5.46.3
Patch Changes
- fix: reconnect clean deriveds when they are read in a reactive context (#17362)
v5.46.1
Patch Changes
-
fix: type
currentTargetinonfunction (#17370) -
fix: skip static optimisation for stateless deriveds after
await(#17389) -
fix: prevent infinite loop when HMRing a component with an
await(#17380)
v5.46.0
Minor Changes
- feat: Add
cspoption torender(...), and emit hashes when usinghydratable(#17338)
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
-
fix: don't issue a11y warning for
<video>without captions if it has nosrc(#17311) -
fix: add
srcObjectto permitted<audio>/<video>attributes (#17310)
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
-
fix: don't execute attachments and attribute effects eagerly (#17208)
-
chore: lift "flushSync cannot be called in effects" restriction (#17139)
-
fix: store forked derived values (#17212)
v5.43.14
Patch Changes
-
fix: correctly migrate named self closing slots (#17199)
-
fix: error at compile time instead of at runtime on await expressions inside bindings/transitions/animations/attachments (#17198)
-
fix: take async blockers into account for bindings/transitions/animations/attachments (#17198)
v5.43.13
Patch Changes
- fix: don't set derived values during time traveling (#17200)
v5.43.12
Patch Changes
- fix: maintain correct linked list of effects when updating each blocks (#17191)
v5.43.11
Patch Changes
-
perf: don't use tracing overeager during dev (#17183)
-
fix: don't cancel transition of already outroing elements (#17186)
v5.43.10
Patch Changes
- fix: avoid other batches running with queued root effects of main batch (#17145)
v5.43.9
Patch Changes
-
fix: correctly handle functions when determining async blockers (#17137)
-
fix: keep deriveds reactive after their original parent effect was destroyed (#17171)
-
fix: ensure eager effects don't break reactions chain (#17138)
-
fix: ensure async
@constin boundary hydrates correctly (#17165) -
fix: take blockers into account when creating
#awaitblocks (#17137) -
fix: parallelize async
@consts in the template (#17165)
v5.43.8
Patch Changes
- fix: each block losing reactivity when items removed while promise pending (#17150)
v5.43.7
Patch Changes
-
fix: properly defer document title until async work is complete (#17158)
-
fix: ensure deferred effects can be rescheduled later on (#17147)
-
fix: take blockers of components into account (#17153)
v5.43.6
Patch Changes
- fix: don't deactivate other batches (#17132)
v5.43.5
Patch Changes
-
fix: ensure async static props/attributes are awaited (#17120)
-
fix: wait on dependencies of async bindings (#17120)
-
fix: await dependencies of style directives (#17120)
v5.43.4
Patch Changes
-
chore: simplify connection/disconnection logic (#17105)
-
fix: reconnect deriveds to effect tree when time-travelling (#17105)
v5.43.3
Patch Changes
-
fix: ensure fork always accesses correct values (#17098)
-
fix: change title only after any pending work has completed (#17061)
-
fix: preserve symbols when creating derived rest properties (#17096)
v5.43.2
Patch Changes
- fix: treat each blocks with async dependencies as uncontrolled (#17077)
v5.43.1
Patch Changes
- fix: transform
$bindableafterawaitexpressions (#17066)
v5.43.0
Minor Changes
- feat: out-of-order rendering (#17038)
Patch Changes
- fix: settle batch after DOM updates (#17054)
v5.42.3
Patch Changes
-
fix: handle
<svelte:head>rendered asynchronously (#17052) -
fix: don't restore batch in
#await(#17051)
v5.42.2
Patch Changes
-
fix: better error message for global variable assignments (#17036)
-
chore: tweak memoizer logic (#17042)
v5.42.1
Patch Changes
- fix: ignore fork
discard()aftercommit()(#17034)
v5.42.0
Minor Changes
- feat: experimental
forkAPI (#17004)
Patch Changes
-
fix: always allow
setContextbefore first await in component (#17031) -
fix: less confusing names for inspect errors (#17026)
v5.41.4
Patch Changes
-
fix: take into account static blocks when determining transition locality (#17018)
-
fix: coordinate mount of snippets with await expressions (#17021)
-
fix: better optimization of await expressions (#17025)
-
fix: flush pending changes after rendering
failedsnippet (#16995)
v5.41.3
Patch Changes
-
chore: exclude vite optimized deps from stack traces (#17008)
-
perf: skip repeatedly traversing the same derived (#17016)
v5.41.2
Patch Changes
-
fix: keep batches alive until all async work is complete (#16971)
-
fix: don't preserve reactivity context across function boundaries (#17002)
-
fix: make
$inspectlogs come from the callsite (#17001) -
fix: ensure guards (eg. if, each, key) run before their contents (#16930)
v5.41.1
Patch Changes
-
fix: place
let:declarations before{@​const}declarations (#16985) -
fix: improve
each_key_without_aserror (#16983) -
chore: centralise branch management (#16977)
v5.41.0
Minor Changes
- feat: add
$state.eager(value)rune (#16849)
Patch Changes
-
fix: preserve
<select>state while focused (#16958) -
chore: run boundary async effects in the context of the current batch (#16968)
-
fix: error if
eachblock haskeybut noasclause (#16966)
v5.40.2
Patch Changes
- fix: add hydration markers in
pendingbranch of SSR boundary (#16965)
v5.40.1
Patch Changes
- chore: Remove sync-in-async warning for server rendering (#16949)
v5.40.0
Minor Changes
- feat: add
createContextutility for type-safe context (#16948)
Patch Changes
v5.39.13
Patch Changes
-
fix: add missing type for
frattribute forradialGradienttags in svg (#16943) -
fix: unset context on stale promises (#16935)
v5.39.12
Patch Changes
-
fix: better input cursor restoration for
bind:value(#16925) -
fix: track the user's getter of
bind:this(#16916) -
fix: generate correct SSR code for the case where
pendingis an attribute (#16919) -
fix: generate correct code for
eachblocks with async body (#16923)
v5.39.11
Patch Changes
- fix: flush batches whenever an async value resolves (#16912)
v5.39.10
Patch Changes
-
fix: hydrate each blocks inside element correctly (#16908)
-
fix: allow await in if block consequent and alternate (#16890)
-
fix: don't replace rest props with
$$propsfor excluded props (#16898) -
fix: correctly transform
$derivedprivate fields on server (#16894) -
fix: add
UNKNOWNevaluation value before breaking forbinding.initial===SnippetBlock(#16910)
v5.39.9
Patch Changes
- fix: flush when pending boundaries resolve (#16897)
v5.39.8
Patch Changes
-
fix: check boundary
pendingattribute at runtime on server (#16855) -
fix: preserve tuple type in
$state.snapshot(#16864) -
fix: allow await in svelte:boundary without pending (#16857)
-
fix: update
bind:checkederror message to clarify usage with radio inputs (#16874)
v5.39.7
Patch Changes
-
chore: simplify batch logic (#16847)
-
fix: rebase pending batches when other batches are committed (#16866)
-
fix: wrap async
childrenin$$renderer.async(#16862) -
fix: silence label warning for buttons and anchor tags with title attributes (#16872)
-
fix: coerce nullish
<title>to empty string (#16863)
v5.39.6
Patch Changes
-
fix: depend on reads of deriveds created within reaction (async mode) (#16823)
-
fix: SSR regression of processing attributes of
<select>and<option>(#16821) -
fix: async
class:+ spread attributes were compiled into sync server-side code (#16834) -
fix: ensure tick resolves within a macrotask (#16825)
v5.39.5
Patch Changes
-
fix: allow
{@​html await ...}and snippets with async content on the server (#16817) -
fix: use nginx SSI-compatible comments for
$props.id()(#16820)
v5.39.4
Patch Changes
- fix: restore hydration state after
awaitin<script>(#16806)
v5.39.3
Patch Changes
v5.39.2
Patch Changes
-
fix: preserve SSR context when block expressions contain
await(#16791) -
chore: bump some devDependencies (#16787)
v5.39.1
Patch Changes
-
fix: add missing type for
frattribute forradialGradienttags in svg (#16943) -
fix: unset context on stale promises (#16935)
v5.39.0
Minor Changes
- feat: experimental async SSR (#16748)
Patch Changes
- fix: correctly SSR hidden="until-found" (#16773)
v5.38.10
Patch Changes
- fix: flush effects scheduled during boundary's pending phase (#16738)
v5.38.9
Patch Changes
-
chore: generate CSS hash using the filename (#16740)
-
fix: correctly analyze
<object.property>components (#16711) -
fix: clean up scheduling system (#16741)
-
fix: transform input defaults from spread (#16481)
-
fix: don't destroy contents of
svelte:boundaryunless the boundary is an error boundary (#16746)
v5.38.8
Patch Changes
- fix: send
$effect.pendingcount to the correct boundary (#16732)
v5.38.7
Patch Changes
-
fix: replace
undefinedwithvoid(0)in CallExpressions (#16693) -
fix: ensure batch exists when resetting a failed boundary (#16698)
-
fix: place store setup inside async body (#16687)
v5.38.6
Patch Changes
- fix: don't fail on
flushSyncwhile flushing effects (#16674)
v5.38.5
Patch Changes
- fix: ensure async deriveds always get dependencies from thennable (#16672)
v5.38.3
Patch Changes
-
fix: ensure correct order of template effect values (#16655)
-
fix: allow async
{@​const}in more places (#16643) -
fix: properly catch top level await errors (#16619)
-
perf: prune effects without dependencies (#16625)
-
fix: only emit
for_await_track_reactivity_lossin async mode (#16644)
v5.38.2
Patch Changes
-
perf: run blocks eagerly during flush instead of aborting (#16631)
-
fix: don't clone non-proxies in
$inspect(#16617) -
fix: avoid recursion error when tagging circular references (#16622)
v5.38.1
Patch Changes
- fix: flush effects scheduled during boundary's pending phase (#16738)
v5.38.0
Minor Changes
- feat: allow
awaitinside@constdeclarations (#16542)
Patch Changes
-
fix: remount at any hydration error (#16248)
-
chore: emit
await_reactivity_lossinfor awaitloops (#16521) -
fix: emit
snippet_invalid_exportinstead ofundefined_exportfor exported snippets (#16539)
v5.37.3
Patch Changes
- fix: reset attribute cache after setting corresponding property (#16543)
v5.37.2
Patch Changes
-
fix: double event processing in firefox due to event object being garbage collected (#16527)
-
fix: add bindable dimension attributes types to SVG and MathML elements (#16525)
-
fix: correctly differentiate static fields before emitting
duplicate_class_field(#16526) -
fix: prevent last_propagated_event from being DCE'd (#16538)
v5.37.1
Patch Changes
-
chore: remove some todos (#16515)
-
fix: allow await expressions inside
{#await ...}argument (#16514) -
fix:
append_stylesin an effect to make them available on mount (#16509) -
chore: remove
parser.template_untrimmed(#16511) -
fix: always inject styles when compiling as a custom element (#16509)
v5.37.0
Minor Changes
- feat: ignore component options in
compileModule(#16362)
Patch Changes
- fix: always mark props as stateful (#16504)
v5.36.17
Patch Changes
-
fix: throw on duplicate class field declarations (#16502)
-
fix: add types for
partattribute to svg attributes (#16499)
v5.36.16
Patch Changes
-
fix: don't update a focused input with values from its own past (#16491)
-
fix: don't destroy effect roots created inside of deriveds (#16492)
v5.36.15
Patch Changes
- fix: preserve dirty status of deferred effects (#16487)
v5.36.14
Patch Changes
-
fix: keep input in sync when binding updated via effect (#16482)
-
fix: rename form accept-charset attribute (#16478)
-
fix: prevent infinite async loop (#16482)
-
fix: exclude derived writes from effect abort and rescheduling (#16482)
v5.36.13
Patch Changes
- fix: ensure subscriptions are picked up correctly by deriveds (#16466)
v5.36.12
Patch Changes
- chore: move
capture_signalsto legacy module (#16456)
v5.36.10
Patch Changes
- fix: prevent batches from getting intertwined (#16446)
v5.36.9
Patch Changes
-
fix: don't reexecute derived with no dependencies on teardown (#16438)
-
fix: disallow
export { foo as default }in<script module>(#16447) -
fix: move ownership validation into async component body (#16449)
-
fix: allow async destructured deriveds (#16444)
-
fix: move store setup/cleanup outside of async component body (#16443)
v5.36.8
Patch Changes
-
fix: keep effect in the graph if it has an abort controller (#16430)
-
chore: Switch
payload.outto an array (#16428)
v5.36.7
Patch Changes
- fix: allow instrinsic
<svelte:...>elements to inherit fromSvelteHTMLElements(#16424)
v5.36.6
Patch Changes
-
fix: delegate functions with shadowed variables if declared locally (#16417)
-
fix: handle error in correct boundary after reset (#16171)
-
fix: make
<svelte:boundary>reset function a noop after the first call (#16171)
v5.36.5
Patch Changes
-
fix: silence
$inspecterrors when the effect is about to be destroyed (#16391) -
fix: more informative error when effects run in an infinite loop (#16405)
v5.36.4
Patch Changes
-
fix: avoid microtask in flushSync (#16394)
-
fix: ensure compiler state is reset before compilation (#16396)
v5.36.3
Patch Changes
-
fix: don't log
await_reactivity_losswarning when signal is read inuntrack(#16385) -
fix: better handle $inspect on array mutations (#16389)
-
fix: leave proxied array
lengthuntouched when deleting properties (#16389) -
fix: update
$effect.pending()immediately after a batch is removed (#16382)
v5.36.2
Patch Changes
-
fix: add
$effect.pending()to types (#16376) -
fix: add
pendingsnippet to<svelte:boundary>types (#16379)
v5.36.1
Patch Changes
-
fix: throw on duplicate class field declarations (#16502)
-
fix: add types for
partattribute to svg attributes (#16499)
v5.36.0
Minor Changes
- feat: support
awaitin components when using theexperimental.asynccompiler option (#15844)
Patch Changes
v5.35.7
Patch Changes
-
fix: silence autofocus a11y warning inside
<dialog>(#16341) -
fix: don't show adjusted error messages in boundaries (#16360)
-
chore: replace inline regex with variable (#16340)
v5.35.6
Patch Changes
-
chore: simplify reaction/source ownership tracking (#16333)
-
chore: simplify internal component
pop()(#16331)
v5.35.5
Patch Changes
-
fix: associate sources in Spring/Tween/SvelteMap/SvelteSet with correct reaction (#16325)
-
fix: re-evaluate derived props during teardown (#16278)
v5.35.4
Patch Changes
- fix: abort and reschedule effect processing after state change in user effect (#16280)
v5.35.3
Patch Changes
-
fix: account for mounting when
select_optioninattribute_effect(#16309) -
fix: do not proxify the value assigned to a derived (#16302)
v5.35.2
Patch Changes
- fix: bump esrap (#16295)
v5.35.1
Patch Changes
- feat: add parent hierarchy to
__svelte_metaobjects (#16255)
v5.35.0
Minor Changes
- feat: add
getAbortSignal()(#16266)
Patch Changes
- chore: simplify props (#16270)
v5.34.9
Patch Changes
- fix: ensure unowned deriveds can add themselves as reactions while connected (#16249)
v5.34.8
Patch Changes
-
fix: untrack
$inspect.withand add check for unsafe mutation (#16209) -
fix: use fine grained for template if the component is not explicitly in legacy mode (#16232)
-
lift unsafe_state_mutation constraints for SvelteSet, SvelteMap, SvelteDate, SvelteURL and SvelteURLSearchParams created inside the derived (#16221)
v5.34.7
Patch Changes
- fix: address css class matching regression (#16204)
v5.34.6
Patch Changes
- fix: match class and style directives against attribute selector (#16179)
v5.34.5
Patch Changes
-
fix: keep spread non-delegated event handlers up to date (#16180)
-
fix: remove undefined attributes on hydration (#16178)
-
fix: ensure sources within nested effects still register correctly (#16193)
-
fix: avoid shadowing a variable in dynamic components ([#16185](https://redirect.githu
Configuration
📅 Schedule: Branch creation - "" (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.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
Changes
- Upstream package that's now on version 8.
- Removed types dep since types are built-in now.
Testing
Tests should pass
Docs
N/A, bug fix
Changes
Format moved this comment, which broke the check
Testing
No errors in my editor
Docs
N/A
Description
This PR fixes an issue with Starlight’s intersection observer used for updating table of contents state, which we discovered while reviewing #3382 during Talking & Doc’ing today.
We found multiple issues:
- After we added anchor link support, headings in sites with this enabled are wrapped in a
<div>breaking an assumption in the table of contents logic. - After moving Markdown styles to an external CSS file, we renamed
.contentto.sl-markdown-content, but forgot to rename the same in a query selector here.
This caused some subtle issues that were not super obvious, but we noticed them while digging deeper.
Changes
Fixed an issue where the internal timers weren't updated after the internal refactor.
Testing
Maybe with a review PR?
Docs
N/A
Summary
When running
px astro add vercel, the .vercel\ directory (which contains build output) is now automatically added to .gitignore\ to prevent build artifacts from being committed.
Changes
- Added handling in the \add\ CLI command to check for Vercel integration
- If .gitignore\ exists, appends .vercel\ entry (if not already present)
- If .gitignore\ doesn't exist, creates one with .vercel\ entry
- Follows the same pattern as Cloudflare integration scaffolding
Testing
- Builds successfully
- Follows existing patterns for cloudflare/tailwind/svelte integrations
Fixes #15058
Adapters like Cloudflare, Netlify, and Node provide default session drivers, so users should be able to configure session options (like ttl) without explicitly specifying a driver.
Changes
- Fixes #15202
- Mostly this just uses .optional() in the schema.
Testing
Added test case to packages/astro/test/units/config/config-validate.test.js
Docs
N/A, bug fix
Changes
Removed a cyclic module dependency between router.js and event.js, which could explain the behavior observed in #15191.
While investigating why our existing end to end tests did not fail, I found that I could reproduce the issue with 6.0.0-beta.1, but not with the current tip of next.
Breaking the cycle seems still the right thing to do.
Closes #15191
Testing
We already have an e2e test for that case.
Docs
n.a.
I upgraded the turbo package to improve performance and speed up builds.
The newer version also includes bug fixes that make the build process more reliable.
It helps ensure compatibility with newer versions of Node.js and other tooling.
Upgrading reduces the risk of running into issues that are already fixed in older releases.
Overall, it keeps the project modern, stable, and easier to maintain.
Changes
This PR updates the version of @astrojs/check to fix its current versioning:
- On 10/20/2025,
0.9.5was released. - On 11/10/2025,
0.9.6-alpha.0was released as part of the Astro v6alpha. - On 11/26/2025,
0.9.6was released due to some changes inmain. - On 01/13/2026,
0.9.6-beta.1was released yesterday as part of the Astro v6beta.
This versioning goes backwards with 0.9.6-beta.1 having more recent changes than 0.9.6 and, when exiting beta, changesets will automatically try publishing 0.9.6 and skip it as it's already published on npm.
This PR does 2 things:
- Manually edit the
package.jsonfileversionof@astrojs/checkto0.9.7-beta.0 - Add a patch changeset for this package
If my understanding is correct, this would mean that with the next release, it'll be published as 0.9.7-beta.1, and then when exiting beta, it'll be published as 0.9.7.
Testing
No testing; not aware of any testing possible for this.
Docs
This is a version fix; no doc updates are needed.
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-beta.2
Major Changes
- #15192
ada2808Thanks @gameroman! - Removes support for CommonJS config files - (v6 upgrade guidance)
Patch Changes
-
#15208
8dbdd8eThanks @matthewp! - Makessession.driveroptional in config schema, allowing adapters to provide default driversAdapters like Cloudflare, Netlify, and Node provide default session drivers, so users can now configure session options (like
ttl) without explicitly specifying a driver. -
#15214
6bab8c9Thanks @ematipico! - Fixes an issue where the internal perfomance timers weren't correctly updated to reflect new build pipeline. -
#15205
12adc55Thanks @martrapp! - Fixes an issue where theastro:page-loadevent did not fire on initial page loads.
@astrojs/check@0.9.7-beta.1
Patch Changes
Changes
Closes #14625
This issue is weird. Somehow the tool wrk is able to send HTTP requests where the URL contains the # inside the type req.url. I believe this is a bug coming from wrk, because the hash inside the URL is a browser thing.
As for the fix, I didn't want to use the URL object on purpose to avoid too many changes, so I added a check for the # and stripped it out
Testing
Only manually, because our internal tests already remove the hash from the URL
Docs
N/A
Changes
Drop cjs config support
Testing
Existing tests should pass
Docs
Might be needed
/cc @withastro/maintainers-docs for feedback!
Changes
- Instead of mutating the provider name, we keep the mapping from the provider object to an ID inside the font resolver
Testing
Updated
Docs
N/A, internal refactor
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-beta.1
Patch Changes
- Updated dependencies [
bbb5811]:- @astrojs/markdown-remark@7.0.0-beta.1
@astrojs/prism@4.0.0-beta.1
Patch Changes
@astrojs/rss@4.0.15-beta.1
Patch Changes
create-astro@5.0.0-beta.1
Patch Changes
@astrojs/db@0.19.0-beta.2
Patch Changes
@astrojs/alpinejs@0.5.0-beta.1
Patch Changes
@astrojs/markdoc@1.0.0-beta.4
Patch Changes
- Updated dependencies [
bbb5811,bbb5811]:- @astrojs/markdown-remark@7.0.0-beta.1
- @astrojs/prism@4.0.0-beta.1
@astrojs/mdx@5.0.0-beta.1
Patch Changes
-
Updated dependencies [
bbb5811]:- @astrojs/markdown-remark@7.0.0-beta.1
@astrojs/netlify@7.0.0-beta.5
Patch Changes
-
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/preact@5.0.0-beta.1
Patch Changes
@astrojs/react@5.0.0-beta.1
Patch Changes
@astrojs/sitemap@3.6.1-beta.2
Patch Changes
@astrojs/solid-js@6.0.0-beta.1
Patch Changes
@astrojs/check@0.9.6-beta.1
Patch Changes
-
Updated dependencies [
bbb5811]:- @astrojs/language-server@2.16.1-beta.1
@astrojs/language-server@2.16.1-beta.1
Patch Changes
@astrojs/markdown-remark@7.0.0-beta.1
Patch Changes
-
Updated dependencies [
bbb5811]:- @astrojs/prism@4.0.0-beta.1
@astrojs/upgrade@0.7.0-beta.1
Patch Changes
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/sitemap@3.7.0
Minor Changes
-
#14471
4296373Thanks @Slackluky! - Adds the ability to split sitemap generation into chunks based on customizable logic. This allows for better management of large sitemaps and improved performance. The newchunksoption in the sitemap configuration allows users to define functions that categorize sitemap items into different chunks. Each chunk is then written to a separate sitemap file.integrations: [ sitemap({ serialize(item) { th return item }, chunks: { // this property will be treated last on the configuration 'blog': (item) => { // will produce a sitemap file with `blog` name (sitemap-blog-0.xml) if (/blog/.test(item.url)) { // filter path that will be included in this specific sitemap file item.changefreq = 'weekly'; item.lastmod = new Date(); item.priority = 0.9; // define specific properties for this filtered path return item; } }, 'glossary': (item) => { if (/glossary/.test(item.url)) { item.changefreq = 'weekly'; item.lastmod = new Date(); item.priority = 0.7; return item; } } // the rest of the path will be stored in `sitemap-pages.0.xml` }, }), ],
astro@5.16.10
Patch Changes
-
2fa19c4- Improved error handling in the rendering phaseAdded defensive validation in
App.render()and#renderError()to provide a descriptive error message when a route module doesn't have a valid page function. -
#15199
d8e64efThanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure. -
#15169
b803d8bThanks @rururux! - fix: fix image 500 error when moving dist directory in standalone Node -
#14622
9b35c62Thanks @aprici7y! - Fixes CSS url() references to public assets returning 404 in dev mode when base path is configured -
#15219
43df4ceThanks @matthewp! - Upgrades thediffpackage to v8
@astrojs/rss@4.0.15
Patch Changes
- #15199
d8e64efThanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure.
@astrojs/netlify@6.6.4
Patch Changes
-
#15199
d8e64efThanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/node@9.5.2
Patch Changes
-
#15196
a8317c1Thanks @ematipico! - Fixes an issue where some prendered pages weren't correctly rendered when using the Node.js adapter in middleware mode. -
#15169
b803d8bThanks @rururux! - fix: fix image 500 error when moving dist directory in standalone Node
@astrojs/vercel@9.0.4
Patch Changes
- #14863
29fd188Thanks @drwpow! - Improves error message when using Node builtins inside Edge middlewares
@astrojs/language-server@2.16.3
Patch Changes
- #15199
d8e64efThanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure.
Adds missing changesets for packages not published.
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/markdoc@1.0.0-beta.3
Patch Changes
- #15184
f47c071Thanks @ematipico! - Fixes an issue where the package wasn't correctly published
Summary
When running astro add vercel, the Vercel adapter creates build artifacts in .vercel/output/. This directory should be gitignored to avoid committing build artifacts.
This PR adds automatic .gitignore handling for the Vercel adapter, following the same pattern already used for Cloudflare, Tailwind, Svelte, and other integrations:
- If
.gitignoreexists but doesn't contain.vercel, prompts to add it - If
.gitignoredoesn't exist, prompts to create it with.vercel - If
.vercelis already in.gitignore, skips silently
Closes #15058
Test plan
- Run
astro add vercelin a project without.gitignore- should prompt to create one - Run
astro add vercelin a project with.gitignorewithout.vercel- should prompt to add it - Run
astro add vercelin a project with.gitignorecontaining.vercel- should skip silently
🤖 Generated with Claude Code
Changes
Should fix the package publishing
Testing
Docs
Changes
- Makes so that the fonts runtime is type checked and used as an entrypoint only. It matches the work made for actions virtual modules in v6
- This PR is mostly about moving code around, which makes the diff big
- Moves the functions that were defined in
runtime.tstocore/<name>.ts - Moves the code that was defined inline in the assets virtual module to
runtime.ts - Moves tests
Testing
Updated. Tests are added for createGetFontData()
Docs
N/A, internal refactor
Changes
Based of #15154, original branch didn't have push rights for maintainers. This is the same PR just rebased of next instead of main.
Testing
See original PR
Docs
Changes
Initially reported on Discord, this PR fixes an issue when importing using an import alias a file with a name matching a directory name.
- Repro
- The custom resolver used in the vite plugin to alias paths now checks if a match is a file instead of only relying on
fs.existsSync(), which returnstruefor both files and directories.
Testing
- Added a new
src/pages.tsfile in the existingalias-tsconfigfixture, matching the name of thesrc/pages/directory, and imported it using an alias.- The associated test fails before the fix.
- The test succeeds after the fix.
Docs
This is a bug fix; no doc updates are needed.
Fixes dev server incorrectly creating dist folder and copying fonts when using q+enter to quit.
Changes
- Added
isBuildcheck inbuildEnd()hook to prevent font copying during dev server shutdown - Font copying now only occurs during
astro build, not when stopping dev server with q+enter - Added test case to verify no dist folder is created when dev server stops
- Changeset added:
fix-dev-quit-fonts-dist-creation.md
Testing
- Added test: "Does not create dist folder or copy fonts when dev server stops"
- Manual verification that q+enter no longer creates dist folder or copies fonts
- Verified fonts still work correctly in dev mode
- Verified astro build still copies fonts as expected
Docs
No docs changes needed. This fixes incorrect behavior in dev mode. User-facing behavior remains the same.
Switches the tag to beta for the beta release.
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.3
Patch Changes
- #3648
292666cThanks @maxchang3! - Prevents unwanted font size adjustments on iOS after orientation changes.
Changes
- Allows font providers to specify family specific options. That allows for a better DX (before it was a beir weird, see the diff of the changeset about the breaking change)
- Figuring out how to make the types work in
defineConfig()was an absolute nightmare. We have types tests to avoid regressions
Testing
- Manually
- Types tests
- Config tests
Docs
- Changesets
- withastro/docs#13037
Changes
- After T&D feedback
- Since the beginning of the experimental fonts API, I have always omitted the Google Icons provider, which made things more confusing to document and support
- We now re-export all unifont providers
Testing
Updated
Docs
Changeset + withastro/docs#13035
Note: This PR body was truncated due to platform limits.
This PR contains the following updates:
Release Notes
withastro/astro (@astrojs/sitemap)
v3.6.1
Patch Changes
- #15033
dd06779Thanks @florian-lefebvre! - Updates how routes are retrieved to avoid relying on a deprecated API
withastro/astro (@astrojs/svelte)
v7.2.5
Patch Changes
- #15070
fa9c464Thanks @antonyfaris! - Improve Sveltechildrenprop type checking
withastro/astro (@astrojs/vue)
v5.1.4
Patch Changes
- #15016
12eb4cdThanks @rahuld109! - Adds support for arbitrary HTML attributes on Vue components
cloudflare/workerd (@cloudflare/workers-types)
v4.20260109.0
v4.20260108.0
v4.20260107.1
v4.20260103.0
rollup/rollup (rollup)
v4.55.1
2026-01-05
Bug Fixes
- Fix artifact reference for OpenBSD (#6231)
Pull Requests
- #6231: Fix OpenBSD artifacts and ensure OIDC is working (@lukastaegert)
cloudflare/workers-sdk (wrangler)
v4.58.0
Minor Changes
-
#11728
7d63fa5Thanks @NuroDev! - Add command categories towranglerhelp menuThe help output now groups commands by product category (Account, Compute & AI, Storage & Databases, Networking & Security) to match the Cloudflare dashboard organization:
$ wrangler --help COMMANDS wrangler docs [search..] 📚 Open Wrangler's command documentation in your browser ACCOUNT wrangler auth 🔓 Manage authentication wrangler login 🔑 Login to Cloudflare ... COMPUTE & AI wrangler ai 🤖 Manage AI models wrangler containers 📦 Manage Containers [open beta] ...This improves discoverability by organizing the 20+ wrangler commands into logical groups.
Patch Changes
-
#11822
97e67b9Thanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Dependency From To workerd 1.20260103.0 1.20260107.1 -
Updated dependencies [
97e67b9]:- miniflare@4.20260107.0
v4.57.0
Minor Changes
-
#11682
b993d95Thanks @ascorbic! - Addwrangler auth tokencommand to retrieve your current authentication credentials.You can now retrieve your authentication token for use with other tools and scripts:
wrangler auth token
The command returns whichever authentication method is currently configured:
- OAuth token from
wrangler login(automatically refreshed if expired) - API token from
CLOUDFLARE_API_TOKENenvironment variable
Use
--jsonto get structured output including the token type, which also supports API key/email authentication:wrangler auth token --json
This is similar to
gh auth tokenin the GitHub CLI. - OAuth token from
-
#11702
f612b46Thanks @gpanders! - Add support for trusted_user_ca_keys in WranglerYou can now configure SSH trusted user CA keys for containers. Add the following to your wrangler.toml:
[[containers.trusted_user_ca_keys]] public_key = "ssh-ed25519 AAAAC3..."
This allows you to specify CA public keys that can be used to verify SSH user certificates.
-
#11437
9e360f6Thanks @ichernetsky-cf! - Drop deprecated containersobservability.loggingfield -
#11616
fc95831Thanks @NuroDev! - Add type generation support towrangler devYou can now have your worker configuration types be automatically generated when the local Wrangler development server starts.
To use it you can either:
- Add the
--typesflag when runningwrangler dev. - Update your Wrangler configuration file to add the new
dev.generate_typesboolean property.
{ "$schema": "node_modules/wrangler/config-schema.json", "name": "example", "main": "src/index.ts", "compatibility_date": "2025-12-12", "dev": { "generate_types": true } } - Add the
-
#11524
b0dbf1aThanks @penalosa! - Add hidden CLI flags towrangler setupfor suppressing outputTwo new hidden flags have been added to
wrangler setup:--no-completion-message: Suppresses the deployment details message after setup completes--no-install-wrangler: Skips Wrangler installation during project setup
-
#11777
69979a3Thanks @MattieTK! - Add analytics properties to secret commands for better usage insightsSecret commands (
wrangler secret put,wrangler secret bulk, and their Pages/versions equivalents) now include additional analytics properties to help understand how secrets are being managed:secretOperation: Whether this is a "single" or "bulk" secret operationsecretSource: How the secret was provided ("interactive", "stdin", or "file")secretFormat: For bulk operations, the format used ("json" or "dotenv")hasEnvironment: Whether an environment was specified
These properties help improve the developer experience by understanding common usage patterns. No sensitive information (secret names, values, or counts) is tracked.
-
#11738
c54f8daThanks @jamesopstad! - Add defaultTextmodule rule for.sqlfiles.This enables importing
.sqlfiles directly in Wrangler and the Cloudflare Vite plugin without extra configuration. -
#11692
df1f9c9Thanks @dario-piotrowicz! - Support Waku in autoconfig -
#11549
d059f69Thanks @dario-piotrowicz! - Support Vike in autoconfig
Patch Changes
-
#11683
02fbd22Thanks @ascorbic! - Display a warning when authentication errors occur and theaccount_idin your Wrangler configuration does not match any of your authenticated accounts. This helps identify configuration issues where you may have the wrong account ID set in yourwrangler.tomlorwrangler.jsoncfile. -
#11704
77078efThanks @dario-piotrowicz! - Fix autoconfig handling of Next.js apps with CJS config files and incompatible Next.js versionsPreviously,
wrangler setupandwrangler deploy --x-autoconfigwould fail when working with Next.js applications that use CommonJS config files (next.config.cjs) or have versions of Next.js that don't match the required peer dependencies. The autoconfig process now uses dynamic imports and forced installation to handle these scenarios gracefully. -
#11796
2510723Thanks @dario-piotrowicz! -wrangler deploydelegates toopennextjs-cloudflare deployonly when the--x-autoconfigflag is usedThe
wrangler deploycommand has been updated to delegate to theopennextjs-cloudflare deploycommand when run in an open-next project. Once this behavior had been introduced it caused a few issues. So it's been decided to enable it for the time being only when the--x-autoconfigflag is set (since this behavior, although generally valid, is only strictly necessary for thewrangler deploy's autoconfig flow). -
#11764
9f6dd71Thanks @terakoya76! - Fix R2 Data Catalog snapshot-expiration API field namesThe
wrangler r2 bucket catalog snapshot-expiration enablecommand was sending incorrect field names
to the Cloudflare API, resulting in a 422 Unprocessable Entity error. This fix updates the API request
body to use the correct field names:olderThanDays->max_snapshot_age(as duration string, e.g., "30d")retainLast->min_snapshots_to_keep
The CLI options (
--older-than-daysand--retain-last) remain unchanged. -
#11651
d123ad0Thanks @dario-piotrowicz! - Surface a more helpful error message for TOML Date, Date-Time, and Time values invarsTOML parses unquoted date/time values like
DATE = 2024-01-01as objects. Previously this would cause an unhelpful error message further down the stack. Now wrangler surfaces a more helpful error message earlier, telling you to quote the value as a string, e.g.DATE = "2024-01-01". -
#11711
5121b23Thanks @southpolesteve! - Show an error when D1 migration commands are run without a configuration filePreviously, running
wrangler d1 migrations apply,wrangler d1 migrations list, orwrangler d1 migrations createin a directory without a Wrangler configuration file would silently exit with no feedback. Now these commands display a clear error message:"No configuration file found. Create a wrangler.jsonc file to define your D1 database."
-
#11710
82e7e90Thanks @dario-piotrowicz! - Fix arguments passed towrangler deploynot being forwarded toopennextjs-cloudflare deploywrangler deployrun in an open-next project delegates toopennextjs-cloudflare deploy, as part of this all the arguments passed towrangler deployneed be forwarded toopennextjs-cloudflare deploy, before the arguments would be lost, now they will be successfully forwarded (for examplewrangler deploy --keep-varswill callopennextjs-cloudflare deploy --keep-vars) -
#10750
4688f59Thanks @jacoblearned! - Notify user on local dev server reload.When running
wrangler dev, the local server suppresses Miniflare's reload messages to prevent duplicate log entries from the proxy and user workers. This update adds a reload complete message so users know their changes were applied, instead of only seeing "Reloading local server...". -
#11673
b827893Thanks @MattieTK! - Breaks out version numbers into sortable number types for analytics logging -
Updated dependencies [
65d1850,1615fce,b2769bf,554a4df,8eede3f,6a05b1c,62fd118,a7e9f80,eac5cf7]:- miniflare@4.20260103.0
- @cloudflare/unenv-preset@2.8.0
v4.56.0
Minor Changes
-
#11196
171cfd9Thanks @emily-shen! - For containers being created in a FedRAMP high environment, registry credentials are encrypted by the container platform.
Update wrangler to correctly send a request to configure a registry for FedRAMP containers. -
#11646
472cf72Thanks @vovacf201! - feat: add R2 Data Catalog snapshot expiration commandsAdds new commands to manage automatic snapshot expiration for R2 Data Catalog tables:
wrangler r2 bucket catalog snapshot-expiration enable- Enable automatic snapshot expirationwrangler r2 bucket catalog snapshot-expiration disable- Disable automatic snapshot expiration
Snapshot expiration helps manage storage costs by automatically removing old table snapshots while keeping a minimum number of recent snapshots for recovery purposes.
Example usage:
# Enable snapshot expiration for entire catalog (keep 10 snapshots, expire after 5 days) wrangler r2 bucket catalog snapshot-expiration enable my-bucket --token $R2_CATALOG_TOKEN --max-age 7200 --min-count 10 # Enable for specific table wrangler r2 bucket catalog snapshot-expiration enable my-bucket my-namespace my-table --token $R2_CATALOG_TOKEN --max-age 2880 --min-count 5 # Disable snapshot expiration wrangler r2 bucket catalog snapshot-expiration disable my-bucket
Patch Changes
-
#11649
428ae9eThanks @ascorbic! - fix: respect TypeScript path aliases when resolving non-JS modules with module rulesWhen importing non-JavaScript files (like
.graphql,.txt, etc.) using TypeScript path aliases defined intsconfig.json, Wrangler's module-collection plugin now correctly resolves these imports. Previously, path aliases were only respected for JavaScript/TypeScript files, causing imports likeimport schema from '~lib/schema.graphql'to fail when using module rules. -
#11647
c0e249eThanks @dario-piotrowicz! - The auto-configuration logic present inwrangler setupandwrangler deploy --x-autoconfigcannot reliably handle Hono projects, so in these cases make sure to properly error saying that automatically configuring such projects is not supported. -
#11694
3853200Thanks @dario-piotrowicz! - fix: improve the open-next detection thatwrangler deployperforms to eliminate false positives for non open-next projects -
Updated dependencies [
ae1ad22,737c0f4]:- miniflare@4.20251217.0
v4.55.0
Minor Changes
-
#11301
6c590a0Thanks @dario-piotrowicz! - Makewrangler deployrunopennextjs-cloudflare deploywhen executed in an open-next project -
#11045
12a63efThanks @edmundhung! - Add an internalunstable_printBindingsAPI for vite plugin integration -
#11590
7d8d4a6Thanks @pombosilva! - Add Workflows send-event to wrangler commands. -
#11301
6c590a0Thanks @dario-piotrowicz! - Support Next.js (via OpenNext) projects in autoconfig
Patch Changes
-
#11615
ed42010Thanks @elithrar! - Add helpful warning when SSL certificate errors occur due to corporate proxies or VPNs intercepting HTTPS traffic. When errors like "self-signed certificate in certificate chain" are detected, wrangler now displays guidance about installing missing system roots from your corporate proxy vendor. -
#11641
6b28de1Thanks @petebacondarwin! - update command status text and formatting -
#11578
4201472Thanks @gpanders! - Fixup UX papercuts in containers SSH -
#11550
95d81e1Thanks @hiendv! - Fix "TypeError: Body is unusable: Body has already been read" when failing to exchange oauth code because of doubleresponse.text(). -
Updated dependencies [
5d085fb,b75b710,1e9be12]:- miniflare@4.20251213.0
v4.54.0
Minor Changes
-
#11512
c15e99eThanks @emily-shen! - Enable usingctx.exportswith containersYou can now use containers with Durable Objects that are accessed via
ctx.exports.Now your config file can look something like this:
{ "name": "container-app", "main": "src/index.ts", "compatibility_date": "2025-12-01", "compatibility_flags": ["enable_ctx_exports"], // compat flag needed for now. "containers": [ { "image": "./Dockerfile", "class_name": "MyDOClassname", "name": "my-container" }, ], "migrations": [ { "tag": "v1", "new_sqlite_classes": ["MyDOClassname"], }, ], // no need to declare your durable object binding here }Note that when using
ctx.exports, where you previously accessed a Durable Object via something likeenv.DO, you should now access withctx.exports.MyDOClassname.Refer to the docs for more information on using
ctx.exports. -
#11508
b17797cThanks @dario-piotrowicz! - Wrangler will no longer try to add additional configuration to projects using@cloudflare/vite-pluginwhen deploying or runningwrangler setup -
#11508
b17797cThanks @dario-piotrowicz! - When a Vite project is detected, install@cloudflare/vite-plugin -
#11576
bb47e20Thanks @dario-piotrowicz! - Support Analog projects in autoconfig -
#10582
991760dThanks @flakey5! - Addcontainers sshcommand
Patch Changes
-
#11467
235d325Thanks @edmundhung! - fix: prevent reporting SQLite error fromwrangler d1 executeto Sentry -
#11414
41103f5Thanks @petebacondarwin! - add extra logging to user log-in flow for diagnosing failed login requests -
#11559
ea6fbecThanks @nikitassharma! - Remove image validation for containers on wrangler deploy.Internal customers are able to use additional image registries and will run into failures with this validation. Image registry validation will now be handled by the API.
-
Updated dependencies [
31c162a,bd5f087,c6dd86f]:- miniflare@4.20251210.0
v4.53.0
Minor Changes
-
#11500
af54c63Thanks @dario-piotrowicz! - Add newautoconfig_summaryfield to the deploy output entryThis change augments
wrangler deployoutput being printed toWRANGLER_OUTPUT_FILE_DIRECTORYorWRANGLER_OUTPUT_FILE_PATHto also include a newautoconfig_summaryfield containing the possible summary details for the autoconfig process (the field isundefinedif autoconfig didn't run).Note: the field is experimental and could change while autoconfig is not GA
-
#11477
9988cc9Thanks @ascorbic! - Support Nuxt in autoconfig -
#11472
ce295bfThanks @dario-piotrowicz! - Support Qwik projects in autoconfig -
#10937
9514c9aThanks @ReppCodes! - Add support for "targeted" placement mode with region, host, and hostname fieldsThis change adds a new mode to
placementconfiguration. You can specify one of the following fields to target specific external resources for Worker placement:region: Specify a region identifier (e.g., "aws:us-east-1") to target a region from another cloud service providerhost: Specify a host with (required) port (e.g., "example.com:8123") to target a TCP servicehostname: Specify a hostname (e.g., "example.com") to target an HTTP resource
These fields are mutually exclusive - only one can be specified at a time.
Example configuration:
[placement] host = "example.com:8123"
-
#11498
ac861f8Thanks @penalosa! - Add React Router support in autoconfig -
#11506
79d30d4Thanks @vicb! - Set the target JS version to ES2024
Patch Changes
-
#11393
45480b1Thanks @alsuren! - improved --help text for wrangler d1 subcommands -
#11523
94c67e8Thanks @jamesopstad! - fix: types from @cloudflare/workers-utils not being exported correctly from Wrangler -
#11483
f550b62Thanks @edmundhung! - stop runningnpm installwith--legacy-peer-depsflag when setting up a project -
Updated dependencies [
819e287,56e78c8,0aa959a]:- @cloudflare/unenv-preset@2.7.13
- miniflare@4.20251202.1
v4.52.1
Patch Changes
-
#11504
7e80340Thanks @dario-piotrowicz! - Fixwrangler deployfailing for new workers containing environment variables or bindings -
Updated dependencies [
59534ba]:- miniflare@4.20251202.0
v4.52.0
Minor Changes
-
#11416
abe49d8Thanks @dario-piotrowicz! - Remove thewrangler deploy's--x-remote-diff-checkexperimental flagThe remote diffing feature has been enabled by default for a while and its functionality is stable, as a result the experimental flag (only available for option-out of the feature right now) has been removed.
-
#11408
f29e699Thanks @ascorbic! - Export unstable helpers useful for generating wrangler config -
#11389
2342d2fThanks @dario-piotrowicz! - Improve thewrangler deployflow to also check for potential overrides of secrets.Now when you run
wrangler deployWrangler will check the remote secrets for your workers for conflicts with the names of the bindings you're about to deploy. If there are conflicts, Wrangler will warn you and ask you for your permission before proceeding. -
#11375
9a1de61Thanks @penalosa! - Support TanStack Start in autoconfig -
#11360
6b38532Thanks @emily-shen! - Containers: Allow users to directly authenticate external image registries in local devPreviously, we always queried the API for stored registry credentials and used those to pull images. This means that if you are using an external registry (ECR, dockerhub) then you have to configure registry credentials remotely before running local dev.
Now you can directly authenticate with your external registry provider (using
docker loginetc.), and Wrangler or Vite will be able to pull the image specified in thecontainers.imagefield in your config file.The Cloudflare-managed registry (registry.cloudflare.com) currently still does not work with the Vite plugin.
-
#11009
e4ddbc2Thanks @dario-piotrowicz! - Allow users to provide anaccount_idas part of theWorkerConfigObjectthey pass tomaybeStartOrUpdateRemoteProxySession -
#11478
2aec2b4Thanks @dario-piotrowicz! - Support SolidStart in autoconfig -
#11330
5a873bbThanks @dario-piotrowicz! - Support Angular projects in autoconfig -
#11449
e7b690bThanks @penalosa! - Delegate generation of HTTPS certificates to Miniflare -
#11448
2b4813bThanks @edmundhung! - Bumpsesbuildversion to 0.27.0 -
#11335
c47ad11Thanks @dario-piotrowicz! - Support internal-only undocumentedcross_account_grantservice binding property -
#11346
a977701Thanks @penalosa! - We're soon going to make backend changes that mean thatwrangler dev --remotesessions will no longer have an associated inspector connection. In advance of these backend changes, we've enabled a newwrangler tail-based logging strategy forwrangler dev --remote. For now, you can revert to the previous logging strategy withwrangler dev --remote --no-x-tail-logs, but in future it will not be possible to revert.The impact of this will be that logs that were previously available via devtools will now be provided directly to the Wrangler console and it will no longer be possible to interact with the remote Worker via the devtools console.
Patch Changes
-
#11397
b154de2Thanks @vicb! - Use more workerd native modulesNode modules
punycode,trace_events,cluster,wasi, anddomainswill be used when enabled
via a compatibility flag or by default when the compatibility date is greater or equal to 2025-12-04. -
#11452
76f0540Thanks @penalosa! - Remove uses ofeval()from the Wrangler bundle -
#11284
695fa25Thanks @dom96! - Removes duplicate module warnings when vendoring Python packages -
#11249
504e258Thanks @dario-piotrowicz! - fix: Generalize autoconfig wordingGeneralize the autoconfig wording so that when it doesn't specifically mention "deployment" (since it can be run via
wrangler setupor the autoconfig programmatic API) -
#11455
d25f7e2Thanks @dario-piotrowicz! - Fix autoconfig using absolute paths for static projectsRunning the experimental autoconfig logic through
wrangler setupandwrangler deploy --x-autoconfigon a static project results in absolute paths being used. This is incorrect, especially when such paths are being included in the generated wrangler.jsonc. The changes here fix the autoconfig logic to use paths relative to the project's root instead.For example given a project located in
/Users/usr/projects/sites/my-static-site, before:// wrangler.jsonc at /Users/usr/projects/sites/my-static-site { "$schema": "node_modules/wrangler/config-schema.json", "name": "static", "compatibility_date": "2025-11-27", "observability": { "enabled": true }, "assets": { "directory": "/Users/usr/projects/sites/my-static-site/public" } }
and after:
// wrangler.jsonc at /Users/usr/projects/sites/my-static-site { "$schema": "node_modules/wrangler/config-schema.json", "name": "static", "compatibility_date": "2025-11-27", "observability": { "enabled": true }, "assets": { "directory": "public" } }
-
#11484
1cfae2dThanks @edmundhung! - Explicitly close FileHandle inwrangler d1 executeto support Node 25 -
#11383
1d685cbThanks @dario-piotrowicz! - Fix: ensure that when a remote proxy session creation fails a hard error is surfaced to the user (both inwrangler devand in the programmatic API).When using remote bindings, either with
wrangler devor viastartRemoteProxySession/maybeStartOrUpdateRemoteProxySessionthe remote proxy session necessary to connect to the remote resources can fail to be created, this might happen if for example you try to set a binding with some invalid values such as:MY_R2: { type: "r2_bucket", bucket_name: "non-existent", // No bucket called "non-existent" exists remote: true, },
Before this could go undetected and cause unwanted behaviors such as requests handling hanging indefinitely, now wrangler will instead crash (or throw a hard error ion the programmatic API), clearly indicating that something went wrong during the remote session's creation.
-
#11366
edf896dThanks @ascorbic! - Use correctly-formatted names when displaying detected framework details -
#11461
9eaa9e2Thanks @dario-piotrowicz! - Update the structure of theconfiguremethod of autoconfig frameworksUpdate the signature of the
configurefunction of autoconfig frameworks (AutoconfigDetails#Framework), before they would return aRawConfigobject to use to update the project's wrangler config file, now they return an object that includes theRawConfigand that can potentially also hold additional data relevant to the configuration. -
Updated dependencies [
2b4813b,b154de2,5ee3780,6e63b57,71ab562,5e937c1]:- miniflare@4.20251128.0
- @cloudflare/unenv-preset@2.7.12
v4.51.0
Minor Changes
-
#11345
d524e55Thanks @penalosa! - Enable experimental support for autoconfig-powered Astro projects -
#11228
43903a3Thanks @petebacondarwin! - SupportCLOUDFLARE_ENVenvironment variable for selecting the active environmentThis change enables users to select the environment for commands such as
CLOUDFLARE_ENV=prod wrangler versions upload. The--envcommand line argument takes precedence.The
CLOUDFLARE_ENVenvironment variable is mostly used with the@cloudflare/vite-pluginto select the environment for building the Worker to be deployed. This build also generates a "redirected deploy config" that is flattened to only contain the active environment.
To avoid accidentally deploying a version that is built for one environment to a different environment, there is an additional check to ensure that if the user specifies an environment in Wrangler it matches the original selected environment from the build.
Patch Changes
-
Updated dependencies [
4d61fae,69f4dc3,1133c4d,4d61fae]:- @cloudflare/kv-asset-handler@0.4.1
- miniflare@4.20251125.0
v4.50.0
Minor Changes
-
#11219
524a6e5Thanks @Ltadrian! - Implement Hyperdrive binding TLS miniflare proxy. This will allow for wrangler dev hyperdrive bindings to connect to external
databases that require TLS. -
#11233
c922a81Thanks @emily-shen! - Addcontainers.unsafeto allow internal users to use additional container features
Patch Changes
-
#11353
0cf696dThanks @vicb! - Use the nativenode:domainmodule when availableIt is enabled when the
enable_nodejs_domain_modulecompatibility flag is set. -
#11328
bb44120Thanks @ascorbic! - Fixes a bug that causedwrangler deployto hang when deploying SvelteKit sites with experimental autoconfig -
#11025
4a158e9Thanks @devin-ai-integration! - Use the nativenode:wasimodule when availableIt is enabled when the
enable_nodejs_wasi_modulecompatibility flag is set. -
Updated dependencies [
0cf696d,524a6e5,4a158e9]:- @cloudflare/unenv-preset@2.7.11
- miniflare@4.20251118.1
[v4.49.1](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGE
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
Adds a kernel option to the default sharp image service to allow selecting something other than the default lanczos3. Resize kernel selection can be quite noticeable depending on various characteristics of the source image - you can see some examples in https://johncostella.com/magic/
export default defineConfig({
image: {
service: {
entrypoint: 'astro/assets/services/sharp',
config: {
kernel: "mks2021"
}
}
})Testing
Tested manually using pnpm link to a separate repository and adding a dumb little console.log(), modifying the kernel property inside of config.
kernel: undefined
11:36:43 [200] /_image 44ms
kernel: undefined
11:36:43 [200] /_image 33ms
[...]
kernel: mks2021
11:34:33 [200] /_image 83ms
kernel: mks2021
kernel: mks2021
11:34:33 [200] /_image 96ms
11:34:33 [200] /_image 68ms
Docs
The sharp image service isn't really documented in the docs, so uh...
/cc @withastro/maintainers-docs for feedback!
Summary
Fixes a crash when using @astrojs/sitemap with output: 'server' mode that results in:
Cannot read properties of undefined (reading 'reduce')
Problem
When using output: 'server' in Astro config, the astro:routes:resolved hook may not fire before astro:build:done, leaving the _routes variable undefined. When the sitemap integration tries to call _routes.reduce(), it crashes.
Solution
Added a nullish coalescing operator to default _routes to an empty array:
// Before
const routeUrls = _routes.reduce<string[]>((urls, r) => {
// After
const routeUrls = (_routes ?? []).reduce<string[]>((urls, r) => {This prevents the crash while maintaining existing behavior - if routes aren't available, the sitemap will simply not include route-based URLs (falling back to pages and customPages).
Testing
Tested with an Astro project using:
output: 'server'@astrojs/nodeadapter- Build previously crashed, now completes successfully
Related Issues
- #3682 - Sitemap Generation Does Not Work with SSR
- #12437 - Sitemap not included in static output with SSR
Changeset
Included a patch changeset for @astrojs/sitemap.
fixes: #15087
Changes
In the previous implementation, the loadLocalImage function resolved image paths based on the outDir path set at build time. This caused an issue where the function would fail to work correctly if the dist (outDir) folder was moved.
This fix avoids this problem by identifying the current dist folder at runtime when resolving image paths.
- The newly added
resolveOutDirfunction is based onresolveClientDirfound in the Node adapter's serve-static.ts file. - The
assetsDirvariable previously exported from vite-plugin-assets.ts was not imported by any files, so it has been removed. Instead,serverDiris now exported. - I have implemented a test to verify that the functionality works correctly even after copying the dist folder to a different location.
Testing
To verify that moving the dist folder does not cause any issues, the test copies the dist folder generated at build time to a different directory.
It then starts a new preview server pointing to that copied directory, confirming that images are correctly loaded without performing a rebuild.
In the tests conducted after moving the dist folder, I only included tests for local images.
This is because, in my environment, all tests except for local images were already passing with the original implementation, so I deemed additional tests unnecessary.
However, I can add the remaining tests if required.
Docs
There is no impact on users who do not move their dist folder, as it will continue to function as before.
Changes
Initially reported on Discord, this PR fixes an issue in development mode, when using content collections, where CSS from a previously visited page would incorrectly apply to other pages not using the components with that CSS.
- Repro
- Definitely a bit tricky to reproduce as a file importing
astro:contentneeds to be imported in different pages to trigger the issue. - In the
vite-plugin-css, I think we need to stop traversing when collecting CSS when a propagation stopping point is reached, like we do in thevite-plugin-astro-serverwhen recursively crawling the module graph to get all style files.
Testing
I updated a fixture to reproduce the issue and added a test to verify the fix by visting two different pages. Before the changes, the second page would incorrectly include CSS from a componment used only in the first page. After the changes, the second page correctly does not include that CSS.
Docs
This is a bug fix; no doc updates are needed.
Changes
Initially reported on Discord, this PR fixes an issue where visiting an unknown route matching the pattern of a pre-rendered dynamic route (e.g., /dogs/unknown when /dogs/[dog] is pre-rendered) would cause the Node.js adapter to fail to serve the expected 404 page.
- Repro
- Previously, pre-rendered routes were not part of the manifest due to this condition. When matching all routes (including pre-rendered ones to include redirects), the Node.js adapter would now attempt to ssr pre-rendered pages matching the request.
Testing
I added a pre-rendered dynamic route in an existing fixture and added tests to verify that visiting both the pre-rendered route and an unknown route matching its pattern behaves as expected.
Docs
This is a bug fix; no doc updates are needed.
Changes
This replaces some bytes parsing with metadata obtained from sharp.
Testing
Existing unit tests passing.
Docs
No doc update needed, since this has no impact.
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.9
Patch Changes
-
#15174
37ab65aThanks @florian-lefebvre! - Adds Google Icons to built-in font providersTo start using it, access it on
fontProviders:import { defineConfig, fontProviders } from 'astro/config'; export default defineConfig({ experimental: { fonts: [ { name: 'Material Symbols Outlined', provider: fontProviders.googleicons(), cssVariable: '--font-material', }, ], }, });
-
#15150
a77c4f4Thanks @matthewp! - Fixes hydration for framework components inside MDX when usingAstro.slots.render()Previously, when multiple framework components with
client:*directives were passed as named slots to an Astro component in MDX, only the first slot would hydrate correctly. Subsequent slots would render their HTML but fail to include the necessary hydration scripts. -
#15130
9b726c4Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyChanges how font providers are implemented with updates to the
FontProvidertypeThis is an implementation detail that changes how font providers are created. This process allows Astro to take more control rather than relying directly on
unifonttypes. All of Astro's built-in font providers have been updated to reflect this new type, and can be configured as before. However, using third-party unifont providers that rely onunifonttypes will require an update to your project code.Previously, an Astro
FontProviderwas made of a config and a runtime part. It relied directly onunifonttypes, which allowed a simple configuration for third-party unifont providers, but also coupled Astro's implementation to unifont, which was limiting.Astro's font provider implementation is now only made of a config part with dedicated hooks. This allows for the separation of config and runtime, but requires you to create a font provider object in order to use custom font providers (e.g. third-party unifont providers, or private font registeries).
What should I do?
If you were using a 3rd-party
unifontfont provider, you will now need to write an AstroFontProviderusing it under the hood. For example:// astro.config.ts import { defineConfig } from "astro/config"; import { acmeProvider, type AcmeOptions } from '@acme/unifont-provider' +import type { FontProvider } from "astro"; +import type { InitializedProvider } from 'unifont'; +function acme(config?: AcmeOptions): FontProvider { + const provider = acmeProvider(config); + let initializedProvider: InitializedProvider | undefined; + return { + name: provider._name, + config, + async init(context) { + initializedProvider = await provider(context); + }, + async resolveFont({ familyName, ...rest }) { + return await initializedProvider?.resolveFont(familyName, rest); + }, + async listFonts() { + return await initializedProvider?.listFonts?.(); + }, + }; +} export default defineConfig({ experimental: { fonts: [{ - provider: acmeProvider({ /* ... */ }), + provider: acme({ /* ... */ }), name: "Material Symbols Outlined", cssVariable: "--font-material" }] } }); -
#15147
9cd5b87Thanks @matthewp! - Fixes scripts in components not rendering when a sibling<Fragment slot="...">exists but is unused
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-vscode@2.16.8
Patch Changes
- #15156
9cc2c71Thanks @Princesseuh! - Fixes TypeScript plugin not working
Changes
#15083 did not actually fix the ts-plugin, because the path property doesn't actually exists. When you try it locally, it ends up working by accident because the node_modules structure is different than in CI, which probably caused confusion as to if the fix was proper or not.
Testing
Works in local both packaged and unpackaged, but the CI setup is different and so well
Docs
N/A
Changes
This adds support for providing a background color in image transforms. Right now Astro has no support for that, so the background of anything converted to e.g. jpeg is always Sharp's default black.
Testing
I'd need some help figuring how to implement a test for this. Is there a way to render a JPEG to a <canvas> in a headless browser inside Astro tests?
Docs
Some documentation updates are definitely needed for this, to document the new field.
/cc @withastro/maintainers-docs for feedback!
fixes: #15076
Changes
In the previous implementation, if you added a cookie using context.cookies.set() and then updated the Set-Cookie header with Headers.append(), the cookie added via the context would be overwritten.
This fix changes the behavior to avoid overwriting by first reading both before setting them.
Testing
I added a test to verify that cookies set using both methods are included in the response.
Docs
Could this affect a user’s behavior?
In previous implementations, cookies added via context.cookies.set() were overwritten and deleted, so this change prevents that from happening.
We probably need to update docs!
If any documentation update is needed, it would likely be to explicitly state that “cookies added via context.cookies.set() come before cookies added via Headers.”
If docs will be needed or you’re not sure, uncomment the next line
/cc @withastro/maintainers-docs
Changes
- Fixes #14518
- Framework components with
client:*directives inside named slots now correctly hydrate when usingAstro.slots.render()in MDX - Previously, only the first slot would hydrate; subsequent slots rendered HTML but lost hydration scripts
Testing
Added test case in packages/integrations/mdx/test/mdx-plus-react.test.js that verifies both /foo and /bar pages have hydration scripts when using named slots with Astro.slots.render().
Docs
No docs changes needed - this is a bug fix for existing behavior.
Summary
Skips the "Use the Image component" audit warning for images inside framework components (React, Vue, Svelte, etc.).
Images inside <astro-island> elements now skip the warning, since these components can't directly use Astro's <Image> component.
Changes
- Added check in
perf.tsto skip the audit if the image is inside an<astro-island>element
Note
This only covers hydrated components (with client:* directives). Server-only framework components don't get the astro-island wrapper, so they'd still see the warning - but as the docs mention, those can receive optimized URLs from Astro.
Fixes #15048
Changes
- Previously script rendered would fail on unused fragments because the logic to check to render a script ran anyways.
- Moved everything into a RenderInstruction which handles deduplication better.
- Fixes #13847
Testing
- New test added
Docs
N/A, bug fix
Fixes hydration mismatch when using experimentalReactChildren option.
Problem
When experimentalReactChildren=true, children passed to React components had inconsistent prop handling between server and client:
- Server correctly mapped
classtoclassNameand generated uniquekeyprops - Client read DOM attributes directly without applying the same transformations
This caused React warnings and hydration errors:
- "Invalid DOM property 'class'. Did you mean 'className'?"
- "Each child in a list should have a unique 'key' prop."
Solution
Updated the client-side createReactElementFromDOMElement function in client.ts to:
- Map DOM attribute names to React prop names (class to className, for to htmlFor)
- Generate unique key props for each child element
Testing
Added unit tests for class-to-className mapping and key generation. All existing tests pass.
Closes #15102
Changes
This adds benchmarks for build times for a static, hybrid and server websites. The examples are a bit small, but should be representative of an average Astro website regarding what they have, between 5 to 100 pages, an endpoint or a few ones, for the hybrid setup a mix of static and non-static pages etc.
Testing
N/A
Docs
N/A
Changes
As per title
Testing
Docs
Changes
Tests fail due to race conditions.
The way we count page loads might take to long to deliver the results before they are tested.
We can't await "until no further console output arrives".
It would be possible to just wait 500ms or so for the data.
Instead of adding random waits, I'll first try whether awaiting the URL might bring some release.
The problem mainly exists with Firefox on Windows.
Edit:
Tried a few options. Sadly, ended up with some random waits, too.
Testing
Docs
n.a.
Closes #15136
Changes
- Fixes deploy failure when using Astro base path with Cloudflare adapter
- When a base path is configured (e.g., base: '/blog'), wrangler would fail with an error about uploading _worker.js directory as an asset
- The adapter now automatically generates a .assetsignore file containing _worker.js when a base path is configured
- If the user has an existing .assetsignore in their public directory, _worker.js is appended to it (if not already present)
- Changeset added
Fixes #15134
Testing
Added new test file packages/integrations/cloudflare/test/assets-ignore.test.js with two tests:
- Verifies .assetsignore is created with _worker.js entry when base path is configured
- Verifies .assetsignore is NOT created when no base path is configured (default behavior unchanged)
▶ .assetsignore generation
▶ with base path
✔ creates .assetsignore file with _worker.js entry
✔ with base path
▶ without base path
✔ does not create .assetsignore file
✔ without base path
✔ .assetsignore generation
Docs
No docs changes needed. This is a bug fix that makes the existing base configuration work correctly with Cloudflare deployments. Users who were previously working around this issue by manually adding .assetsignore files can now remove that workaround.
Changes
Initially reported on Discord, this PR fixes an issue where adding or removing <style> tags in Astro components would result in no visual update of styles during development, unless the dev server was restarted.
- Repro
- After invalidating modules in the
astro:hmr-reloadVite plugin, if one of the invalidated modules is the virtual module of a page, the associated virtual module for a dev CSS import is not invalidated. - This PR checks the list of invalidated modules for any page virtual modules, and invalidates the associated dev CSS virtual modules as well.
- This is not done in the
vite-plugin-csshotUpdateplugin hook as initially suggested by Matthew as it would require recursively checking all modules importers for page virtual modules, whereas a similar recursion is already done when callinginvalidateModule()which gives us back the list all affected modules that we can iterate over.
Open to suggestions as I may not have the full context over the new vite-plugin-css implementation and may have gone about this the wrong way.
Testing
I added new E2E tests to simulate adding and removing style tags in an Astro component and verifying that the styles are updated.
Docs
This is a bug fix; no doc updates are needed.
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.8
Patch Changes
-
#15124
81db3c0Thanks @leonace924! - Fixes an issue where requests with query parameters to thebasepath would return a 404 if trailingSlash was not'ignore'in development -
#15152
39ee41fThanks @rururux! - Fixes a case wherecontext.cookies.set()would be overriden when setting cookies via response headers in development -
#15140
6f6f8f8Thanks @cameronraysmith! - Fixes esbuild warning due to dead code in assets virtual module -
#15127
2cff904Thanks @Princesseuh! - Updates "Unsupported page types found" error to only appear in more realistic cases -
#15149
34f84c2Thanks @rahuld109! - Skips "Use the Image component" audit warning for images inside framework components (React, Vue, Svelte, etc.)
astro-vscode@2.16.7
Patch Changes
- #15131
d40ff7dThanks @Princesseuh! - Fixes extension asking for the wrong version of VS Code
Changes
VS Code updates needs to be done manually because we support a few versions, this PR prevents renovate from updating it
Testing
N/A
Docs
N/A
Changes
- Supersedes #14980
- Fonts in Astro rely on unifont. However we've seen recently with zod that having public API rely on 3rd party libs directly is quite dangerous.
- To avoid this, I've been doing a similar thing with sessions driver on v6 by introducing an Astro specific API
- This PR introduces a new
FontProvidertype not relying directly on unifont types. We still use unifont under the hood and it is still possible to use a unifont provider with a bit of config (documented in the docs PR) - As part of this API change, a font provider object is passed in the astro config with methods directly (VS loading the entrypoint with Vite). That is because it didn't really make sense after all and caused a bunch of issues (closes #14933)
- There is no breaking change for end users, only for font provider authors (who are pretty rare AFAIK)
Testing
Updates existing unit tests and add more as needed
Docs
- Changeset
- RFC
- withastro/docs#13025
Changes
- Invalidate changed SSR modules and their importers on HMR, including runner cache
- Prevent false full reloads while still re-executing SSR on the next request
- Add e2e coverage for SSR-only dependency invalidation
Fixes #15021
Testing
pnpm exec playwright test e2e/hmr.test.js --config ./playwright.config.js --project="Chrome Stable"
Before
Server-side logs did not update when an imported dependency changed.
After
Server-side logs update immediately when the dependency changes.
Demo: https://youtu.be/-wjCxZHey7M
Docs
- Not needed (no user-facing changes).
Issue
Changes
Realistically there's no point in showing this warning all the time, no one is confusing a .png to be a page. As such, I think it's better to only show the warning whenever it'd be possible for users to be confused
Fixes #14321
Testing
N/A
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-beta.0
Patch Changes
-
#15125
6feb0d7Thanks @florian-lefebvre! - Improves JSDoc annotations forAstroGlobal,AstroSharedContextandAPIContexttypes -
#15176
9265546Thanks @matthewp! - Fixes hydration for framework components inside MDX when usingAstro.slots.render()Previously, when multiple framework components with
client:*directives were passed as named slots to an Astro component in MDX, only the first slot would hydrate correctly. Subsequent slots would render their HTML but fail to include the necessary hydration scripts. -
#15125
6feb0d7Thanks @florian-lefebvre! - Fixes remote imagesEtagheader handling by disabling internal cache -
#15121
06261e0Thanks @ematipico! - Fixes a bug where the Astro, with the Cloudlfare integration, couldn't correctly serve certain routes in the development server. -
#15125
6feb0d7Thanks @florian-lefebvre! - Fixes images not working in development when using setups with port forwarding -
#15137
2f70bf1Thanks @matthewp! - Addslegacy.collectionsBackwardsCompatflag that restores v5 backwards compatibility behavior for legacy content collections - (v6 upgrade guidance)When enabled, this flag allows:
- Collections defined without loaders (automatically get glob loader)
- Collections with
type: 'content'ortype: 'data' - Config files located at
src/content/config.ts(legacy location) - Legacy entry API:
entry.slugandentry.render()methods - Path-based entry IDs instead of slug-based IDs
// astro.config.mjs export default defineConfig({ legacy: { collectionsBackwardsCompat: true, }, });
This is a temporary migration helper for v6 upgrades. Migrate collections to the Content Layer API, then disable this flag.
-
#15125
6feb0d7Thanks @florian-lefebvre! - Reduces Astro’s install size by around 8 MB -
#15125
6feb0d7Thanks @florian-lefebvre! - Enables the ClientRouter to preserve the original hash part of the target URL during server side redirects. -
#15125
6feb0d7Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API onlyChanges the font format downloaded by default when using the experimental Fonts API. Additionally, adds a new
formatsconfiguration option to specify which font formats to download.Previously, Astro was opinionated about which font sources would be kept for usage, mainly keeping
woff2andwofffiles.You can now specify what font formats should be downloaded (if available). Only
woff2files are downloaded by default.What should I do?
If you were previously relying on Astro downloading the
woffformat, you will now need to specify this explicitly with the newformatsconfiguration option. Additionally, you may also specify any additional file formats to download if available:// astro.config.mjs import { defineConfig, fontProviders } from 'astro/config' export default defineConfig({ experimental: { fonts: [{ name: 'Roboto', cssVariable: '--font-roboto', provider: fontProviders.google(), + formats: ['woff2', 'woff', 'otf'] }] } }) -
#15179
8c8aee6Thanks @HiDeoo! - Fixes an issue when importing using an import alias a file with a name matching a directory name. -
#15176
9265546Thanks @matthewp! - Fixes scripts in components not rendering when a sibling<Fragment slot="...">exists but is unused
@astrojs/cloudflare@13.0.0-beta.0
Patch Changes
-
#15080
f67b738Thanks @gameroman! - Updateswranglerdependency to be apeerDependencyover adependency -
#15121
06261e0Thanks @ematipico! - Fixes a bug where the Astro, with the Cloudlfare integration, couldn't correctly serve certain routes in the development server. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
@astrojs/node@10.0.0-beta.0
Patch Changes
- #15164
54dc11dThanks @HiDeoo! - Fixes an issue where the Node.js adapter could fail to serve a 404 page matching a pre-rendered dynamic route pattern.
@astrojs/svelte@8.0.0-beta.0
Patch Changes
- #15125
6feb0d7Thanks @florian-lefebvre! - Improve Sveltechildrenprop type checking
@astrojs/vercel@10.0.0-beta.0
Patch Changes
- #15125
6feb0d7Thanks @florian-lefebvre! - Updates Node versions data to account for v24 as the default
@astrojs/vue@6.0.0-beta.0
Patch Changes
- #15125
6feb0d7Thanks @florian-lefebvre! - Adds support for arbitrary HTML attributes on Vue components
astro-vscode@2.16.9-beta.0
Patch Changes
-
#15125
6feb0d7Thanks @florian-lefebvre! - Fix "Find All References" and other TypeScript features by ensuring the plugin bundle is correctly included -
#15125
6feb0d7Thanks @florian-lefebvre! - Fixes syntax highlighting sometimes not working when the frontmatter or script tags ended with certain TypeScript constructs
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
Fixes #15095
Changes
- What does this change?
Updated baseMiddleware to ensure that after stripping the base path, the resulting URL always starts with / when it's not empty. This preserves query parameters and ensures proper URL parsing downstream.
After:
let newUrl = url.replace(devRoot, devRootReplacement);
// Ensure the URL is a valid path (e.g., /base?foo=bar -> /?foo=bar, not ?foo=bar)
if (newUrl !== '' && !newUrl.startsWith('/')) {
newUrl = '/' + newUrl;
}
req.url = newUrl;packages/astro/src/vite-plugin-astro-server/base.ts: Added logic to prepend/when the stripped URL doesn't start with/and isn't emptypackages/astro/src/vite-plugin-astro-server/request.ts: Already had normalization logic that handles the empty string pathname case (no changes needed)packages/astro/test/units/routing/trailing-slash.test.js: Test already exists for this scenario (issue #15095)
Testing
The fix ensures that:
/base?query=test→ strips to/?query=test→ normalizes to empty string pathname for route matching ✅/base→ strips to empty string → normalizes correctly ✅/base/→ strips to/→ normalizes correctly ✅
- tested with minimal example
Docs
Contribution by Gittensor, see my contribution statistics at https://gittensor.io/miners/details?githubId=42954461
When we render to an async iterable, we basically start rendering the
given template into chunks and return an iterator which reads from that
same queue of chunks in parallel.
The rendering causes the following process:
- Convert the rendered chunk into a byte array if it isn't one already
- Add the byte array to the queue
- Resolve if nothing left in the queue
The iterator then reads from this same queue and does the following:
- Take the entire contents of the queue right now
- Concat them into one array
- Yield the concatenated array
The bottleneck in this process is Convert the rendered chunk into a byte array.
Basically, if a chunk isn't already a Uint8Array, we pass the string
representation through a TextEncoder to turn it into one.
This means for 10,000 string chunks, we call encode 10,000 times.
It turns out TextEncode#encode is costly.
This PR reworks this process to the following:
Rendering:
- Convert the rendered chunk into a string or byte array if it isn't one
already - Add the string or byte array to the queue
- Resolve if nothing left in the queue
Iterator:
- Take the entire contents of the queue right now
- Merge consecutive strings into one string, and convert that into a
byte array - Concat them into one array (now the set of arrays consists only of
byte arrays again) - Yield the concatenated array
This means we call TextEncode#encode on larger strings, and fewer
times - which it turns out is a lot more performant.
Benchmarks
Given this astro file:
<h1>Foo</h1>
<div style="display:none">
{
new Array(50_000).fill(0).map((_, i) => (
<div>
Go to <a href={`/${i}`}>{i}</a>
</div>
))
}
</div>I can use wrk to benchmark server response times directly:
# Before
wrk http://localhost:4321/astro
Running 10s test @ http://localhost:4321/astro
2 threads and 10 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.04s 303.51ms 1.91s 71.60%
Req/Sec 5.56 4.30 20.00 64.94%
85 requests in 10.10s, 180.61MB read
Socket errors: connect 0, read 0, write 0, timeout 4
Requests/sec: 8.42
Transfer/sec: 17.88MB
# Ater
wrk http://localhost:4321/astro
Running 10s test @ http://localhost:4321/astro
2 threads and 10 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 553.97ms 154.48ms 1.57s 82.78%
Req/Sec 9.68 5.28 29.00 58.57%
178 requests in 10.09s, 378.34MB read
Requests/sec: 17.64
Transfer/sec: 37.49MBThis seems to show 17 requests/sec vs 8 requests/sec.
Meanwhile, if I do a CPU profile and check out the top functions:
Before:
| Flat | Flat % | Sum % | Cumulative | Cumulative % | Function |
|---|---|---|---|---|---|
| 49.41ms | 17.81% | 17.81% | 49.41ms | 17.81% | Garbage |
| 41.81ms | 15.07% | 32.88% | 53.21ms | 19.18% | encode |
| 11.40ms | 4.11% | 36.99% | 68.42ms | 24.66% | write |
| 11.40ms | 4.11% | 41.10% | 11.40ms | 4.11% | encodeUtf8String |
| 11.40ms | 4.11% | 45.21% | 11.40ms | 4.11% | (anonymous:L#722) |
| 10.14ms | 3.65% | 48.86% | 87.42ms | 31.51% | iterate |
After:
| Flat | Flat % | Sum % | Cumulative | Cumulative % | Function |
|---|---|---|---|---|---|
| 32.86ms | 15.29% | 15.29% | 32.86ms | 15.29% | Garbage |
| 11.38ms | 5.29% | 20.59% | 11.38ms | 5.29% | (anonymous:L#722) |
| 8.85ms | 4.12% | 24.71% | 16.43ms | 7.65% | write |
| 8.85ms | 4.12% | 28.82% | 22.75ms | 10.59% | next |
| 7.58ms | 3.53% | 32.35% | 7.58ms | 3.53% | stringifyChunk |
| 7.58ms | 3.53% | 35.88% | 21.49ms | 10.00% | flush |
Testing
Existing tests should cover this.
Docs
No changes to functionality.
Changes
- Found in #15120
- Many types were duplicated, this cleans them up
Testing
Manually in examples, should pass
Docs
Changeset + jsdoc
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.2
Patch Changes
- #3647
9f4efc3Thanks @gerstenbergit! - Adds Greek language support
Changes
This PR fixes an issue where the route matching logic we in the Astro development server (AstroServerApp) didn't align with the route matching we use in non-runnable environments (DevApp).
I created a devMatch that returns the RouteData found, and the resolved pathname.
I also removed the internal caching of the pipeline because it was returning old modules, creating false positives in some other tests, such as the content layer. Removing the caching fixed the issue.
Testing
I copied to the routing-priority.test.js test cases inside the cloudflare testing suite.
Ideally we could have our own "non-runnable testing environment", but it could take a while.
Docs
N/A
Changes
- Stacked on top of #15117
- Cleans types to be more consistent with other Astro APIs
Testing
Should pass
Docs
- Changeset
- withastro/docs#13020
Changes
- Stacked on top of #15111
- Closes #14819
- Removes the
dedupeFontFaces()function and its associated tests since the logic now lives inunifontitself - Upgrades
unifontto latest. This version comes with new stuff and this PR updates Astro accordingly to allow passingformatsmanually
Testing
Updated, should pass
Docs
- Changeset
- withastro/docs#13017
- RFC: withastro/roadmap@
8de85f7(#1039)
Changes
Support Node 24 for Vercel builds. Closes #15115
Testing
No tests added (just a config change)
Docs
No docs changed (docs are correct, just the code isn't)
Changes
Moving e2e tests to Firefox 144 showed a race condition on the order in which animations are canceled when a view transition get aborted. The fix makes the animation names indistinguishable in the test output, ensuring that the order does not matter.
A second test tested fallback behavior for browsers that do not support view transitions.
Skipped that one as we do not have such browsers in our playwright setup anymore
(and also won't suggest to add one)
Testing
right.
Docs
n.a.
Description
Closes #3615
This PR adds text-size-adjust rules on the html element in reset.css to prevent platform-specific, inconsistent font scaling on iOS WebKit when the device orientation changes.
Problem
On iOS Safari (WebKit), rotating to landscape can trigger text autosizing that causes unwanted font-size adjustments across various UI elements, and the sizes may not revert when rotating back.
Solution
Apply -webkit-text-size-adjust: 100% and text-size-adjust: 100% on the html element to keep sizes consistent across orientation changes without affecting user zoom or accessibility settings.
This approach is widely used in mainstream CSS resets, including: normalize.css, tailwindcss/preflight, and modern-normalize.
This feature was originally introduced by Apple and is non-standard in origin1. Although
text-size-adjustis now standardized, regarding Safari, only the mobile version2 supports the prefixed-webkit-text-size-adjust, while Chromium supports the unprefixed version34.
Testing
Tested on iOS Safari (iOS 26.1, iPhone 15 Pro). Further testing can be done via the deploy preview provided by this PR.
Before and After Video
| Before | After |
|---|---|
before.mp4 |
after.mp4 |
Background reading:
Footnotes
Adds complete Greek (el) translations for Starlight’s UI.
Based on en.json, all keys included.
Changes
Initially reported on Discord, this PR fixes a Windows-specific build issue when importing an Astro component with a <script> tag using an import alias.
- Repro (the repro includes MDX, but turns out the issue is not MDX-related)
- The custom resolver used in the vite plugin to alias paths needs to return normalized paths.
Testing
- Added a new component
Qux.astrowith a<script>tag to the existingalias-tsconfigfixture, imported it using an alias.- The associated test fails to build the fixture on Windows before the fix.
- The build succeeds after the fix.
- Also tested the fix with a local patch on the Starlight repo where the issue was originally reported.
- The build succeeds on Windows after applying the fix.
Docs
This is a bug fix; no doc updates are needed.
Changes
- Internal refactoring, extracted from my research in #14980. In preparation for some future changes, I decided to make this PR to make diffs smaller later on
- It introduces a new
FontResolverdefinition, which allows abstracting unifont away. It allowed moving some logic around and make tests not rely on unifont directly
Testing
Tests are added for the new UnifontFontResolver class. All tests should pass
Docs
N/A. This is an internal refactor
Updates the changeset to minor as well as explain a little more the reasoning.
Changes
I always thought this was impossible to fix, but a solution was figured out over the holidays over at Svelte and Vue: sveltejs/language-tools#2905 so this PR applies the same strategy for Astro.
Fix #14685
Testing
Added a test and tested manually
Docs
N/A
Changes
Update prettier extension to new one
Testing
Not needed
Docs
Not needed
Changes
- Found in #15104
- Updates the imports paths to use a file extension, otherwise it may fail with
astro check. Doing it here and not on the renovate PR directly will allow renovate to push updates to said PR
Testing
Should pass
Docs
N/A
updates vendored image-size to 2.0.2 and refactors the patch slightly (same core idea, the only changes we make are to add avis and handle out of order brands/ brands that are in the compat box)
Note: This PR body was truncated due to platform limits.
This PR contains the following updates:
Release Notes
Microsoft/vsce (@vscode/vsce)
v2.32.0
Changes:
- #1034: Revert "Update deprecated dependencies"
- #1032: fix: probabilistic trigger v8 crash
- #1028: Remove need-more-info-closer workflow
This list of changes was auto generated.
v2.31.1
Changes:
- #1027: Update deprecated dependencies
- #1025: Don't package default readme if a path is provided and default is ignored
- #1024: add executes code property
This list of changes was auto generated.
v2.31.0
Changes:
- #1022: Throw error if provided readmePath or provided changelogPath could not be found
- #1020: Throw when unused files pattern in package.json
- #1015: Support "ls --tree"
This list of changes was auto generated.
microsoft/vscode (vscode)
v1.999.0
v1.107.1: November 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.107.0: November 2025
Welcome to the November 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
VS Code now includes Agent HQ, background agents and custom agents for your org.
- Agent HQ: You can use GitHub Copilot alongside your other coding agents to complete multiple tasks. Leverage background, cloud, or local agents and their relative strengths for the right job, all at the same time.
- Background agents work in their own isolated workspaces, managed for you by VS Code.
- Custom agents for organizations: Your team can now share custom agents at the org level.
v1.106.3: October 2025 Recovery 3
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.106.2: October 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.106.1: October 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.106.0: October 2025
Welcome to the October 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
| AI | Productivity and UX | Enterprise |
|---|---|---|
| Plan complex coding tasks with the plan agent and monitor agent sessions across background agents Show more |
Select text from deleted code in the diff editor Show more |
Manage MCP server access with custom MCP registry Show more |
| Inline suggestions are now open source Show more |
Experience the more modern, refreshed product icons Show more |
Manage Linux devices with JSON policies Show more |
v1.105.1: September 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.105.0: September 2025
Welcome to the September 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
| OS integration | Developer productivity | Agent tools |
|---|---|---|
| Get notified about task completion and chat responses Show more |
Resolve merge conflicts with AI assistance Show more |
Install MCP servers from the MCP marketplace Show more |
| Native authentication experience on macOS Show more |
Pick up where you left off with the recent chats Show more |
Use fully-qualified tool names to avoid conflicts Show more |
v1.104.3: August 2025 Recovery 3
The update addresses these issues.
v1.104.2: August 2025 Recovery 2
The update addresses these issues.
v1.104.1: August 2025 Recovery 1
The update addresses these issues.
v1.104.0: August 2025
Welcome to the August 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
| Model flexibility | Security | Productivity |
|---|---|---|
| Let VS Code select the best model Show more |
Confirm edits for sensitive files Show more |
Remove distractions from chat file edits Show more |
| Contribute models through VS Code extensions Show more |
Let agents run terminal commands safely Show more |
Use AGENTS.md to add chat context Show more |
v1.103.2: July 2025 Recovery 2
The update addresses these issues.
v1.103.1: July 2025 Recovery 1
The update adds GPT-5 prompt improvements, support for GPT-5 mini, and addresses these issues.
v1.103.0: July 2025
Welcome to the July 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
| MCP | Chat | Productivity |
|---|---|---|
| Revamped tool picker experience Show more |
Use GPT-5 in VS Code Show more |
Check out multiple branches simultaneously with Git worktrees Show more |
| Enable more than 128 tools per agent request Show more |
Restore to a previous good state with chat checkpoints Show more |
Manage coding agent sessions in a dedicated view Show more |
v1.102.3: June 2025 Recovery 3
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.102.2: June 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.102.1: June 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.102.0: June 2025
Welcome to the June 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
Chat
- Explore and contribute to the open sourced GitHub Copilot Chat extension (Read our blog post).
- Generate custom instructions that reflect your project's conventions (Show more).
- Use custom modes to tailor chat for tasks like planning or research (Show more).
- Automatically approve selected terminal commands (Show more).
- Edit and resubmit previous chat requests (Show more).
MCP
- MCP support is now generally available in VS Code (Show more).
- Easily install and manage MCP servers with the MCP view and gallery (Show more).
- MCP servers as first-class resources in profiles and Settings Sync (Show more).
Editor experience
- Delegate tasks to Copilot coding agent and let it handle them in the background (Show more).
- Scroll the editor on middle click (Show more).
If you'd like to read these release notes online, go to Updates on code.visualstudio.com. Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.
v1.101.2: May 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.101.1: May 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.101.0: May 2025
Welcome to the May 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
MCP
- Expand your agent coding flow with support for prompts, resources, and sampling (Show more).
- Access MCP servers that require authentication (Show more).
- Debug MCP servers with development mode (Show more).
- Publish MCP servers from an extension (Show more).
Chat
- Group and manage related tools by combining them in a tool set (Show more).
Source Control
- View files in Source Control Graph view (Show more).
- Assign and track work for GitHub Copilot Coding Agent from within VS Code (Show more).
If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.
v1.100.3: April 2025 Recovery 3
The update addresses these issues, including a fix for a security vulnerability.
For the complete release notes go to Updates on code.visualstudio.com.
v1.100.2: April 2025 Recovery 2
The update addresses these issues, including a fix for a security vulnerability.
For the complete release notes go to Updates on code.visualstudio.com.
v1.100.1: April 2025 Recovery 1
The update addresses these issues, including a fix for a security vulnerability.
For the complete release notes go to Updates on code.visualstudio.com.
v1.100.0: April 2025
Welcome to the April 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
-
Chat
-
Chat performance
-
Editor experience
For the complete release notes go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.
v1.99.3: March 2025 Recovery 3
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.99.2: March 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.99.1: March 2025 Recovery 1
The update has a fix for the security vulnerability in this issue.
For the complete release notes go to Updates on code.visualstudio.com.
v1.99.0: March 2025
Welcome to the March 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
-
Agent mode
-
Code editing
-
Chat
-
Notebook editing
- Create and edit notebooks as easily as code files with support for edit and agent mode (more...).
For the complete release notes go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.
v1.98.2: February 2025 Recovery 2
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.98.1: February 2025 Recovery 1
The update addresses these issues.
For the complete release notes go to Updates on code.visualstudio.com.
v1.98.0: February 2025
Welcome to the February 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
- Next Edit Suggestions (preview) - Copilot predicts the next edit you are likely to make.
- Agent mode (preview) - Copilot autonomously completes tasks.
- Copilot Edits for notebooks - Iterate quickly on edits for your notebooks.
- Code search - Let Copilot find relevant files for your chat prompt.
- Terminal IntelliSense (preview) - Rich completion support for your terminal.
- Drag & drop references - Quickly open peek references in a new editor.
- Linux custom title bar - Custom title bar support for Linux enabled by default.
- [Unresolved diagnostics (preview)](https://code.
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
jshttp/cookie (cookie)
v1.1.1
Fixed
- Overwrite value in passed in options (#253)
c66147c- When
valuewas provided inserialize(key, value, { value })the value inoptionswas used instead of the value passed as an argument
- When
v1.1.0
lit/lit (lit)
v3.3.2
Patch Changes
-
#5044
0d0170e87b06edd8295a31893c820162d0f16a23Thanks @ava-cassiopeia! - Make ClassInfo mutable -
#4999
6c174c8d0ed0230ba765d699591d933d7ab5d4bb- Fix a bug in change detection with decorated standard private accessors.
csstools/postcss-plugins (postcss-preset-env)
v10.6.0
December 27, 2025
- Added
@csstools/postcss-property-rule-prelude-listCheck the plugin README for usage details. - Added
@csstools/postcss-syntax-descriptor-syntax-productionCheck the plugin README for usage details. - Updated
cssdbto8.6.0
v10.5.0
December 4, 2025
- Added
@csstools/postcss-position-area-propertyCheck the plugin README for usage details. - Updated
cssdbto8.5.2(patch)
facebook/react (react)
v19.2.3: 19.2.3 (December 11th, 2025)
React Server Components
- Add extra loop protection to React Server Functions (@sebmarkbage #35351)
v19.2.2: 19.2.2 (December 11th, 2025)
React Server Components
- Move
react-server-dom-webpack/*.unbundledto privatereact-server-dom-unbundled(@eps1lon #35290) - Patch Promise cycles and toString on Server Functions (@sebmarkbage, @unstubbable #35289)
v19.2.1: 19.2.1 (December 3rd, 2025)
React Server Components
- Bring React Server Component fixes to Server Actions (@sebmarkbage #35277)
unjs/unifont (unifont)
v0.7.1
🚀 Enhancements
- Strongly type provider name (#286)
- Throw on error (#289)
- bunny: Filter subsets (#298)
- Allow resolving specific font formats (#297)
- Export InitializedProvider and ResolveFontResult (#305)
- Allow passing provider-specific options to resolveFont (#288)
🔥 Performance
- googleicons: Use direct string slicing to drop first line of metadata response (#302)
🩹 Fixes
💅 Refactors
⚠️ Remove resolveFontFace (#284)
📖 Documentation
- Update readme and add custom provider example (#291)
- Give correct examples for experimental.glyphs (#293)
📦 Build
🏡 Chore
- Fetch-depth: 0 in release workflow (551259f)
- Update pnpm to 10.21 and enable trust policy (8a93ab7)
- Revert pnpm trust policy and restore provenance action (7855023)
- Remove unused types (#285)
- Extract unifont (#292)
- Disallow newlines in import/exports (ad66736)
- Remove T prefix from generics (9e96630)
- Remove publish step (c2ba1b7)
- Release v0.7.0 (9ac1125)
- Add changelogithub to deps (efd5d34)
- Release v0.7.1 (8f191aa)
🤖 CI
- Update release workflow to use trusted publishing (2554e6b)
⚠️ Breaking Changes
⚠️ Remove resolveFontFace (#284)
❤️ Contributors
- Daniel Roe (@danielroe)
- Florian Lefebvre (@florian-lefebvre)
- Kentaro Suzuki (@sushichan044)
v0.7.0
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 updates an outdated link in the README.md file of the tailwindcss example.
Adding a changeset that was missing.
Changes
- Add ExtractedChunk interface + extractRelevantChunks helper
- Modify buildEnvironments to extract then release outputs
- Update hook signatures to use ExtractedChunk[]
- Remove dead targets code from mutations
Testing
Docs
Last fetched: | Scheduled refresh: Every Saturday
See Customizing GitHub Activity Pages to configure your own
Inspired by prs.atinux.com
