Skip to content

AstroEco is Contributing…

Display your GitHub pull requests using astro-loader-github-prs

withastro/astro

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

  • #14607 ee52160 Thanks @simensfo! - Reintroduces css deduplication for hydrated client components. Ensures assets already added to a client chunk are not flagged as orphaned
withastro/astro

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:

  1. Svelte 5.26+ added css.hasGlobal flag to compiler output
  2. vite-plugin-svelte 5.1.0+ uses this to add cssScopeTo metadata
  3. 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

withastro/astro

Changes

What the title says

Testing

N/A

Docs

N/A

withastro/starlight

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

  • #3658 ac79329 Thanks @delucis! - Avoids adding redundant aria-current="false" attributes to sidebar entries
withastro/starlight

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).

withastro/astro

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

  • #15017 9e7a3c8 Thanks @ixchio! - Fixes CSS double-bundling when the same CSS file is imported in both a page's frontmatter and a component's script tag

  • #15225 6fe62e1 Thanks @ematipico! - Updates to the latest version of devalue

withastro/astro

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

withastro/starlight

This PR includes an addition of a link to a new Starlight community plugin.

withastro/astro

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 age confidence
svelte (source) 5.46.15.46.4 age confidence

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

Compare Source

Patch Changes

v5.46.3

Compare Source

Patch Changes
  • fix: reconnect clean deriveds when they are read in a reactive context (#​17362)

v5.46.1

Compare Source

Patch Changes
  • fix: type currentTarget in on function (#​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

Compare Source

Minor Changes
  • feat: Add csp option to render(...), and emit hashes when using hydratable (#​17338)

v5.45.10

Compare Source

Patch Changes
  • fix: race condition when importing AsyncLocalStorage (#​17350)

v5.45.9

Compare Source

Patch Changes
  • fix: correctly reschedule deferred effects when reviving a batch after async work (#​17332)

  • fix: correctly print !doctype during print (#​17341)

v5.45.8

Compare Source

Patch Changes
  • fix: set AST root.start to 0 and root.end to template.length (#​17125)

  • fix: prevent erroneous state_referenced_locally warnings on prop fallbacks (#​17329)

v5.45.7

Compare Source

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 hydratable serialization failure (#​17315)

v5.45.6

Compare Source

Patch Changes
  • fix: don't issue a11y warning for <video> without captions if it has no src (#​17311)

  • fix: add srcObject to permitted <audio>/<video> attributes (#​17310)

v5.45.5

Compare Source

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

Compare Source

Patch Changes
  • chore: move DOM-related effect properties to effect.nodes (#​17293)

  • fix: allow $props.id() to occur after an await (#​17285)

  • fix: keep reactions up to date even when read outside of effect (#​17295)

v5.45.3

Compare Source

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

Compare Source

Patch Changes
  • fix: array destructuring after await (#​17254)

  • fix: throw on invalid {@&#8203;tag}s (#​17256)

v5.45.1

Compare Source

Patch Changes
  • fix: link offscreen items and last effect in each block correctly (#​17240)

v5.45.0

Compare Source

Minor Changes

v5.44.1

Compare Source

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

Compare Source

Minor Changes

v5.43.15

Compare Source

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

Compare Source

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

Compare Source

Patch Changes
  • fix: don't set derived values during time traveling (#​17200)

v5.43.12

Compare Source

Patch Changes
  • fix: maintain correct linked list of effects when updating each blocks (#​17191)

v5.43.11

Compare Source

Patch Changes
  • perf: don't use tracing overeager during dev (#​17183)

  • fix: don't cancel transition of already outroing elements (#​17186)

v5.43.10

Compare Source

Patch Changes
  • fix: avoid other batches running with queued root effects of main batch (#​17145)

v5.43.9

Compare Source

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 @const in boundary hydrates correctly (#​17165)

  • fix: take blockers into account when creating #await blocks (#​17137)

  • fix: parallelize async @consts in the template (#​17165)

v5.43.8

Compare Source

Patch Changes
  • fix: each block losing reactivity when items removed while promise pending (#​17150)

v5.43.7

Compare Source

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

Compare Source

Patch Changes
  • fix: don't deactivate other batches (#​17132)

v5.43.5

Compare Source

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

Compare Source

Patch Changes
  • chore: simplify connection/disconnection logic (#​17105)

  • fix: reconnect deriveds to effect tree when time-travelling (#​17105)

v5.43.3

Compare Source

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

Compare Source

Patch Changes
  • fix: treat each blocks with async dependencies as uncontrolled (#​17077)

v5.43.1

Compare Source

Patch Changes
  • fix: transform $bindable after await expressions (#​17066)

v5.43.0

Compare Source

Minor Changes
Patch Changes
  • fix: settle batch after DOM updates (#​17054)

v5.42.3

Compare Source

Patch Changes
  • fix: handle <svelte:head> rendered asynchronously (#​17052)

  • fix: don't restore batch in #await (#​17051)

v5.42.2

Compare Source

Patch Changes
  • fix: better error message for global variable assignments (#​17036)

  • chore: tweak memoizer logic (#​17042)

v5.42.1

Compare Source

Patch Changes
  • fix: ignore fork discard() after commit() (#​17034)

v5.42.0

Compare Source

Minor Changes
Patch Changes
  • fix: always allow setContext before first await in component (#​17031)

  • fix: less confusing names for inspect errors (#​17026)

v5.41.4

Compare Source

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 failed snippet (#​16995)

v5.41.3

Compare Source

Patch Changes
  • chore: exclude vite optimized deps from stack traces (#​17008)

  • perf: skip repeatedly traversing the same derived (#​17016)

v5.41.2

Compare Source

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 $inspect logs come from the callsite (#​17001)

  • fix: ensure guards (eg. if, each, key) run before their contents (#​16930)

v5.41.1

Compare Source

Patch Changes
  • fix: place let: declarations before {@&#8203;const} declarations (#​16985)

  • fix: improve each_key_without_as error (#​16983)

  • chore: centralise branch management (#​16977)

v5.41.0

Compare Source

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 each block has key but no as clause (#​16966)

v5.40.2

Compare Source

Patch Changes
  • fix: add hydration markers in pending branch of SSR boundary (#​16965)

v5.40.1

Compare Source

Patch Changes
  • chore: Remove sync-in-async warning for server rendering (#​16949)

v5.40.0

Compare Source

Minor Changes
  • feat: add createContext utility for type-safe context (#​16948)
Patch Changes
  • chore: simplify batch.apply() (#​16945)

  • fix: don't rerun async effects unnecessarily (#​16944)

v5.39.13

Compare Source

Patch Changes
  • fix: add missing type for fr attribute for radialGradient tags in svg (#​16943)

  • fix: unset context on stale promises (#​16935)

v5.39.12

Compare Source

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 pending is an attribute (#​16919)

  • fix: generate correct code for each blocks with async body (#​16923)

v5.39.11

Compare Source

Patch Changes
  • fix: flush batches whenever an async value resolves (#​16912)

v5.39.10

Compare Source

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 $$props for excluded props (#​16898)

  • fix: correctly transform $derived private fields on server (#​16894)

  • fix: add UNKNOWN evaluation value before breaking for binding.initial===SnippetBlock (#​16910)

v5.39.9

Compare Source

Patch Changes
  • fix: flush when pending boundaries resolve (#​16897)

v5.39.8

Compare Source

Patch Changes
  • fix: check boundary pending attribute 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:checked error message to clarify usage with radio inputs (#​16874)

v5.39.7

Compare Source

Patch Changes
  • chore: simplify batch logic (#​16847)

  • fix: rebase pending batches when other batches are committed (#​16866)

  • fix: wrap async children in $$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

Compare Source

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

Compare Source

Patch Changes
  • fix: allow {@&#8203;html await ...} and snippets with async content on the server (#​16817)

  • fix: use nginx SSI-compatible comments for $props.id() (#​16820)

v5.39.4

Compare Source

Patch Changes
  • fix: restore hydration state after await in <script> (#​16806)

v5.39.3

Compare Source

Patch Changes

v5.39.2

Compare Source

Patch Changes
  • fix: preserve SSR context when block expressions contain await (#​16791)

  • chore: bump some devDependencies (#​16787)

v5.39.1

Compare Source

Patch Changes
  • fix: add missing type for fr attribute for radialGradient tags in svg (#​16943)

  • fix: unset context on stale promises (#​16935)

v5.39.0

Compare Source

Minor Changes
Patch Changes
  • fix: correctly SSR hidden="until-found" (#​16773)

v5.38.10

Compare Source

Patch Changes
  • fix: flush effects scheduled during boundary's pending phase (#​16738)

v5.38.9

Compare Source

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:boundary unless the boundary is an error boundary (#​16746)

v5.38.8

Compare Source

Patch Changes
  • fix: send $effect.pending count to the correct boundary (#​16732)

v5.38.7

Compare Source

Patch Changes
  • fix: replace undefined with void(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

Compare Source

Patch Changes
  • fix: don't fail on flushSync while flushing effects (#​16674)

v5.38.5

Compare Source

Patch Changes
  • fix: ensure async deriveds always get dependencies from thennable (#​16672)

v5.38.3

Compare Source

Patch Changes
  • fix: ensure correct order of template effect values (#​16655)

  • fix: allow async {@&#8203;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_loss in async mode (#​16644)

v5.38.2

Compare Source

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

Compare Source

Patch Changes
  • fix: flush effects scheduled during boundary's pending phase (#​16738)

v5.38.0

Compare Source

Minor Changes
  • feat: allow await inside @const declarations (#​16542)
Patch Changes
  • fix: remount at any hydration error (#​16248)

  • chore: emit await_reactivity_loss in for await loops (#​16521)

  • fix: emit snippet_invalid_export instead of undefined_export for exported snippets (#​16539)

v5.37.3

Compare Source

Patch Changes
  • fix: reset attribute cache after setting corresponding property (#​16543)

v5.37.2

Compare Source

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

Compare Source

Patch Changes
  • chore: remove some todos (#​16515)

  • fix: allow await expressions inside {#await ...} argument (#​16514)

  • fix: append_styles in 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

Compare Source

Minor Changes
  • feat: ignore component options in compileModule (#​16362)
Patch Changes
  • fix: always mark props as stateful (#​16504)

v5.36.17

Compare Source

Patch Changes
  • fix: throw on duplicate class field declarations (#​16502)

  • fix: add types for part attribute to svg attributes (#​16499)

v5.36.16

Compare Source

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

Compare Source

Patch Changes
  • fix: preserve dirty status of deferred effects (#​16487)

v5.36.14

Compare Source

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

Compare Source

Patch Changes
  • fix: ensure subscriptions are picked up correctly by deriveds (#​16466)

v5.36.12

Compare Source

Patch Changes
  • chore: move capture_signals to legacy module (#​16456)

v5.36.10

Compare Source

Patch Changes
  • fix: prevent batches from getting intertwined (#​16446)

v5.36.9

Compare Source

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

Compare Source

Patch Changes
  • fix: keep effect in the graph if it has an abort controller (#​16430)

  • chore: Switch payload.out to an array (#​16428)

v5.36.7

Compare Source

Patch Changes
  • fix: allow instrinsic <svelte:...> elements to inherit from SvelteHTMLElements (#​16424)

v5.36.6

Compare Source

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

Compare Source

Patch Changes
  • fix: silence $inspect errors when the effect is about to be destroyed (#​16391)

  • fix: more informative error when effects run in an infinite loop (#​16405)

v5.36.4

Compare Source

Patch Changes
  • fix: avoid microtask in flushSync (#​16394)

  • fix: ensure compiler state is reset before compilation (#​16396)

v5.36.3

Compare Source

Patch Changes
  • fix: don't log await_reactivity_loss warning when signal is read in untrack (#​16385)

  • fix: better handle $inspect on array mutations (#​16389)

  • fix: leave proxied array length untouched when deleting properties (#​16389)

  • fix: update $effect.pending() immediately after a batch is removed (#​16382)

v5.36.2

Compare Source

Patch Changes
  • fix: add $effect.pending() to types (#​16376)

  • fix: add pending snippet to <svelte:boundary> types (#​16379)

v5.36.1

Compare Source

Patch Changes
  • fix: throw on duplicate class field declarations (#​16502)

  • fix: add types for part attribute to svg attributes (#​16499)

v5.36.0

Compare Source

Minor Changes
  • feat: support await in components when using the experimental.async compiler option (#​15844)
Patch Changes
  • fix: silence a11y warning for inert elements (#​16339)

  • chore: clean up a11y analysis code (#​16345)

v5.35.7

Compare Source

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

Compare Source

Patch Changes
  • chore: simplify reaction/source ownership tracking (#​16333)

  • chore: simplify internal component pop() (#​16331)

v5.35.5

Compare Source

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

Compare Source

Patch Changes
  • fix: abort and reschedule effect processing after state change in user effect (#​16280)

v5.35.3

Compare Source

Patch Changes
  • fix: account for mounting when select_option in attribute_effect (#​16309)

  • fix: do not proxify the value assigned to a derived (#​16302)

v5.35.2

Compare Source

Patch Changes

v5.35.1

Compare Source

Patch Changes
  • feat: add parent hierarchy to __svelte_meta objects (#​16255)

v5.35.0

Compare Source

Minor Changes
Patch Changes

v5.34.9

Compare Source

Patch Changes
  • fix: ensure unowned deriveds can add themselves as reactions while connected (#​16249)

v5.34.8

Compare Source

Patch Changes
  • fix: untrack $inspect.with and 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

Compare Source

Patch Changes
  • fix: address css class matching regression (#​16204)

v5.34.6

Compare Source

Patch Changes
  • fix: match class and style directives against attribute selector (#​16179)

v5.34.5

Compare Source

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.

withastro/astro

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

withastro/astro

Changes

Format moved this comment, which broke the check

Testing

No errors in my editor

Docs

N/A

withastro/starlight

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 .content to .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.

withastro/astro

Changes

Fixed an issue where the internal timers weren't updated after the internal refactor.

Testing

Maybe with a review PR?

Docs

N/A

withastro/astro

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

withastro/astro

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

withastro/astro

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.

withastro/astro

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.

withastro/astro

Changes

This PR updates the version of @astrojs/check to fix its current versioning:

  • On 10/20/2025, 0.9.5 was released.
  • On 11/10/2025, 0.9.6-alpha.0 was released as part of the Astro v6 alpha.
  • On 11/26/2025, 0.9.6 was released due to some changes in main.
  • On 01/13/2026, 0.9.6-beta.1 was released yesterday as part of the Astro v6 beta.

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.json file version of @astrojs/check to 0.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.

withastro/astro

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

Patch Changes

  • #15208 8dbdd8e Thanks @matthewp! - Makes session.driver optional in config schema, allowing adapters to provide default drivers

    Adapters like Cloudflare, Netlify, and Node provide default session drivers, so users can now configure session options (like ttl) without explicitly specifying a driver.

  • #15214 6bab8c9 Thanks @ematipico! - Fixes an issue where the internal perfomance timers weren't correctly updated to reflect new build pipeline.

  • #15205 12adc55 Thanks @martrapp! - Fixes an issue where the astro:page-load event did not fire on initial page loads.

@astrojs/check@0.9.7-beta.1

Patch Changes

withastro/astro

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

withastro/astro

Changes

Drop cjs config support

Testing

Existing tests should pass

Docs

Might be needed

/cc @withastro/maintainers-docs for feedback!

withastro/astro

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

withastro/astro

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

@astrojs/netlify@7.0.0-beta.5

Patch Changes

  • #15187 bbb5811 Thanks @matthewp! - Update to Astro 6 beta

  • 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

@astrojs/language-server@2.16.1-beta.1

Patch Changes

@astrojs/markdown-remark@7.0.0-beta.1

Patch Changes

@astrojs/upgrade@0.7.0-beta.1

Patch Changes

withastro/astro

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 4296373 Thanks @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 new chunks option 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 phase

    Added 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 d8e64ef Thanks @ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure.

  • #15169 b803d8b Thanks @rururux! - fix: fix image 500 error when moving dist directory in standalone Node

  • #14622 9b35c62 Thanks @aprici7y! - Fixes CSS url() references to public assets returning 404 in dev mode when base path is configured

  • #15219 43df4ce Thanks @matthewp! - Upgrades the diff package to v8

@astrojs/rss@4.0.15

Patch Changes

@astrojs/netlify@6.6.4

Patch Changes

  • #15199 d8e64ef Thanks @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 a8317c1 Thanks @ematipico! - Fixes an issue where some prendered pages weren't correctly rendered when using the Node.js adapter in middleware mode.

  • #15169 b803d8b Thanks @rururux! - fix: fix image 500 error when moving dist directory in standalone Node

@astrojs/vercel@9.0.4

Patch Changes

  • #14863 29fd188 Thanks @drwpow! - Improves error message when using Node builtins inside Edge middlewares

@astrojs/language-server@2.16.3

Patch Changes

withastro/astro

Adds missing changesets for packages not published.

withastro/astro

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

withastro/astro

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 .gitignore exists but doesn't contain .vercel, prompts to add it
  • If .gitignore doesn't exist, prompts to create it with .vercel
  • If .vercel is already in .gitignore, skips silently

Closes #15058

Test plan

  1. Run astro add vercel in a project without .gitignore - should prompt to create one
  2. Run astro add vercel in a project with .gitignore without .vercel - should prompt to add it
  3. Run astro add vercel in a project with .gitignore containing .vercel - should skip silently

🤖 Generated with Claude Code

withastro/astro

Changes

Should fix the package publishing

Testing

Docs

withastro/astro

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.ts to core/<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

withastro/astro

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

withastro/docs#13039

withastro/astro

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 returns true for both files and directories.

Testing

  • Added a new src/pages.ts file in the existing alias-tsconfig fixture, matching the name of the src/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.

withastro/astro

Fixes dev server incorrectly creating dist folder and copying fonts when using q+enter to quit.

Changes

  • Added isBuild check in buildEnd() 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.

withastro/astro

Switches the tag to beta for the beta release.

withastro/astro
withastro/starlight

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 292666c Thanks @maxchang3! - Prevents unwanted font size adjustments on iOS after orientation changes.
withastro/astro

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

withastro/astro

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

withastro/astro

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@astrojs/sitemap (source) ^3.6.0^3.6.1 age confidence
@astrojs/svelte (source) ^7.2.4^7.2.5 age confidence
@astrojs/vue (source) ^5.1.3^5.1.4 age confidence
@cloudflare/workers-types ^4.20260101.0^4.20260109.0 age confidence
rollup (source) ^4.54.0^4.55.1 age confidence
wrangler (source) 4.54.04.58.0 age confidence

Release Notes

withastro/astro (@​astrojs/sitemap)

v3.6.1

Compare Source

Patch Changes
withastro/astro (@​astrojs/svelte)

v7.2.5

Compare Source

Patch Changes
withastro/astro (@​astrojs/vue)

v5.1.4

Compare Source

Patch Changes
cloudflare/workerd (@​cloudflare/workers-types)

v4.20260109.0

Compare Source

v4.20260108.0

Compare Source

v4.20260107.1

Compare Source

v4.20260103.0

Compare Source

rollup/rollup (rollup)

v4.55.1

Compare Source

2026-01-05

Bug Fixes
  • Fix artifact reference for OpenBSD (#​6231)
Pull Requests
cloudflare/workers-sdk (wrangler)

v4.58.0

Compare Source

Minor Changes
  • #​11728 7d63fa5 Thanks @​NuroDev! - Add command categories to wrangler help menu

    The 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 97e67b9 Thanks @​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

Compare Source

Minor Changes
  • #​11682 b993d95 Thanks @​ascorbic! - Add wrangler auth token command 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_TOKEN environment variable

    Use --json to get structured output including the token type, which also supports API key/email authentication:

    wrangler auth token --json

    This is similar to gh auth token in the GitHub CLI.

  • #​11702 f612b46 Thanks @​gpanders! - Add support for trusted_user_ca_keys in Wrangler

    You 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 9e360f6 Thanks @​ichernetsky-cf! - Drop deprecated containers observability.logging field

  • #​11616 fc95831 Thanks @​NuroDev! - Add type generation support to wrangler dev

    You can now have your worker configuration types be automatically generated when the local Wrangler development server starts.

    To use it you can either:

    1. Add the --types flag when running wrangler dev.
    2. Update your Wrangler configuration file to add the new dev.generate_types boolean property.
    {
    	"$schema": "node_modules/wrangler/config-schema.json",
    	"name": "example",
    	"main": "src/index.ts",
    	"compatibility_date": "2025-12-12",
    	"dev": {
    		"generate_types": true
    	}
    }
  • #​11524 b0dbf1a Thanks @​penalosa! - Add hidden CLI flags to wrangler setup for suppressing output

    Two 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 69979a3 Thanks @​MattieTK! - Add analytics properties to secret commands for better usage insights

    Secret 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 operation
    • secretSource: 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 c54f8da Thanks @​jamesopstad! - Add default Text module rule for .sql files.

    This enables importing .sql files directly in Wrangler and the Cloudflare Vite plugin without extra configuration.

  • #​11692 df1f9c9 Thanks @​dario-piotrowicz! - Support Waku in autoconfig

  • #​11549 d059f69 Thanks @​dario-piotrowicz! - Support Vike in autoconfig

Patch Changes
  • #​11683 02fbd22 Thanks @​ascorbic! - Display a warning when authentication errors occur and the account_id in 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 your wrangler.toml or wrangler.jsonc file.

  • #​11704 77078ef Thanks @​dario-piotrowicz! - Fix autoconfig handling of Next.js apps with CJS config files and incompatible Next.js versions

    Previously, wrangler setup and wrangler deploy --x-autoconfig would 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 2510723 Thanks @​dario-piotrowicz! - wrangler deploy delegates to opennextjs-cloudflare deploy only when the --x-autoconfig flag is used

    The wrangler deploy command has been updated to delegate to the opennextjs-cloudflare deploy command 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-autoconfig flag is set (since this behavior, although generally valid, is only strictly necessary for the wrangler deploy's autoconfig flow).

  • #​11764 9f6dd71 Thanks @​terakoya76! - Fix R2 Data Catalog snapshot-expiration API field names

    The wrangler r2 bucket catalog snapshot-expiration enable command 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-days and --retain-last) remain unchanged.

  • #​11651 d123ad0 Thanks @​dario-piotrowicz! - Surface a more helpful error message for TOML Date, Date-Time, and Time values in vars

    TOML parses unquoted date/time values like DATE = 2024-01-01 as 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 5121b23 Thanks @​southpolesteve! - Show an error when D1 migration commands are run without a configuration file

    Previously, running wrangler d1 migrations apply, wrangler d1 migrations list, or wrangler d1 migrations create in 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 82e7e90 Thanks @​dario-piotrowicz! - Fix arguments passed to wrangler deploy not being forwarded to opennextjs-cloudflare deploy

    wrangler deploy run in an open-next project delegates to opennextjs-cloudflare deploy, as part of this all the arguments passed to wrangler deploy need be forwarded to opennextjs-cloudflare deploy, before the arguments would be lost, now they will be successfully forwarded (for example wrangler deploy --keep-vars will call opennextjs-cloudflare deploy --keep-vars)

  • #​10750 4688f59 Thanks @​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 b827893 Thanks @​MattieTK! - Breaks out version numbers into sortable number types for analytics logging

  • Updated dependencies [65d1850, 1615fce, b2769bf, 554a4df, 8eede3f, 6a05b1c, 62fd118, a7e9f80, eac5cf7]:

v4.56.0

Compare Source

Minor Changes
  • #​11196 171cfd9 Thanks @​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 472cf72 Thanks @​vovacf201! - feat: add R2 Data Catalog snapshot expiration commands

    Adds new commands to manage automatic snapshot expiration for R2 Data Catalog tables:

    • wrangler r2 bucket catalog snapshot-expiration enable - Enable automatic snapshot expiration
    • wrangler 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 428ae9e Thanks @​ascorbic! - fix: respect TypeScript path aliases when resolving non-JS modules with module rules

    When importing non-JavaScript files (like .graphql, .txt, etc.) using TypeScript path aliases defined in tsconfig.json, Wrangler's module-collection plugin now correctly resolves these imports. Previously, path aliases were only respected for JavaScript/TypeScript files, causing imports like import schema from '~lib/schema.graphql' to fail when using module rules.

  • #​11647 c0e249e Thanks @​dario-piotrowicz! - The auto-configuration logic present in wrangler setup and wrangler deploy --x-autoconfig cannot reliably handle Hono projects, so in these cases make sure to properly error saying that automatically configuring such projects is not supported.

  • #​11694 3853200 Thanks @​dario-piotrowicz! - fix: improve the open-next detection that wrangler deploy performs to eliminate false positives for non open-next projects

  • Updated dependencies [ae1ad22, 737c0f4]:

    • miniflare@​4.20251217.0

v4.55.0

Compare Source

Minor Changes
Patch Changes
  • #​11615 ed42010 Thanks @​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 6b28de1 Thanks @​petebacondarwin! - update command status text and formatting

  • #​11578 4201472 Thanks @​gpanders! - Fixup UX papercuts in containers SSH

  • #​11550 95d81e1 Thanks @​hiendv! - Fix "TypeError: Body is unusable: Body has already been read" when failing to exchange oauth code because of double response.text().

  • Updated dependencies [5d085fb, b75b710, 1e9be12]:

    • miniflare@​4.20251213.0

v4.54.0

Compare Source

Minor Changes
  • #​11512 c15e99e Thanks @​emily-shen! - Enable using ctx.exports with containers

    You 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 like env.DO, you should now access with ctx.exports.MyDOClassname.

    Refer to the docs for more information on using ctx.exports.

  • #​11508 b17797c Thanks @​dario-piotrowicz! - Wrangler will no longer try to add additional configuration to projects using @cloudflare/vite-plugin when deploying or running wrangler setup

  • #​11508 b17797c Thanks @​dario-piotrowicz! - When a Vite project is detected, install @cloudflare/vite-plugin

  • #​11576 bb47e20 Thanks @​dario-piotrowicz! - Support Analog projects in autoconfig

  • #​10582 991760d Thanks @​flakey5! - Add containers ssh command

Patch Changes

v4.53.0

Compare Source

Minor Changes
  • #​11500 af54c63 Thanks @​dario-piotrowicz! - Add new autoconfig_summary field to the deploy output entry

    This change augments wrangler deploy output being printed to WRANGLER_OUTPUT_FILE_DIRECTORY or WRANGLER_OUTPUT_FILE_PATH to also include a new autoconfig_summary field containing the possible summary details for the autoconfig process (the field is undefined if autoconfig didn't run).

    Note: the field is experimental and could change while autoconfig is not GA

  • #​11477 9988cc9 Thanks @​ascorbic! - Support Nuxt in autoconfig

  • #​11472 ce295bf Thanks @​dario-piotrowicz! - Support Qwik projects in autoconfig

  • #​10937 9514c9a Thanks @​ReppCodes! - Add support for "targeted" placement mode with region, host, and hostname fields

    This change adds a new mode to placement configuration. 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 provider
    • host: Specify a host with (required) port (e.g., "example.com:8123") to target a TCP service
    • hostname: 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 ac861f8 Thanks @​penalosa! - Add React Router support in autoconfig

  • #​11506 79d30d4 Thanks @​vicb! - Set the target JS version to ES2024

Patch Changes

v4.52.1

Compare Source

Patch Changes

v4.52.0

Compare Source

Minor Changes
  • #​11416 abe49d8 Thanks @​dario-piotrowicz! - Remove the wrangler deploy's --x-remote-diff-check experimental flag

    The 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 f29e699 Thanks @​ascorbic! - Export unstable helpers useful for generating wrangler config

  • #​11389 2342d2f Thanks @​dario-piotrowicz! - Improve the wrangler deploy flow to also check for potential overrides of secrets.

    Now when you run wrangler deploy Wrangler 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 9a1de61 Thanks @​penalosa! - Support TanStack Start in autoconfig

  • #​11360 6b38532 Thanks @​emily-shen! - Containers: Allow users to directly authenticate external image registries in local dev

    Previously, 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 login etc.), and Wrangler or Vite will be able to pull the image specified in the containers.image field in your config file.

    The Cloudflare-managed registry (registry.cloudflare.com) currently still does not work with the Vite plugin.

  • #​11009 e4ddbc2 Thanks @​dario-piotrowicz! - Allow users to provide an account_id as part of the WorkerConfigObject they pass to maybeStartOrUpdateRemoteProxySession

  • #​11478 2aec2b4 Thanks @​dario-piotrowicz! - Support SolidStart in autoconfig

  • #​11330 5a873bb Thanks @​dario-piotrowicz! - Support Angular projects in autoconfig

  • #​11449 e7b690b Thanks @​penalosa! - Delegate generation of HTTPS certificates to Miniflare

  • #​11448 2b4813b Thanks @​edmundhung! - Bumps esbuild version to 0.27.0

  • #​11335 c47ad11 Thanks @​dario-piotrowicz! - Support internal-only undocumented cross_account_grant service binding property

  • #​11346 a977701 Thanks @​penalosa! - We're soon going to make backend changes that mean that wrangler dev --remote sessions will no longer have an associated inspector connection. In advance of these backend changes, we've enabled a new wrangler tail-based logging strategy for wrangler dev --remote. For now, you can revert to the previous logging strategy with wrangler 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 b154de2 Thanks @​vicb! - Use more workerd native modules

    Node modules punycode, trace_events, cluster, wasi, and domains will be used when enabled
    via a compatibility flag or by default when the compatibility date is greater or equal to 2025-12-04.

  • #​11452 76f0540 Thanks @​penalosa! - Remove uses of eval() from the Wrangler bundle

  • #​11284 695fa25 Thanks @​dom96! - Removes duplicate module warnings when vendoring Python packages

  • #​11249 504e258 Thanks @​dario-piotrowicz! - fix: Generalize autoconfig wording

    Generalize the autoconfig wording so that when it doesn't specifically mention "deployment" (since it can be run via wrangler setup or the autoconfig programmatic API)

  • #​11455 d25f7e2 Thanks @​dario-piotrowicz! - Fix autoconfig using absolute paths for static projects

    Running the experimental autoconfig logic through wrangler setup and wrangler deploy --x-autoconfig on 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 1cfae2d Thanks @​edmundhung! - Explicitly close FileHandle in wrangler d1 execute to support Node 25

  • #​11383 1d685cb Thanks @​dario-piotrowicz! - Fix: ensure that when a remote proxy session creation fails a hard error is surfaced to the user (both in wrangler dev and in the programmatic API).

    When using remote bindings, either with wrangler dev or via startRemoteProxySession/maybeStartOrUpdateRemoteProxySession the 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 edf896d Thanks @​ascorbic! - Use correctly-formatted names when displaying detected framework details

  • #​11461 9eaa9e2 Thanks @​dario-piotrowicz! - Update the structure of the configure method of autoconfig frameworks

    Update the signature of the configure function of autoconfig frameworks (AutoconfigDetails#Framework), before they would return a RawConfig object to use to update the project's wrangler config file, now they return an object that includes the RawConfig and that can potentially also hold additional data relevant to the configuration.

  • Updated dependencies [2b4813b, b154de2, 5ee3780, 6e63b57, 71ab562, 5e937c1]:

v4.51.0

Compare Source

Minor Changes
  • #​11345 d524e55 Thanks @​penalosa! - Enable experimental support for autoconfig-powered Astro projects

  • #​11228 43903a3 Thanks @​petebacondarwin! - Support CLOUDFLARE_ENV environment variable for selecting the active environment

    This change enables users to select the environment for commands such as CLOUDFLARE_ENV=prod wrangler versions upload. The --env command line argument takes precedence.

    The CLOUDFLARE_ENV environment variable is mostly used with the @cloudflare/vite-plugin to 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

v4.50.0

Compare Source

Minor Changes
  • #​11219 524a6e5 Thanks @​Ltadrian! - Implement Hyperdrive binding TLS miniflare proxy. This will allow for wrangler dev hyperdrive bindings to connect to external
    databases that require TLS.

  • #​11233 c922a81 Thanks @​emily-shen! - Add containers.unsafe to allow internal users to use additional container features

Patch Changes

[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.

withastro/astro

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!

withastro/astro

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/node adapter
  • 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.

withastro/astro

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 resolveOutDir function is based on resolveClientDir found in the Node adapter's serve-static.ts file.
  • The assetsDir variable previously exported from vite-plugin-assets.ts was not imported by any files, so it has been removed. Instead, serverDir is 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.

withastro/astro

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.

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.

withastro/astro

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.

withastro/astro

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.

withastro/astro

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 37ab65a Thanks @florian-lefebvre! - Adds Google Icons to built-in font providers

    To 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 a77c4f4 Thanks @matthewp! - Fixes hydration for framework components inside MDX when using Astro.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 9b726c4 Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Changes how font providers are implemented with updates to the FontProvider type

    This is an implementation detail that changes how font providers are created. This process allows Astro to take more control rather than relying directly on unifont types. 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 on unifont types will require an update to your project code.

    Previously, an Astro FontProvider was made of a config and a runtime part. It relied directly on unifont types, 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 unifont font provider, you will now need to write an Astro FontProvider using 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 9cd5b87 Thanks @matthewp! - Fixes scripts in components not rendering when a sibling <Fragment slot="..."> exists but is unused

withastro/astro

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

withastro/astro

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

withastro/astro

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!

withastro/astro

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

withastro/astro

Changes

  • Fixes #14518
  • Framework components with client:* directives inside named slots now correctly hydrate when using Astro.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.

withastro/astro

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.ts to 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

withastro/astro

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

withastro/astro

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 class to className and generated unique key props
  • 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

withastro/astro

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

withastro/astro

Changes

As per title

Testing

Docs

withastro/astro

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.

withastro/astro

Closes #15136

withastro/astro

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.

withastro/astro

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-reload Vite 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-css hotUpdate plugin 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 calling invalidateModule() 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.

withastro/astro

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 81db3c0 Thanks @leonace924! - Fixes an issue where requests with query parameters to the base path would return a 404 if trailingSlash was not 'ignore' in development

  • #15152 39ee41f Thanks @rururux! - Fixes a case where context.cookies.set() would be overriden when setting cookies via response headers in development

  • #15140 6f6f8f8 Thanks @cameronraysmith! - Fixes esbuild warning due to dead code in assets virtual module

  • #15127 2cff904 Thanks @Princesseuh! - Updates "Unsupported page types found" error to only appear in more realistic cases

  • #15149 34f84c2 Thanks @rahuld109! - Skips "Use the Image component" audit warning for images inside framework components (React, Vue, Svelte, etc.)

astro-vscode@2.16.7

Patch Changes

withastro/astro

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

withastro/astro

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 FontProvider type 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

withastro/astro

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

withastro/astro

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

withastro/astro

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 6feb0d7 Thanks @florian-lefebvre! - Improves JSDoc annotations for AstroGlobal, AstroSharedContext and APIContext types

  • #15176 9265546 Thanks @matthewp! - Fixes hydration for framework components inside MDX when using Astro.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 6feb0d7 Thanks @florian-lefebvre! - Fixes remote images Etag header handling by disabling internal cache

  • #15121 06261e0 Thanks @ematipico! - Fixes a bug where the Astro, with the Cloudlfare integration, couldn't correctly serve certain routes in the development server.

  • #15125 6feb0d7 Thanks @florian-lefebvre! - Fixes images not working in development when using setups with port forwarding

  • #15137 2f70bf1 Thanks @matthewp! - Adds legacy.collectionsBackwardsCompat flag 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' or type: 'data'
    • Config files located at src/content/config.ts (legacy location)
    • Legacy entry API: entry.slug and entry.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 6feb0d7 Thanks @florian-lefebvre! - Reduces Astro’s install size by around 8 MB

  • #15125 6feb0d7 Thanks @florian-lefebvre! - Enables the ClientRouter to preserve the original hash part of the target URL during server side redirects.

  • #15125 6feb0d7 Thanks @florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Changes the font format downloaded by default when using the experimental Fonts API. Additionally, adds a new formats configuration option to specify which font formats to download.

    Previously, Astro was opinionated about which font sources would be kept for usage, mainly keeping woff2 and woff files.

    You can now specify what font formats should be downloaded (if available). Only woff2 files are downloaded by default.

    What should I do?

    If you were previously relying on Astro downloading the woff format, you will now need to specify this explicitly with the new formats configuration 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 8c8aee6 Thanks @HiDeoo! - Fixes an issue when importing using an import alias a file with a name matching a directory name.

  • #15176 9265546 Thanks @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 f67b738 Thanks @gameroman! - Updates wrangler dependency to be a peerDependency over a dependency

  • #15121 06261e0 Thanks @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 54dc11d Thanks @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

@astrojs/vercel@10.0.0-beta.0

Patch Changes

@astrojs/vue@6.0.0-beta.0

Patch Changes

astro-vscode@2.16.9-beta.0

Patch Changes

  • #15125 6feb0d7 Thanks @florian-lefebvre! - Fix "Find All References" and other TypeScript features by ensuring the plugin bundle is correctly included

  • #15125 6feb0d7 Thanks @florian-lefebvre! - Fixes syntax highlighting sometimes not working when the frontmatter or script tags ended with certain TypeScript constructs

withastro/astro

Changes

Testing

Docs

withastro/astro

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 empty
  • packages/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:

  1. /base?query=test → strips to /?query=test → normalizes to empty string pathname for route matching ✅
  2. /base → strips to empty string → normalizes correctly ✅
  3. /base/ → strips to / → normalizes correctly ✅
  • tested with minimal example
{01D2EAEA-075C-46BD-A5E4-D6BE4694A946} {BEBBE330-54BE-4976-950F-B6ECB59B73BC} {2D884BBA-C1FE-490C-BCC6-467CE5C35C21}

Docs

Contribution by Gittensor, see my contribution statistics at https://gittensor.io/miners/details?githubId=42954461

withastro/astro

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.49MB

This 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.

withastro/astro

Changes

  • Found in #15120
  • Many types were duplicated, this cleans them up

Testing

Manually in examples, should pass

Docs

Changeset + jsdoc

withastro/starlight

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

withastro/astro

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

withastro/astro

Changes

  • Stacked on top of #15117
  • Cleans types to be more consistent with other Astro APIs

Testing

Should pass

Docs

withastro/astro

Changes

  • Stacked on top of #15111
  • Closes #14819
  • Removes the dedupeFontFaces() function and its associated tests since the logic now lives in unifont itself
  • Upgrades unifont to latest. This version comes with new stuff and this PR updates Astro accordingly to allow passing formats manually

Testing

Updated, should pass

Docs

withastro/astro

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)

withastro/astro

Changes

Testing

Docs

withastro/astro

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.

withastro/starlight

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-adjust is 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

  1. Safari Web Content Guide

  2. Changeset 145168 in webkit, "Remove desktop version of -webkit-text-size-adjust property."

  3. Can I use text-size-adjust ?

  4. text-size-adjust - CSS | MDN

withastro/starlight

Adds complete Greek (el) translations for Starlight’s UI.
Based on en.json, all keys included.

withastro/astro

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.astro with a <script> tag to the existing alias-tsconfig fixture, 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.

withastro/astro

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 FontResolver definition, 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

withastro/astro

Updates the changeset to minor as well as explain a little more the reasoning.

withastro/astro

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

withastro/astro

Changes

Update prettier extension to new one

Testing

Not needed

Docs

Not needed

withastro/astro

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

withastro/astro

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)

image-size PR

withastro/astro

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update
@astrojs/compiler (source) ^2.10.3^2.13.0 age confidence dependencies patch
@jridgewell/sourcemap-codec (source) ^1.4.15^1.5.5 age confidence dependencies patch
@types/mocha (source) ^10.0.1^10.0.10 age confidence devDependencies patch
@types/semver (source) ^7.3.13^7.7.1 age confidence devDependencies patch
@types/vscode (source) ^1.82.0^1.107.0 age confidence devDependencies minor
@types/yargs (source) ^17.0.33^17.0.35 age confidence devDependencies patch
@volar/kit (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/language-core (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@volar/language-core (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/language-server (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@volar/language-server (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/language-service (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/test-utils (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@volar/typescript (source) ~2.4.23~2.4.27 age confidence dependencies patch
@volar/typescript (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@volar/vscode (source) ~2.4.23~2.4.27 age confidence devDependencies patch
@vscode/vsce (source) 2.30.02.32.0 age confidence devDependencies minor
chokidar ^4.0.1^4.0.3 age confidence dependencies patch
js-yaml ^4.1.0^4.1.1 age confidence devDependencies patch
mocha (source) ^10.2.0^10.8.2 age confidence devDependencies patch
ovsx (source) ^0.10.6^0.10.7 age confidence devDependencies patch
prettier (source) ^3.6.2^3.7.4 age confidence dependencies patch
semver ^7.3.8^7.7.3 age confidence dependencies patch
svelte (source) ^4.2.10^4.2.20 age confidence dependencies patch
tsx (source) ^4.20.6^4.21.0 age confidence devDependencies minor
volar-service-css (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-emmet (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-html (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-prettier (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-typescript (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-typescript-twoslash-queries (source) 0.0.670.0.68 age confidence dependencies patch
volar-service-yaml (source) 0.0.670.0.68 age confidence dependencies patch
vscode ^1.90.0^1.999.0 age confidence engines minor
vscode-html-languageservice ^5.5.2^5.6.1 age confidence dependencies patch
vscode-languageserver-textdocument (source) ^1.0.11^1.0.12 age confidence dependencies patch
vscode-languageserver-textdocument (source) ^1.0.11^1.0.12 age confidence devDependencies patch
vscode-tmgrammar-test ^0.1.2^0.1.3 age confidence devDependencies patch
vscode-uri ^3.0.8^3.1.0 age confidence devDependencies patch
yaml (source) ^2.5.0^2.8.2 age confidence dependencies patch

Release Notes

volarjs/volar.js (@​volar/kit)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/language-core)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/language-server)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/language-service)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/test-utils)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/typescript)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

volarjs/volar.js (@​volar/vscode)

v2.4.27

Compare Source

v2.4.26

Compare Source

v2.4.25

Compare Source

v2.4.24

Compare Source

Microsoft/vsce (@​vscode/vsce)

v2.32.0

Compare Source

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

Compare Source

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

Compare Source

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.

eclipse/openvsx (ovsx)

v0.10.7

Compare Source

Dependencies
  • Upgrade glob from 10.3.10 to 10.5.0 (#​1423)
  • Upgrade js-yaml from 4.1.0 to 4.1.1 (#​1417)

privatenumber/tsx (tsx)

v4.21.0

Compare Source

volarjs/services (volar-service-css)

v0.0.68

Compare Source

volarjs/services (volar-service-emmet)

v0.0.68

Compare Source

volarjs/services (volar-service-html)

v0.0.68

Compare Source

volarjs/services (volar-service-prettier)

v0.0.68

Compare Source

volarjs/services (volar-service-typescript)

v0.0.68

Compare Source

volarjs/services (volar-service-typescript-twoslash-queries)

v0.0.68

Compare Source

volarjs/services (volar-service-yaml)

v0.0.68

Compare Source

microsoft/vscode (vscode)

v1.999.0

Compare Source

v1.107.1: November 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.107.0: November 2025

Compare Source

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.

VS Code November 2025 release image

v1.106.3: October 2025 Recovery 3

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.106.2: October 2025 Recovery 2

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.106.1: October 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.106.0: October 2025

Compare Source

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

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.105.0: September 2025

Compare Source

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

Compare Source

The update addresses these issues.

v1.104.2: August 2025 Recovery 2

Compare Source

The update addresses these issues.

v1.104.1: August 2025 Recovery 1

Compare Source

The update addresses these issues.

v1.104.0: August 2025

Compare Source

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

Compare Source

The update addresses these issues.

v1.103.1: July 2025 Recovery 1

Compare Source

The update adds GPT-5 prompt improvements, support for GPT-5 mini, and addresses these issues.

v1.103.0: July 2025

Compare Source


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

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.102.2: June 2025 Recovery 2

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.102.1: June 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.102.0: June 2025

Compare Source

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

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.101.1: May 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.101.0: May 2025

Compare Source

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

Compare Source

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

Compare Source

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

Compare Source

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

Compare Source

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

    • Custom instructions and reusable prompts (more...).
    • Smarter results with tools for GitHub, extensions, and notebooks (more...).
    • Image and Streamable HTTP support for MCP (more...).
  • Chat performance

    • Faster responses on repeat chat requests (more...).
    • Faster edits in agent mode (more...).
  • Editor experience

    • Improved multi-window support for chat and editors (more...).
    • Staged changes now easier to identify (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.99.3: March 2025 Recovery 3

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.99.2: March 2025 Recovery 2

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.99.1: March 2025 Recovery 1

Compare Source

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

Compare Source

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

    • Agent mode is available in VS Code Stable. Enable it by setting chat.agent.enabled:true (more...).
    • Extend agent mode with Model Context Protocol (MCP) server tools (more...).
    • Try the new built-in tools in agent mode for fetching web content, finding symbol references, and deep thinking (more...).
  • Code editing

    • Next Edit Suggestions is now generally available (more...).
    • Benefit from fewer distractions such as diagnostics events while AI edits are applied in the editor (more...).
  • Chat

    • Use your own API keys to access more language models in chat (preview) (more...).
    • Easily switch between ask, edit, and agent mode from the unified chat experience (more...).
    • Experience improved workspace search speed and accuracy with instant remote workspace indexing (more...).
  • 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

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.98.1: February 2025 Recovery 1

Compare Source

The update addresses these issues.

For the complete release notes go to Updates on code.visualstudio.com.

v1.98.0: February 2025

Compare Source

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:


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.

withastro/astro

This PR contains the following updates:

Package Change Age Confidence
@astrojs/check (source) ^0.9.5^0.9.6 age confidence
@playwright/test (source) 1.56.11.57.0 age confidence
@tailwindcss/vite (source) ^4.1.17^4.1.18 age confidence
autoprefixer ^10.4.22^10.4.23 age confidence
cookie ^1.0.2^1.1.1 age confidence
devalue ^5.5.0^5.6.1 age confidence
expect-type ^1.2.2^1.3.0 age confidence
lit (source) ^3.3.1^3.3.2 age confidence
package-manager-detector ^1.5.0^1.6.0 age confidence
postcss-preset-env (source) ^10.4.0^10.6.0 age confidence
preact (source) ^10.27.2^10.28.1 age confidence
react (source) ^19.2.0^19.2.3 age confidence
react (source) 19.2.019.2.3 age confidence
react-dom (source) ^19.2.0^19.2.3 age confidence
react-dom (source) 19.2.019.2.3 age confidence
rollup (source) ^4.53.3^4.54.0 age confidence
sass ^1.94.2^1.97.1 age confidence
shiki (source) ^3.15.0^3.20.0 age confidence
smol-toml ^1.5.2^1.6.0 age confidence
svelte (source) ^5.43.14^5.46.1 age confidence
tailwindcss (source) ^4.1.17^4.1.18 age confidence
unifont ~0.6.0~0.7.1 age confidence
vue (source) ^3.5.24^3.5.26 age confidence
zod-to-json-schema ^3.25.0^3.25.1 age confidence

Release Notes

withastro/astro (@​astrojs/check)

v0.9.6

Patch Changes
microsoft/playwright (@​playwright/test)

v1.57.0

Compare Source

postcss/autoprefixer (autoprefixer)

v10.4.23

Compare Source

jshttp/cookie (cookie)

v1.1.1

Compare Source

Fixed

  • Overwrite value in passed in options (#​253) c66147c
    • When value was provided in serialize(key, value, { value }) the value in options was used instead of the value passed as an argument

v1.1.0

Compare Source

lit/lit (lit)

v3.3.2

Compare Source

Patch Changes
csstools/postcss-plugins (postcss-preset-env)

v10.6.0

Compare Source

December 27, 2025

v10.5.0

Compare Source

December 4, 2025

facebook/react (react)

v19.2.3: 19.2.3 (December 11th, 2025)

Compare Source

React Server Components

v19.2.2: 19.2.2 (December 11th, 2025)

Compare Source

React Server Components

v19.2.1: 19.2.1 (December 3rd, 2025)

Compare Source

React Server Components
unjs/unifont (unifont)

v0.7.1

Compare Source

compare changes

🚀 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
  • Increase strength of provider types (#​290)
  • Isolate cache keys by provider name and options (#​281)
💅 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

v0.7.0

Compare Source

StefanTerdell/zod-to-json-schema (zod-to-json-schema)

v3.25.1

Compare Source


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.

withastro/astro

This PR updates an outdated link in the README.md file of the tailwindcss example.

withastro/astro

Adding a changeset that was missing.

withastro/astro

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

withastro/starlight

Add icons for Chrome, Edge, Firefox and Safari

Description

  • Closes #3568
  • Just added 4 new icons

Last fetched:  |  Scheduled refresh: Every Saturday

See Customizing GitHub Activity Pages to configure your own

Inspired by prs.atinux.com