AstroEco is Contributing…
Display your GitHub pull requests using astro-loader-github-prs
Description
Update the Catppuccin theme href to https://starlight.catppuccin.com/

Changes
- The google config was not passed to the unifont provider (reported on Discord)
Testing
N/A
Docs
Changeset, withastro/docs#11484
Description
This PR is a bit of a blast from the past, as it fixes an issue I initially spotted in Astro Docs almost a year ago when copying headings with either double click (select a word) or triple click (select a paragraph/logical unit) with a different behavior between browsers.
Chrome
Double clicking and copying a heading with a single word or the last word of a multiple words heading will inject Section
in the clipboard text.
For example, going to this page and double clicking and copying the heading Usage
will copy UsageSection
instead of Usage
. Double clicking and copying the word icons
in the heading Customize icons
will copy iconsSection
instead of icons
.
Triple clicking is working as expected.
Firefox
Triple clicking a heading and copying will inject the entire heading anchor link screen reader text in the clipboard text.
For example, going to this page and triple clicking and copying the heading Customize icons
will copy Customize iconsSection titled “Customize icons”
instead of Customize icons
.
Safari
Double clicking and copying a heading with a single word or the last word of a multiple words heading will inject Section
in the clipboard text.
For example, going to this page and double clicking and copying the heading Usage
will copy UsageSection
instead of Usage
. Double clicking and copying the word icons
in the heading Customize icons
will copy iconsSection
instead of icons
.
Triple clicking is working as expected.
Changes
The good thing is that I also fixed the issue in withastro/docs#8015 at the time. This PR uses the same approach to fix the issue in Starlight. The original PR contains a breakdown of various approaches I tried and why I used the one I did so I'm not going to repeat it here.

Changes
When running the latest version of create-astro
with pnpm, I'm getting the following error:
▲ error Error
▲ error Dependencies failed to install, please run pnpm install to install them manually after setup.
✔ Project initialized!
■ Template copied
■ Dependencies installed
After adding some logging, the underlying issue seems to be:
ERR_PNPM_MISSING_PACKAGE_NAME `pnpm add` requires the package name
In #13395, the install()
function was updated to use pnpm add
instead of pnpm install
without a changeset so it ended up being released 2 days ago with version 4.11.2
. This PR reverts that change.
The install()
function seems to only be meant to install all dependencies (and never a single package) so I'm not sure if there is a reason I'm potentially missing for the change or not.
Testing
I tested locally using node create-astro.mjs
but I don't know how to force a specific package manager with this method so I temporarily hardcoded pnpm
. Without the fix, I properly reproduced the error. After the fix, the issue seems to be resolved.
Looks like most of the tests for create-astro
are using dryRun: true
so not sure if/how we should add a test for this.
Docs
This is a bug fix that does not require any documentation change.

Changes
- Add
SvgComponent
type as per discussion here.
Testing
No tests needed, I think?
Docs
Docs will need to mention that the SvgComponent
component is available for use, similar to the mentions of other types like ImageMetadata
.
/cc @withastro/maintainers-docs for feedback!

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.7.4
Patch Changes
-
#13647
ffbe8f2
Thanks @ascorbic! - Fixes a bug that caused a session error to be logged when using actions without sessions -
#13646
6744842
Thanks @florian-lefebvre! - Fixes a case where extra font sources were removed when using the experimental fonts API -
#13635
d75cac4
Thanks @florian-lefebvre! - The experimental fonts API now generates optimized fallbacks for every weight and style

Changes
Currently the action API context is created by destructuring the unused properties of the context object. This was causing warnings to be logged because it copies by value, meaning the session get method was being called.
This PR switches to using Object.create
and getOwnPropertyDescriptors
, which preserves the accessors on the object, menaing the session
getter isn't called unless the user accesses it.
Fixes #13644
Testing
Tested with the repro for #13644
Docs

Changes
- In #13594 in order to avoid too many preloads, I filtered the font sources so there are less
- However, this was not the right fix. Instead we want to preserve all sources but only add the first one to be preloaded
Testing
Manual
Docs
Changeset
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-tailwind@4.0.1
Patch Changes
- #3132
5959919
Thanks @HiDeoo! - Fixes an issue where all border styles were not reset by the Starlight’s Tailwind compatibility package like in Tailwind base styles.

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.7.3
Patch Changes
-
#13643
67b7493
Thanks @tanishqmanuja! - Fixes a case where the font facesrc
format would be invalid when using the experimental fonts API -
#13639
23410c6
Thanks @florian-lefebvre! - Fixes a case where some font families would not be downloaded when using the same font provider several times, using the experimental fonts API

Description
Fixes a small mistake in the new content in pages.mdx

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
create-astro@4.11.2
Patch Changes
- #13636
a9fd03f
Thanks @sarah11918! - Updates the wording for choosing the "minimal" starter template options

Changes
- Closes #13637
- Unifont deduplicates providers based on the provider name. However in our case the same provider can be called with a different config (eg. adobe), so we have some logic to hash the config and dedupe
- However, the logic AND the tests were wrong because in certain cases, the family provider name was not assigned a value and as such, the family could not be resolved by unifont
Testing
Tests updated + manual
Docs
Changeset

Changes
A trivial text change so I can add the proper changeset this time 😅
(Follow up to #13603 which added the minimal template, but didn't trigger an update to the create-astro
package)
Testing
No tests.
Docs
When this is released, I can improve instructions to the tutorial in docs
Description
The Starlight Tailwind compatibility package restores only some crucial styles from Tailwind Preflight instead of using it entirely.
This previous version of the Tailwind compatibility package used to restore a rule resetting all border styles to allow adding a border to an element by just adding a border-width.
The new version is no longer restoring this rule (which still exists in Tailwind v4) which could cause updating users to have default borders on their buttons. This PR adds it back to the compatibility package.
For example, this issue was initially reported while updating the Cloudflare Docs, here is how it looks with Tailwind v4 without the fix and with the fix:
Before | After |
---|---|
![]() |
![]() |

Changes
- RFC feedback
- Before this PR, we were generating 1 fallback
@font-face
definition based on the first font file we found for a given family - However, it wasn't great because the fallback would only be accurate for a given weight/style which was defeating its purpose
- Now we generate a fallback for each weight/style
- Fixes a few cases where useless duplicate fallbacks could be created
Testing
Tests updated, tested manually
Docs
Changeset

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-tailwind@4.0.0
Major Changes
-
#2322
f14eb0c
Thanks @HiDeoo! -⚠️ BREAKING CHANGE: The minimum supported version of Starlight is now 0.34.0Please use the
@astrojs/upgrade
command to upgrade your project:npx @astrojs/upgrade
-
#2322
f14eb0c
Thanks @HiDeoo! - Adds support for Tailwind v4, drops support for Tailwind v3.⚠️ BREAKING CHANGE: Tailwind v3 is no longer supported. Tailwind v4 support in Astro is now provided using a Vite plugin and the Astro Tailwind integration is no longer required.-
Remove the Astro Tailwind integration. The Astro Tailwind integration is no longer required with Tailwind v4.
// astro.config.mjs import { defineConfig } from "astro/config"; import starlight from "@astrojs/starlight"; -import tailwind from "@astrojs/tailwind"; export default defineConfig({ integrations: [ starlight({ title: "Docs with Tailwind", customCss: ["./src/tailwind.css"], }), - tailwind({ applyBaseStyles: false }), ], });
-
Install Tailwind v4. Install the latest version of the
tailwindcss
and@tailwindcss/vite
packages.Use the
astro add tailwind
command to install and configure both packages:npx astro add tailwind
-
Update Tailwind base styles. Tailwind CSS base styles needs to be updated for Tailwind v4 and also to use Starlight Tailwind CSS.
/* src/tailwind.css */ -@tailwind base; -@tailwind components; -@tailwind utilities; +@layer base, starlight, theme, components, utilities; + +@import '@astrojs/starlight-tailwind'; +@import 'tailwindcss/theme.css' layer(theme); +@import 'tailwindcss/utilities.css' layer(utilities); + +@theme { + /* + Configure your Tailwind theme that will be used by Starlight. + https://starlight.astro.build/guides/css-and-tailwind/#styling-starlight-with-tailwind + */ +} + +/* +Add additional Tailwind styles to this file: +https://tailwindcss.com/docs/adding-custom-styles#using-custom-css +*/
-
Update Tailwind customizations. If you previously customized your Tailwind theme configuration in the
tailwind.config.mjs
file, such customizations are now defined through CSS using the@theme
block in your Tailwind base styles.-
Locate existing customizations in your
tailwind.config.mjs
file. The following example defines customizations for the accent colors, gray scale, and font families used by Starlight:// tailwind.config.mjs import starlightPlugin from '@astrojs/starlight-tailwind'; import colors from 'tailwindcss/colors'; /** @type {import('tailwindcss').Config} */ export default { content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], theme: { extend: { colors: { // Custom accent colors. accent: colors.fuchsia, // Custom gray scale. gray: colors.slate, }, fontFamily: { // Custom text font. sans: ['"Atkinson Hyperlegible"'], // Custom code font. mono: ['"IBM Plex Mono"'], }, }, }, plugins: [starlightPlugin()], };
-
The above customizations can be migrated to the new
@theme
block in the file containing your Tailwind base styles as follows:/* src/tailwind.css */ @layer base, starlight, theme, components, utilities; @import '@astrojs/starlight-tailwind'; @import 'tailwindcss/theme.css' layer(theme); @import 'tailwindcss/utilities.css' layer(utilities); @theme { /* Custom accent colors. */ --color-accent-50: var(--color-fuchsia-50); --color-accent-100: var(--color-fuchsia-100); --color-accent-200: var(--color-fuchsia-200); --color-accent-300: var(--color-fuchsia-300); --color-accent-400: var(--color-fuchsia-400); --color-accent-500: var(--color-fuchsia-500); --color-accent-600: var(--color-fuchsia-600); --color-accent-700: var(--color-fuchsia-700); --color-accent-800: var(--color-fuchsia-800); --color-accent-900: var(--color-fuchsia-900); --color-accent-950: var(--color-fuchsia-950); /* Custom gray scale. */ --color-gray-50: var(--color-slate-50); --color-gray-100: var(--color-slate-100); --color-gray-200: var(--color-slate-200); --color-gray-300: var(--color-slate-300); --color-gray-400: var(--color-slate-400); --color-gray-500: var(--color-slate-500); --color-gray-600: var(--color-slate-600); --color-gray-700: var(--color-slate-700); --color-gray-800: var(--color-slate-800); --color-gray-900: var(--color-slate-900); --color-gray-950: var(--color-slate-950); /* Custom text font. */ --font-sans: 'Atkinson Hyperlegible'; /* Custom code font. */ --font-mono: 'IBM Plex Mono'; }
-
We recommend checking your site’s appearance when upgrading to make sure there are no style regressions caused by this change.
For full details about upgrading from Tailwind v3 to v4, see the official upgrade guide.
-
@astrojs/starlight-markdoc@0.4.0
Minor Changes
-
#3033
8c19678
Thanks @delucis! - Adds support for generating clickable anchor links for headings.By default, the Starlight Markdoc preset now includes a default
heading
node, which renders an anchor link beside headings in your Markdoc content.If you want to disable this new feature, pass
headingLinks: false
in your Markdoc config:export default defineMarkdocConfig({ // Disable the default heading anchor link support extends: [starlightMarkdoc({ headingLinks: false })], });
⚠️ BREAKING CHANGE: The minimum supported peer version of Starlight is now v0.34.0.Please update Starlight and the Starlight Markdoc preset together:
npx @astrojs/upgrade
@astrojs/starlight@0.34.0
Minor Changes
-
#2322
f14eb0c
Thanks @HiDeoo! - Groups all of Starlight's CSS declarations into a singlestarlight
cascade layer.This change allows for easier customization of Starlight's CSS as any custom unlayered CSS will override the default styles. If you are using cascade layers in your custom CSS, you can use the
@layer
CSS at-rule to define the order of precedence for different layers including the ones used by Starlight.We recommend checking your site’s appearance when upgrading to make sure there are no style regressions caused by this change.
-
#3122
3a087d8
Thanks @delucis! - Removes defaultattrs
andcontent
values from head entries parsed using Starlight’s schema.Previously when adding
head
metadata via frontmatter or user config, Starlight would automatically add values forattrs
andcontent
if not provided. Now, these properties are leftundefined
.This makes it simpler to add tags in route middleware for example as you no longer need to provide empty values for
attrs
andcontent
:head.push({ tag: 'style', content: 'div { color: red }' - attrs: {}, }); head.push({ tag: 'link', - content: '' attrs: { rel: 'me', href: 'https://example.com' }, });
This is mostly an internal API but if you are overriding Starlight’s
Head
component or processing head entries in some way, you may wish to double check your handling ofAstro.locals.starlightRoute.head
is compatible withattrs
andcontent
potentially beingundefined
. -
#3033
8c19678
Thanks @delucis! - Adds support for generating clickable anchor links for headings.By default, Starlight now renders an anchor link beside headings in Markdown and MDX content. A new
<AnchorHeading>
component is available to achieve the same thing in custom pages built using<StarlightPage>
.If you want to disable this new Markdown processing set the
markdown.headingLinks
option in your Starlight config tofalse
:starlight({ title: 'My docs', markdown: { headingLinks: false, }, }),
⚠️ BREAKING CHANGE: The minimum supported version of Astro is now v5.5.0.Please update Starlight and Astro together:
npx @astrojs/upgrade
-
#2322
f14eb0c
Thanks @HiDeoo! - Removes Shikicss-variables
theme fallback.⚠️ Breaking change:Previously, Starlight used to automatically provide a fallback theme for Shiki, the default syntax highlighter built into Astro if the configured Shiki theme was not
github-dark
.This fallback was only relevant when the default Starlight code block renderer, Expressive Code, was disabled and Shiki was used. Starlight no longer provides this fallback.
If you were relying on this behavior, you now manually need to update your Astro configuration to use the Shiki
css-variables
theme to match the previous behavior.import { defineConfig } from 'astro/config'; export default defineConfig({ + markdown: { + shikiConfig: { + theme: 'css-variables', + }, + }, });
Additionally, you can use custom CSS to control the appearance of the code blocks. Here are the previously used CSS variables for the fallback theme:
:root { --astro-code-foreground: var(--sl-color-white); --astro-code-background: var(--sl-color-gray-6); --astro-code-token-constant: var(--sl-color-blue-high); --astro-code-token-string: var(--sl-color-green-high); --astro-code-token-comment: var(--sl-color-gray-2); --astro-code-token-keyword: var(--sl-color-purple-high); --astro-code-token-parameter: var(--sl-color-red-high); --astro-code-token-function: var(--sl-color-red-high); --astro-code-token-string-expression: var(--sl-color-green-high); --astro-code-token-punctuation: var(--sl-color-gray-2); --astro-code-token-link: var(--sl-color-blue-high); }
Patch Changes

Changes
- Improves the generated fallback name. It now takes names with quotes into account by removing the quotes to avoid creating invalid strings
- Refactors font face declaration generation so the logic is shared
- Improves the quality of fallbacks by pulling system metrics (RFC feedback):
- I didn't notice that initially but to get better fallbacks, you need to provide the metrics of the target font file (done by reading the font file) as well as the metrics of the fallback font (system font eg. Arial)
- So now, the metrics of system fonts used as fallbacks are put in a constant to avoid having to add the
@capsizecss/metrics
package (which is huge and was removed in #13626)
- Makes changes to implementation copied from nuxt/fonts and capsize to simplify things
Testing
Tests added
Docs
Changesets

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.7.2
Patch Changes
-
#13632
cb05cfb
Thanks @florian-lefebvre! - Improves the optimized fallback name generated by the experimental Fonts API -
#13630
3e7db4f
Thanks @florian-lefebvre! - Fixes a case where fonts using a local provider would not work because of an invalid generatedsrc
-
#13634
516de7d
Thanks @ematipico! - Fixes a regression where usingnext('/')
didn't correctly return the requested route. -
#13632
cb05cfb
Thanks @florian-lefebvre! - Improves the quality of optimized fallbacks generated by the experimental Fonts API -
#13616
d475afc
Thanks @lfilho! - Fixes a regression where relative static redirects didn't work as expected.
Description
- Removes default values for
attrs
andcontent
from the schema used to parse head entries (previously these were{}
and""
respectively). - This makes it simpler to add new entries directly to the parsed
head
array without types saying you must set these default values. - Made this a minor as it could technically be breaking for users or plugins who are overriding or processing
head
in some way, although for the average site this should be basically an internal API change. - No docs change needed as we already document
head
by linking toHeadConfig
, which shows these properties as optional.


Changes
Upgraded drizzle-orm to latest v0.42.0
Testing
Docs
Changeset
Description
- Closes #3114
- Changes how we mock Astro’s
image()
schema function to account for the new SVG import shape which is stable in Astro 5.7.0

Changes
- Exposes virtual module on the client
Testing
Using the preview release
Docs
Changeset

Changes
- RFC feedback
- Removes
@capsizecss/metrics
because it's heavy. Instead, we read the font files directly - Simplifies the cache util
Testing
Should pass
Docs
Changeset

Changes
- According to capo, preload link should come before style tags
- Updated after feedback on the RFC
Testing
N/A
Docs
Changeset

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.7.1
Patch Changes
-
#13594
dc4a015
Thanks @florian-lefebvre! - Reduces the number of font files downloaded -
#13627
7f1a624
Thanks @florian-lefebvre! - Fixes a case where using the<Font />
component would throw a Rollup error during the build -
#13626
3838efe
Thanks @florian-lefebvre! - Updates fallback font generation to always read font files returned by font providers -
#13625
f1311d2
Thanks @florian-lefebvre! - Updates the<Font />
component so that preload links are generated before the style tag ifpreload
is passed -
#13622
a70d32a
Thanks @ascorbic! - Improve autocomplete for session keys

Changes
Use the | (string & {})
trick to ensure that key autocomplete always works
Testing
Docs

Changes
- Fixed mistake in changelog

Changes
The 5.7.0 changelog includes <h2>
headings in the sessions details which is inconsistent with other headings in the changelog and is breaking some automated tooling that attempts to display a version’s notes (see e.g. this Renovate PR: withastro/astro.build#1529)
Testing
n/a
Docs
n/a

Changes
As per #13607, redirects had a regression with relative redirects introduced in #12979. This PR fixes it.
Fixes #13607
Testing
- Unit tests
- Tested with my local side project using the new changes
Docs
/cc @withastro/maintainers-docs for feedback! This was never documented but always worked since early versions of Astro so as mentioned by @ematipico on #13607 we should probaly update the docs. Happy to have a stab at it if you want too.
{ minHeadingLevel: 2; maxHeadingLevel: 3; } was throwing an error.
Changed it to { minHeadingLevel: 2, maxHeadingLevel: 3 } and it worked fine.
Description
- Closes #
- What does this PR change? Give us a brief description.
- Did you change something visual? A before/after screenshot can be helpful.

Changes
This adds the @message
property (and message
to the ErrorData object) for one of the new error messages. @florian-lefebvre or someone please correct/verify the actual content!
Testing
Not tested, but the @message
property is the one that generates the error message block in docs. Without it, we only get a "What went wrong?" section. (This might also affect the error message people see?)
e.g. without: (we had one slip by earlier!)
Docs
All for docs!

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.7.0
Minor Changes
-
#13527
2fd6a6b
Thanks @ascorbic! - The experimental session API introduced in Astro 5.1 is now stable and ready for production use.Sessions are used to store user state between requests for on-demand rendered pages. You can use them to store user data, such as authentication tokens, shopping cart contents, or any other data that needs to persist across requests:
--- export const prerender = false; // Not needed with 'server' output const cart = await Astro.session.get('cart'); --- <a href="/checkout">🛒 {cart?.length ?? 0} items</a>
Configuring session storage
Sessions require a storage driver to store the data. The Node, Cloudflare and Netlify adapters automatically configure a default driver for you, but other adapters currently require you to specify a custom storage driver in your configuration.
If you are using an adapter that doesn't have a default driver, or if you want to choose a different driver, you can configure it using the
session
configuration option:import { defineConfig } from 'astro/config'; import vercel from '@astrojs/vercel'; export default defineConfig({ adapter: vercel(), session: { driver: 'upstash', }, });
Using sessions
Sessions are available in on-demand rendered pages, API endpoints, actions and middleware.
In pages and components, you can access the session using
Astro.session
:--- const cart = await Astro.session.get('cart'); --- <a href="/checkout">🛒 {cart?.length ?? 0} items</a>
In endpoints, actions, and middleware, you can access the session using
context.session
:export async function GET(context) { const cart = await context.session.get('cart'); return Response.json({ cart }); }
If you attempt to access the session when there is no storage driver configured, or in a prerendered page, the session object will be
undefined
and an error will be logged in the console:--- export const prerender = true; const cart = await Astro.session?.get('cart'); // Logs an error. Astro.session is undefined ---
Upgrading from Experimental to Stable
If you were previously using the experimental API, please remove the
experimental.session
flag from your configuration:import { defineConfig } from 'astro/config'; import node from '@astrojs/node'; export default defineConfig({ adapter: node({ mode: "standalone", }), - experimental: { - session: true, - }, });
See the sessions guide for more information.
-
#12775
b1fe521
Thanks @florian-lefebvre! - Adds a new, experimental Fonts API to provide first-party support for fonts in Astro.This experimental feature allows you to use fonts from both your file system and several built-in supported providers (e.g. Google, Fontsource, Bunny) through a unified API. Keep your site performant thanks to sensible defaults and automatic optimizations including fallback font generation.
To enable this feature, configure an
experimental.fonts
object with one or more fonts:import { defineConfig, fontProviders } from "astro/config" export default defineConfig({ experimental: { fonts: [{ provider: fontProviders.google(), ` name: "Roboto", cssVariable: "--font-roboto", }] } })
Then, add a
<Font />
component and site-wide styling in your<head>
:--- import { Font } from 'astro:assets'; --- <Font cssVariable="--font-roboto" preload /> <style> body { font-family: var(--font-roboto); } </style>
Visit the experimental Fonts documentation for the full API, how to get started, and even how to build your own custom
AstroFontProvider
if we don't yet support your preferred font service.For a complete overview, and to give feedback on this experimental API, see the Fonts RFC and help shape its future.
-
#13560
df3fd54
Thanks @ematipico! - The virtual moduleastro:config
introduced behind a flag in v5.2.0 is no longer experimental and is available for general use.This virtual module exposes two sub-paths for type-safe, controlled access to your configuration:
astro:config/client
: exposes config information that is safe to expose to the client.astro:config/server
: exposes additional information that is safe to expose to the server, such as file and directory paths.
Access these in any file inside your project to import and use select values from your Astro config:
// src/utils.js import { trailingSlash } from 'astro:config/client'; function addForwardSlash(path) { if (trailingSlash === 'always') { return path.endsWith('/') ? path : path + '/'; } else { return path; } }
If you were previously using this feature, please remove the experimental flag from your Astro config:
// astro.config.mjs export default defineConfig({ - experimental: { - serializeConfig: true - } })
If you have been waiting for feature stabilization before using configuration imports, you can now do so.
Please see the
astro:config
reference for more about this feature. -
#13578
406501a
Thanks @stramel! - The SVG import feature introduced behind a flag in v5.0.0 is no longer experimental and is available for general use.This feature allows you to import SVG files directly into your Astro project as components and inline them into your HTML.
To use this feature, import an SVG file in your Astro project, passing any common SVG attributes to the imported component.
--- import Logo from './path/to/svg/file.svg'; --- <Logo <Logo width={64} height={64} fill="currentColor" />
If you have been waiting for stabilization before using the SVG Components feature, you can now do so.
If you were previously using this feature, please remove the experimental flag from your Astro config:
import { defineConfig } from 'astro' export default defineConfig({ - experimental: { - svg: true, - } })
Additionally, a few features that were available during the experimental stage were removed in a previous release. Please see the v5.6.0 changelog for details if you have not yet already updated your project code for the experimental feature accordingly.
Please see the SVG Components guide in docs for more about this feature.
Patch Changes
-
#13602
3213450
Thanks @natemoo-re! - Updates the Audit dev toolbar app to automatically stripdata-astro-source-file
anddata-astro-source-loc
attributes in dev mode. -
#13598
f5de51e
Thanks @dreyfus92! - Fix routing with base paths when trailingSlash is set to 'never'. This ensures requests to '/base' are correctly matched when the base path is set to '/base', without requiring a trailing slash. -
#13603
d038030
Thanks @sarah11918! - Adds the minimal starter template to the list ofcreate astro
optionsGood news if you're taking the introductory tutorial in docs, making a minimal reproduction, or just want to start a project with as little to rip out as possible. Astro's
minimal
(empty) template is now back as one of the options when runningcreate astro@latest
and starting a new project!
@astrojs/cloudflare@12.5.0
Minor Changes
-
#13527
2fd6a6b
Thanks @ascorbic! - The experimental session API introduced in Astro 5.1 is now stable and ready for production use.Sessions are used to store user state between requests for on-demand rendered pages. You can use them to store user data, such as authentication tokens, shopping cart contents, or any other data that needs to persist across requests:
--- export const prerender = false; // Not needed with 'server' output const cart = await Astro.session.get('cart'); --- <a href="/checkout">🛒 {cart?.length ?? 0} items</a>
Configuring session storage
Sessions require a storage driver to store the data. The Node, Cloudflare and Netlify adapters automatically configure a default driver for you, but other adapters currently require you to specify a custom storage driver in your configuration.
If you are using an adapter that doesn't have a default driver, or if you want to choose a different driver, you can configure it using the
session
configuration option:import { defineConfig } from 'astro/config'; import vercel from '@astrojs/vercel'; export default defineConfig({ adapter: vercel(), session: { driver: 'upstash', }, });
Using sessions
Sessions are available in on-demand rendered pages, API endpoints, actions and middleware.
In pages and components, you can access the session using
Astro.session
:--- const cart = await Astro.session.get('cart'); --- <a href="/checkout">🛒 {cart?.length ?? 0} items</a>
In endpoints, actions, and middleware, you can access the session using
context.session
:export async function GET(context) { const cart = await context.session.get('cart'); return Response.json({ cart }); }
If you attempt to access the session when there is no storage driver configured, or in a prerendered page, the session object will be
undefined
and an error will be logged in the console:--- export const prerender = true; const cart = await Astro.session?.get('cart'); // Logs an error. Astro.session is undefined ---
Upgrading from Experimental to Stable
If you were previously using the experimental API, please remove the
experimental.session
flag from your configuration:import { defineConfig } from 'astro/config'; import node from '@astrojs/node'; export default defineConfig({ adapter: node({ mode: "standalone", }), - experimental: { - session: true, - }, });
See the sessions guide for more information.
Patch Changes
- Updated dependencies []:
- @astrojs/underscore-redirects@0.6.0
@astrojs/markdoc@0.14.0
Minor Changes
-
#13578
406501a
Thanks @stramel! - The SVG import feature introduced behind a flag in v5.0.0 is no longer experimental and is available for general use.This feature allows you to import SVG files directly into your Astro project as components and inline them into your HTML.
To use this feature, import an SVG file in your Astro project, passing any common SVG attributes to the imported component.
--- import Logo from './path/to/svg/file.svg'; --- <Logo <Logo width={64} height={64} fill="currentColor" />
If you have been waiting for stabilization before using the SVG Components feature, you can now do so.
If you were previously using this feature, please remove the experimental flag from your Astro config:
import { defineConfig } from 'astro' export default defineConfig({ - experimental: { - svg: true, - } })
Additionally, a few features that were available during the experimental stage were removed in a previous release. Please see the v5.6.0 changelog for details if you have not yet already updated your project code for the experimental feature accordingly.
Please see the SVG Components guide in docs for more about this feature.
@astrojs/netlify@6.3.0
Minor Changes
-
#13527
2fd6a6b
Thanks @ascorbic! - The experimental session API introduced in Astro 5.1 is now stable and ready for production use.Sessions are used to store user state between requests for on-demand rendered pages. You can use them to store user data, such as authentication tokens, shopping cart contents, or any other data that needs to persist across requests:
--- export const prerender = false; // Not needed with 'server' output const cart = await Astro.session.get('cart'); --- <a href="/checkout">🛒 {cart?.length ?? 0} items</a>
Configuring session storage
Sessions require a storage driver to store the data. The Node, Cloudflare and Netlify adapters automatically configure a default driver for you, but other adapters currently require you to specify a custom storage driver in your configuration.
If you are using an adapter that doesn't have a default driver, or if you want to choose a different driver, you can configure it using the
session
configuration option:import { defineConfig } from 'astro/config'; import vercel from '@astrojs/vercel'; export default defineConfig({ adapter: vercel(), session: { driver: 'upstash', }, });
Using sessions
Sessions are available in on-demand rendered pages, API endpoints, actions and middleware.
In pages and components, you can access the session using
Astro.session
:--- const cart = await Astro.session.get('cart'); --- <a href="/checkout">🛒 {cart?.length ?? 0} items</a>
In endpoints, actions, and middleware, you can access the session using
context.session
:export async function GET(context) { const cart = await context.session.get('cart'); return Response.json({ cart }); }
If you attempt to access the session when there is no storage driver configured, or in a prerendered page, the session object will be
undefined
and an error will be logged in the console:--- export const prerender = true; const cart = await Astro.session?.get('cart'); // Logs an error. Astro.session is undefined ---
Upgrading from Experimental to Stable
If you were previously using the experimental API, please remove the
experimental.session
flag from your configuration:import { defineConfig } from 'astro/config'; import node from '@astrojs/node'; export default defineConfig({ adapter: node({ mode: "standalone", }), - experimental: { - session: true, - }, });
See the sessions guide for more information.
Patch Changes
- Updated dependencies []:
- @astrojs/underscore-redirects@0.6.0
@astrojs/node@9.2.0
Minor Changes
-
#13527
2fd6a6b
Thanks @ascorbic! - The experimental session API introduced in Astro 5.1 is now stable and ready for production use.Sessions are used to store user state between requests for on-demand rendered pages. You can use them to store user data, such as authentication tokens, shopping cart contents, or any other data that needs to persist across requests:
--- export const prerender = false; // Not needed with 'server' output const cart = await Astro.session.get('cart'); --- <a href="/checkout">🛒 {cart?.length ?? 0} items</a>
Configuring session storage
Sessions require a storage driver to store the data. The Node, Cloudflare and Netlify adapters automatically configure a default driver for you, but other adapters currently require you to specify a custom storage driver in your configuration.
If you are using an adapter that doesn't have a default driver, or if you want to choose a different driver, you can configure it using the
session
configuration option:import { defineConfig } from 'astro/config'; import vercel from '@astrojs/vercel'; export default defineConfig({ adapter: vercel(), session: { driver: 'upstash', }, });
Using sessions
Sessions are available in on-demand rendered pages, API endpoints, actions and middleware.
In pages and components, you can access the session using
Astro.session
:--- const cart = await Astro.session.get('cart'); --- <a href="/checkout">🛒 {cart?.length ?? 0} items</a>
In endpoints, actions, and middleware, you can access the session using
context.session
:export async function GET(context) { const cart = await context.session.get('cart'); return Response.json({ cart }); }
If you attempt to access the session when there is no storage driver configured, or in a prerendered page, the session object will be
undefined
and an error will be logged in the console:--- export const prerender = true; const cart = await Astro.session?.get('cart'); // Logs an error. Astro.session is undefined ---
Upgrading from Experimental to Stable
If you were previously using the experimental API, please remove the
experimental.session
flag from your configuration:import { defineConfig } from 'astro/config'; import node from '@astrojs/node'; export default defineConfig({ adapter: node({ mode: "standalone", }), - experimental: { - session: true, - }, });
See the sessions guide for more information.

This PR contains the following updates:
Release Notes
changesets/changesets (@changesets/cli)
v2.29.2
Patch Changes
-
#1636
f73f84a
Thanks @Netail! - Correctly resolve new changesets withsince
option when the.changeset
directory is not directly in the git root -
Updated dependencies [
f73f84a
]:
v2.29.1
v2.29.0
Minor Changes
libsql/libsql-client-ts (@libsql/client)
v0.15.4
- Bump to latest
libsql
package.
v0.15.3
- Bump to latest
libsql
package.
tailwindlabs/tailwindcss (@tailwindcss/vite)
v4.1.4
Added
- Add experimental
@tailwindcss/oxide-wasm32-wasi
target for running Tailwind in browser environments like StackBlitz (#17558)
Fixed
- Ensure
color-mix(…)
polyfills do not cause used CSS variables to be removed (#17555) - Ensure
color-mix(…)
polyfills create fallbacks for theme variables that reference other theme variables (#17562) - Fix brace expansion in declining ranges like
{10..0..5}
and{0..10..-5}
(#17591) - Work around a Chrome rendering bug when using the
skew-*
utilities (#17627) - Ensure container query variant names can contain hyphens (#17628)
- Ensure
shadow-inherit
,inset-shadow-inherit
,drop-shadow-inherit
, andtext-shadow-inherit
inherit the shadow color (#17647) - Ensure compatibility with array tuples used in
fontSize
JS theme keys (#17630) - Ensure folders with binary file extensions in their names are scanned for utilities (#17595)
- Upgrade: Convert
fontSize
array tuple syntax to CSS theme variables (#17630)
antfu-collective/package-manager-detector (package-manager-detector)
v1.2.0
🚀 Features
- Include pnpm-workspace.yaml in detection - by @ianzone in https://github.com/antfu-collective/package-manager-detector/issues/52 (5e755)
View changes on GitHub
publint/publint (publint)
v0.3.12
Patch Changes
- Fix shebang check to allow spaces after the
#!
(#183)
v0.3.11
Patch Changes
-
Update
EXPORTS_GLOB_NO_DEPRECATED_SUBPATH_MAPPING
message and severity to error (#179) -
Add a new warning when the
"exports"
or"imports"
field contain a fallback array as most tooling will only the pick the first value that can be parsed, and other tooling may work differently leading to inconsistent behaviors (#180)
shikijs/shiki (shiki)
v3.2.2
🚀 Features
- Add handling for
FontStyle.Strikethrough
- by @dhruvkb in https://github.com/shikijs/shiki/issues/976 (f14f2)
View changes on GitHub
squirrelchat/smol-toml (smol-toml)
v1.3.3
Follow up of v1.3.2, where the package is published in JavaScript instead of nocode. 🚀
v1.3.2
Fixes the issue reported in #37 -- the library would fail to parse a document containing a one-line string, with an escaped double-quote, preceded by an escaped backslash, such as key = "value \\\" value"
.
Apologies for the lack of proper v1.3.1 tag; this release addressed GHSA-pqhp-25j4-6hq9 by adding a maximum depth while parsing.
Additionally, releases are now published to NPM with provenance attestations
What's Changed
- fix: improve string end detection when preceded by an escaped backslash by @cyyynthia
- fix: enforce maximum depth when parsing/stringifying by @cyyynthia
Full Changelog: squirrelchat/smol-toml@v1.3.0...v1.3.2
sveltejs/svelte (svelte)
v5.28.1
Patch Changes
-
fix: ensure
<svelte:boundary>
properly removes error content in production mode (#15793) -
fix:
update_version
afterdelete
ifsource
isundefined
andprop
intarget
(#15796) -
fix: emit error on wrong placement of the
:global
block selector (#15794)
v5.28.0
Minor Changes
- feat: partially evaluate more expressions (#15781)
v5.27.3
Patch Changes
- fix: use function declaration for snippets in server output to avoid TDZ violation (#15789)
v5.27.2
Patch Changes
- chore: use pkg.imports for common modules (#15787)
v5.27.1
Patch Changes
-
chore: default params for html blocks (#15778)
-
fix: correct suggested type for custom events without detail (#15763)
-
fix: Throw on unrendered snippets in
dev
(#15766) -
fix: avoid unnecessary read version increments (#15777)
v5.27.0
Minor Changes
- feat: partially evaluate certain expressions (#15494)
Patch Changes
- fix: relax
:global
selector list validation (#15762)
v5.26.3
Patch Changes
-
fix: correctly validate head snippets on the server (#15755)
-
fix: ignore mutation validation for props that are not proxies in more cases (#15759)
-
fix: allow self-closing tags within math namespace (#15761)
v5.26.2
Patch Changes
- fix: correctly validate
undefined
snippet params with default value (#15750)
v5.26.1
Patch Changes
- fix: update
state_referenced_locally
message (#15733)
v5.26.0
Minor Changes
- feat: add
css.hasGlobal
tocompile
output (#15450)
Patch Changes
- fix: add snippet argument validation in dev (#15521)
v5.25.12
Patch Changes
-
fix: improve internal_set versioning mechanic (#15724)
-
fix: don't transform reassigned state in labeled statement in
$derived
(#15725)
v5.25.11
Patch Changes
-
fix: handle hydration mismatches in await blocks (#15708)
-
fix: prevent ownership warnings if the fallback of a bindable is used (#15720)
v5.25.10
Patch Changes
-
fix: set deriveds as
CLEAN
if they are assigned to (#15592) -
fix: better scope
:global()
with nesting selector&
(#15671)
v5.25.9
Patch Changes
-
fix: allow
$.state
and$.derived
to be treeshaken (#15702) -
fix: rework binding ownership validation (#15678)
v5.25.8
Patch Changes
- fix: address untracked_writes memory leak (#15694)
typescript-eslint/typescript-eslint (typescript-eslint)
v8.30.1
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
v8.30.0
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
v8.29.1
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
vitejs/vite (vite)
v6.3.2
- fix: match default asserts case insensitive (#19852) (cbdab1d), closes #19852
- fix: open first url if host does not match any urls (#19886) (6abbdce), closes #19886
- fix(css): respect
css.lightningcss
option in css minification process (#19879) (b5055e0), closes #19879 - fix(deps): update all non-major dependencies (#19698) (bab4cb9), closes #19698
- feat(css): improve lightningcss messages (#19880) (c713f79), closes #19880
v6.3.1
- fix: avoid using
Promise.allSettled
in preload function (#19805) (35c7f35), closes #19805 - fix: backward compat for internal plugin
transform
calls (#19878) (a152b7c), closes #19878
v6.3.0
colinhacks/zod (zod)
v3.24.3
Commits:
de1f090
Switch to featured sponsors (#4001)eea05ae
Fix headers (#4003)446644f
Tweak feature layout (#4008)1d6e1cb
docs(README): add GQLoom to tools and integrations section (#3995)e2b9a5f
Update feature (#4009)0b5d29e
Feature Mintlify (#4014)47dbb2d
Update mintlify feature (#4015)69d8436
Add Clerk fellowship mention (#4020)850871d
Fix table formatf204123
WIP (#4028)5041dfa
WIP (#4045)cb2b857
docs: add TanStack Form to Ecosystem/Form integrations (#4055)099fe85
docs: add oRPC to Ecosystem (#4042)b999b4b
docs: Remove outdated doc 'avoid coercions that throw uncaught errors' (#4005)19c6d2e
docs: update README_KO (#4025)1061293
WIP (#4060)07ff0da
Update link4c7d8e5
Update Fern art/link (#4062)91dcd30
removed unnecessary console logs (#4059)859ad24
Update alt tag for Retool and Stainless URL (#4071)220aeda
Fix imagesb865062
update readme.md with zod-csv library (#4021)0615af8
Fix formatting12e5866
Add zod 4 beta anno (#4081)faac697
Fix CI8cca93b
Fix CId114394
Added FullProduct.dev to 'Powered by Zod' in Ecosystem section (#4131)a801ddd
Fix broken logo link (#3974)8fc309a
Add packages/docsbfd0913
Remove packages/docs3e602d4
OptimizeextendShape
(#4150)06db7f8
3.24.3a18d25b
add back packages/docs
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.
Description
- Closes #3108
- This PR updates the version of the package
astro-expressive-code
from v0.40 to v0.41. This also replaces Shiki v1 dependencies with Shiki v3.

Changes
- (Potentially) fixes a regression introduced by #13519
- User on Discord reported a build failure introduced between
5.6.0
and5.6.1
. The cause seemed to beastro-icon
chunks, which should only be prerendered, were leaking into the server bundle.
Looking through the commits, the only suspicious commit seems to be #13519, which ported over the following lines. - Originally, this change was introduced by an ecosystem patch to improve Rolldown compat, but we don't have insight into what bug was being fixed. We're asking around for the context!
- Patch changeset added
Testing
Going to confirm the fix with a preview release, but it would be a good idea to make a prerender chunk test to prevent future regressions
Docs
N/A, bug fix
Description
This PR updates the comparison data of different docs frameworks visible on the environmental impact page with up-to-date 12. April 2025 data fetches.
There are some things to consider:
- Shall we include all these frameworks or leave some out to make the table smaller? If we drop some, which ones?
- Either the Zola calculation is bugged or really respectable, which is very plausible cause it's built with Rust :)
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-markdoc@0.3.1
Patch Changes
-
#3090
fc3ffa8
Thanks @delucis! - Adds support for newer versions of@astrojs/markdoc
-
#3109
b5cc1b4
Thanks @dhruvkb! - Updates Expressive Code to v0.41.1
@astrojs/starlight@0.33.2
Patch Changes
Updates Astro and related dependencies across the monorepo.
A lot of these are just development versions, but these two changes theoretically impact users:
-
Updates to
@astrojs/mdx
,@astrojs/sitemap
, andastro-expressive-code
in the core Starlight package. The new versions were already covered by our^
range, but this change ensures people update to the latest versions. Particularly important for the MDX integration as we had some reports of errors for users upgrading Astro, which included a newer version of@astrojs/markdown-remark
that conflicted with the older@astrojs/mdx
. -
A loosening of our peer dependency version range for
@astrojs/markdoc
in the Starlight Markdoc preset. This adds support for the newer 0.13.x releases of@astrojs/markdoc
.

Changes
Update the list of available choices when running create astro
to include the minimal
starter.
This is useful for people taking the introductory tutorial in docs, creating minimal reproductions, and for experienced users starting projects from scratch.
In particular, it avoids needing to document workarounds to installing the minimal template for the tutorial via a template flag. (For example, Powershell users cannot follow the command as provided. This leads to them choosing the wrong template at the start of the tutorial, and is confusing when their code doesn't match the tutorial instructions.)
Closes Docs Issue withastro/docs#10843
Testing
Not tested!
Docs
The tutorial docs will be updated (simplified) to no longer require installing the minimal starter using a template flag. (Can be updated separately, as the existing instructions will still work.)

Changes
- To support the Audit dev toolbar app, Astro's compiler injects
data-astro-source-file
anddata-astro-source-loc
attributes on every element in dev mode. - In this PR, the Audit app has been updated to extract the data from these attributes, store them in a
WeakMap
that is keyed by eachElement
, and then remove the attributes. - This should improve the dev mode experience by simplifying the markup when inspecting the page.
- Changeset added.
Impact
This admittedly might break some third-party dev toolbar apps that rely on these annotations. Ideally we would expose a public API to get the annotation info for an element.
Searching all of GitHub for data-astro-source-file
yields a decent number of repos, but the vast majority of uses are workarounds to remove the attributes.
Testing
Tested manually because it involves dev mode-specific client-side script behavior, which would be flaky to run in CI.
Docs
As far as I can tell, this is an internal API that we've never documented!
These attributes were added in #9016 and first released in astro@3.5.0
in November 2023. I assume users have gotten used to ignoring them, but they're still visual noise. Since this approach allows us to reduce noise without removing functionality, I think we should.

Changes
- Adds jsdocs
Testing
Docs

Changes
Closes: #13585
- What does this change?
Fixes routing with base paths when trailingSlash
is set to 'never', ensuring requests to '/base' are correctly matched when the base path is set to '/base'. The fix also maintains compatibility with rewrites, with all rewrite tests passing successfully.
Testing
I've added 2 🤏🏻 tests 🫡
Docs

Changes
- Addresses feedback from T&D
- Renames Font component
family
tocssVariable
- Renames font configuration
automaticFallback
tooptimizedFallbacks
Testing
Should pass
Docs
RFC updated

Description
- Adds my first own theme called Starlight NextJS Theme to the
theme.mdx
showcase

Changes
- Updates unifont
- Filters fonts so we avoid useless fallbacks
- The patch is removed because it's being contributed upstream (unjs/unifont#154) and it only works in the context of the repo, not once published on NPM
Testing
Manual
Docs
Changeset
Description
- This PR adds the website Starlight Changelog which is built upon Starlog template from Astro to the community content page.
- I'm not sure tho, if the Articles and Reviews section is the right place to add this website...

Changes
- adjusts
svg
handling to fix a memory leak - see #12694 for original workaround, Erika's suggestion on #12067
- unblocks #13578
Testing
- Tested with a modified version of the
benchmark
script that included 10,000svg
files. - Tested against the real-world
cloudflare-docs
repo, where the original bug report was surfaced. It generates 5K+ page and has 1100+.svg
files. Before this change, I got an OOM error. After this change, I was able to build the site successfully. See Discord thread for full fix verification updates
Docs
Bug fix only

Description
This PR replaces all z.B.
and z. B.
with the consistent and recommended spelling notation1, z. B.
.
Therefore the i18nIgnore, because this should not mark pages as completed in any way.
Request review from native speaker (@delucis?)!
Footnotes
-
Wiktionary: https://de.wiktionary.org/wiki/z._B. ↩
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.33.1
Patch Changes
-
#3088
1885049
Thanks @HiDeoo! - Fixes a regression in Starlight version0.33.0
that caused the description and links to language alternates for multilingual websites to be missing from the<head>
of the page. -
#3065
463adf5
Thanks @HiDeoo! - Updates thesocial
configuration option TSDoc example to match the shape of the expected value.

Loads '-extras' for CSS, JS and PHP to add more tokens for styling.
Changes
When highlighting CSS, JS and PHP with Prism load the -extras for these to add additional tokens.
CSS example:
code[class*="language-"] .token {
...
}
Without css-extras
:
<span class="token selector">
code[class*="language-"] .token
</span>
With css-extras
:
<span class="token selector">
code
<span class="token attribute">
<span class="token punctuation">[</span>
<span class="token attr-name">class</span>
<span class="token operator">*=</span>
<span class="token attr-value">"language-"</span>
<span class="token punctuation">]</span>
</span>
<span class="token class">.token</span>
</span>
Testing
Tested with a local project using pnpm link.
Docs
I don't believe this will break anything since it seems to just add some extras <span class="token ..."></span>
inside
the existing ones. Any theme styling applied to outer existing <span>
s would still apply even if not using the extra inner ones.

Changes
Unflagging the SVG Component feature!
Testing
Ran against the test fixture
Docs
Will need to remove this section from the experimental docs and likely move it to the standard location
/cc @withastro/maintainers-docs for feedback!
Description
- This PR replaces translations of the English word
icon
from the German translationIcon
toSymbol
so it is consistent across all pages. Therefore the i18nIgnore, because this should not mark pages as completed in any way. - This is a follow-up PR of #2949 where Chris and I agreed on making the translation consistent the other way around (initially I wanted to replace all
Symbol
withIcon
, but Wikipedia says,Symbol
is the generally more acceptable translation oficon
- I again ask a native speaker to review this PR, maybe @delucis wants to step up again and help out as always 💜 (I think I didn't miss any
Icon
s with my global VS Code search...)
Note
This is a replacement for #2714, which was relying on #2722 having been merged and shouldn't have been relying on it. See #2714 (comment).
Description
- Closes #2696
- What does this PR change? #2704 improved the cosmetic of focus ring in site title, however there were a couple of remaining issues as described here. This PR eliminates the
overflow: hidden
and appliesmin-width
to ensure thetitle-wrapper
is constrained to available space by flexbox. Additionally, it styles the title text (if its displayed) with elipses providing an improved UI so that text is no longer abruptly cut-off but rather gives an indication that there is more text that just isn't visible. If a logo is present, it will be automatically scaled and therefore doesn't require a container withoverflow: hidden
. Tested in Edge, Chrome & Firefox. - Did you change something visual? A before/after screenshot can be helpful.
With a forced outline of 10px solid green
:
Important
In performing testing on this PR, I identified other issues related to the way the header is displayed with large images and/or long text. Will create a separate issue to track those. Created #2715.

Changes
Currently, each server island includes a script to load its own content. That includes quite a bit of logic that could be shared between islands. This PR extracts that into a function that can be reused by each island, and includes it only once. This runtime script is defined as a classic, non-module script so that we can guarantee that it has always executed before any of the module scripts runs.
Testing
Added and updated tests
Docs
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@astrojs/starlight@0.33.0
Minor Changes
-
#3026
82deb84
Thanks @HiDeoo! - Fixes a potential list styling issue if the last element of a list item is a<script>
tag.⚠️ BREAKING CHANGE:This release drops official support for Chromium-based browsers prior to version 105 (released 30 August 2022) and Firefox-based browsers prior to version 121 (released 19 December 2023). You can find a list of currently supported browsers and their versions using this browserslist query.
With this release, Starlight-generated sites will still work fine on those older browsers except for this small detail in list item styling, but future releases may introduce further breaking changes for impacted browsers, including in patch releases.
-
#3025
f87e9ac
Thanks @delucis! - Makessocial
configuration more flexible.⚠️ BREAKING CHANGE: Thesocial
configuration option has changed syntax. You will need to update this inastro.config.mjs
when upgrading.Previously, a limited set of platforms were supported using a shorthand syntax with labels built in to Starlight. While convenient, this approach was less flexible and required dedicated code for each social platform added.
Now, you must specify the icon and label for each social link explicitly and you can use any of Starlight’s built-in icons for social links.
The following example shows updating the old
social
syntax to the new:- social: { - github: 'https://github.com/withastro/starlight', - discord: 'https://astro.build/chat', - }, + social: [ + { icon: 'github', label: 'GitHub', href: 'https://github.com/withastro/starlight' }, + { icon: 'discord', label: 'Discord', href: 'https://astro.build/chat' }, + ],
-
#2927
c46904c
Thanks @HiDeoo! - Adds thehead
route data property which contains an array of all tags to include in the<head>
of the current page.Previously, the
<Head>
component was responsible for generating a list of tags to include in the<head>
of the current page and rendering them.
This data is now available asAstro.locals.starlightRoute.head
instead and can be modified using route data middleware.
The<Head>
component now only renders the tags provided inAstro.locals.starlightRoute.head
. -
#2924
6a56d1b
Thanks @HiDeoo! -⚠️ BREAKING CHANGE: Ensures that the<Badge>
and<Icon>
components no longer render with a trailing space.In Astro, components that include styles render with a trailing space which can prevent some use cases from working as expected, e.g. when using such components inlined with text. This change ensures that the
<Badge>
and<Icon>
components no longer render with a trailing space.If you were previously relying on that implementation detail, you may need to update your code to account for this change. For example, considering the following code:
<Badge text="New" /> Feature
The rendered text would previously include a space between the badge and the text due to the trailing space automatically added by the component:
New Feature
Such code will now render the badge and text without a space:
NewFeature
To fix this, you can add a space between the badge and the text:
- <Badge text="New" />Feature + <Badge text="New" /> Feature
-
#2727
7c8fa30
Thanks @techfg! - Updates mobile menu toggle styles to display a close icon while the menu is open
Patch Changes
-
#2927
c46904c
Thanks @HiDeoo! - Fixes an issue where overriding the canonical URL of a page using thehead
configuration option orhead
frontmatter field would strip any other<link>
tags from the<head>
. -
#2927
c46904c
Thanks @HiDeoo! - Fixes an issue where generated canonical URLs would include a trailing slash when using thetrailingSlash
Astro option is set to'never'
. -
#3025
f87e9ac
Thanks @delucis! - Fixes Starlight’s autogenerated<meta name="twitter:site">
tags when a Twitter link is set insocial
config. Previously these incorrectly renderedcontent="/username"
and now correctly rendercontent="@username"
.

Changes
- Google and Fontsource unifont providers download too much files if a variable font is present
- Until unjs/unifont#108 is addressed, this adds a patch
Testing
Manual
Docs
N/A

Changes
- Removes the default provider to reduce confusion and improve consistency
- Now, google must be used like
fontProviders.google()
- Simplifies the code by a lot
Testing
Updated
Docs
RFC updated

This PR contains the following updates:
Release Notes
preactjs/signals (@preact/signals)
v2.0.3
Patch Changes
- #666
f72e769
Thanks @JoviDeCroock! - Fix array signals when used as jsx
tailwindlabs/tailwindcss (@tailwindcss/vite)
v4.1.3
Fixed
- Show warning when using unsupported bare value data type in
--value(…)
(#17464) - PostCSS: Ensure changes to the input CSS file don't generate stale output when using Turbopack (#17554)
- Ensure classes are detected in Ruby's
%w
syntax in Slim templates (#17557)
v4.1.2
Fixed
- Don't rely on the presence of
@layer base
to polyfill@property
(#17506) - Support setting multiple inset shadows as arbitrary values (#17523)
- Fix
drop-shadow-*
utilities that are defined with multiple shadows (#17515) - PostCSS: Fix race condition when two changes are queued concurrently (#17514)
- PostCSS: Ensure files containing
@tailwind utilities
are processed (#17514) - Ensure the
color-mix(…)
polyfill creates fallbacks even when using colors that cannot be statically analyzed (#17513) - Fix slow incremental builds with
@tailwindcss/vite
and@tailwindcss/postscss
(especially on Windows) (#17511) - Vite: Fix missing CSS file in Qwik setups (#17533)
v4.1.1
Fixed
- Disable padding in
@source inline(…)
brace expansion (#17491) - Inject polyfills after
@import
and body-less@layer
(#17493) - Ensure
@tailwindcss/cli
does not contain an import forjiti
(#17502)
v4.1.0
Added
- Add
details-content
variant (#15319) - Add
inverted-colors
variant (#11693) - Add
noscript
variant (#11929, #17431) - Add
items-baseline-last
andself-baseline-last
utilities (#13888, #17476) - Add
pointer-none
,pointer-coarse
, andpointer-fine
variants (#16946) - Add
any-pointer-none
,any-pointer-coarse
, andany-pointer-fine
variants (#16941) - Add safe alignment utilities (#14607)
- Add
user-valid
anduser-invalid
variants (#12370) - Add
wrap-anywhere
,wrap-break-word
, andwrap-normal
utilities (#12128) - Add
@source inline(…)
and@source not inline(…)
(#17147) - Add
@source not "…"
(#17255) - Add
text-shadow-*
utilities (#17389) - Add
mask-*
utilities (#17134) - Add
bg-{position,size}-*
utilities for arbitrary values (#17432) - Add
shadow-*/<alpha>
,inset-shadow-*/<alpha>
,drop-shadow-*/<alpha>
, andtext-shadow-*/<alpha>
utilities to control shadow opacity (#17398, #17434) - Add
drop-shadow-<color>
utilities (#17434) - Improve compatibility with older versions of Safari and Firefox (#17435)
Fixed
- Follow symlinks when resolving
@source
directives (#17391) - Don't scan ignored files for classes when changing an ignored file triggers a rebuild using
@tailwindcss/cli
(#17255) - Support negated
content
rules in legacy JavaScript configuration (#17255) - Interpret syntax like
@("@​")md:…
as@md:…
in Razor files (#17427) - Disallow top-level braces, top-level semicolons, and unbalanced parentheses and brackets in arbitrary values (#17361)
- Ensure the
--theme(…)
function still resolves to the CSS variables when using legacy JS plugins (#17458) - Detect used theme variables in CSS module files (#17433, #17467)
Changed
- Ignore
node_modules
by default (can be overridden by@source …
rules) (#17255) @source
rules that include file extensions or point insidenode_modules/
folders no longer consider your.gitignore
rules (#17255)- Deprecate
bg-{left,right}-{top,bottom}
in favor ofbg-{top,bottom}-{left,right}
utilities (#17378) - Deprecate
object-{left,right}-{top,bottom}
in favor ofobject-{top,bottom}-{left,right}
utilities (#17437)
NaturalIntelligence/fast-xml-parser (fast-xml-parser)
v5.2.0
v5.1.0
- feat: declare package as side-effect free (#738) (By Thomas Bouffard)
- fix cjs build mode
- fix builder return type to string
5.0.9 / 2025-03-14
- fix: support numeric entities with values over 0xFFFF (#726) (By Marc Durdin)
- fix: update strnum to fix parsing 0 if skiplike option is used
5.0.8 / 2025-02-27
- fix parsing 0 if skiplike option is used.
- updating strnum dependency
5.0.7 / 2025-02-25
- fix (#724) typings for cjs.
5.0.6 / 2025-02-20
- fix cli output (By Angel Delgado)
- remove multiple JSON parsing
5.0.5 / 2025-02-20
- fix parsing of string starting with 'e' or 'E' by updating strnum
5.0.4 / 2025-02-20
- fix CLI to support all the versions of node js when displaying library version.
- fix CJS import in v5
- by fixing webpack config
5.0.3 / 2025-02-20
- Using strnum ESM module
- new fixes in strum may break your experience
5.0.2 / 2025-02-20
- fix: include CommonJS resources in the npm package #714 (By Thomas Bouffard)
- fix: move babel deps to dev deps
5.0.1 / 2025-02-19
- fix syntax error for CLI command
5.0.0 / 2025-02-19
- ESM support
- no change in the functionality, syntax, APIs, options, or documentation.
4.5.2 / 2025-02-18
- Fix null CDATA to comply with undefined behavior (#701) (By Matthieu BOHEAS)
- Fix(performance): Update check for leaf node in saveTextToParentTag function in OrderedObjParser.js (#707) (By ...)
- Fix: emit full JSON string from CLI when no output filename specified (#710) (By Matt Benson)
4.5.1 / 2024-12-15
- Fix empty tag key name for v5 (#697). no impact on v4
- Fixes entity parsing when used in strict mode (#699)
4.5.0 / 2024-09-03
4.4.1 / 2024-07-28
- v5 fix: maximum length limit to currency value
- fix #634: build attributes with oneListGroup and attributesGroupName (#653)(By Andreas Naziris)
- fix: get oneListGroup to work as expected for array of strings (#662)(By Andreas Naziris)
4.4.0 / 2024-05-18
- fix #654: parse attribute list correctly for self closing stop node.
- fix: validator bug when closing tag is not opened. (#647) (By Ryosuke Fukatani)
- fix #581: typings; return type of
tagValueProcessor
&attributeValueProcessor
(#582) (By monholm)
4.3.6 / 2024-03-16
- Add support for parsing HTML numeric entities (#645) (By Jonas Schade )
4.3.5 / 2024-02-24
- code for v5 is added for experimental use
4.3.4 / 2024-01-10
4.3.3 / 2024-01-10
- Remove unnecessary regex
4.3.2 / 2023-10-02
- fix
jObj.hasOwnProperty
when give input is null (By Arda TANRIKULU)
4.3.1 / 2023-09-24
- revert back "Fix typings for builder and parser to make return type generic" to avoid failure of existing projects. Need to decide a common approach.
4.3.0 / 2023-09-20
- Fix stopNodes to work with removeNSPrefix (#607) (#608) (By [Craig Andrews]https://github.com/candrews))
- Fix #610 ignore properties set to Object.prototype
- Fix typings for builder and parser to make return type generic (By Sarah Dayan)
4.2.7 / 2023-07-30
- Fix: builder should set text node correctly when only textnode is present (#589) (By qianqing)
- Fix: Fix for null and undefined attributes when building xml (#585) (#598). A null or undefined value should be ignored. (By Eugenio Ceschia)
4.2.6 / 2023-07-17
- Fix: Remove trailing slash from jPath for self-closing tags (#595) (By Maciej Radzikowski)
4.2.5 / 2023-06-22
- change code implementation
4.2.4 / 2023-06-06
- fix security bug
4.2.3 / 2023-06-05
- fix security bug
4.2.2 / 2023-04-18
- fix #562: fix unpaired tag when it comes in last of a nested tag. Also throw error when unpaired tag is used as closing tag
4.2.1 / 2023-04-18
- fix: jpath after unpaired tags
4.2.0 / 2023-04-09
- support
updateTag
parser property
4.1.4 / 2023-04-08
- update typings to let user create XMLBuilder instance without options (#556) (By Patrick)
- fix: IsArray option isn't parsing tags with 0 as value correctly #490 (#557) (By Aleksandr Murashkin)
- feature: support
oneListGroup
to group repeated children tags udder single group
4.1.3 / 2023-02-26
- fix #546: Support complex entity value
4.1.2 / 2023-02-12
- Security Fix
4.1.1 / 2023-02-03
- Fix #540: ignoreAttributes breaks unpairedTags
- Refactor XML builder code
4.1.0 / 2023-02-02
- Fix '<' or '>' in DTD comment throwing an error. (#533) (By Adam Baker)
- Set "eNotation" to 'true' as default
4.0.15 / 2023-01-25
- make "eNotation" optional
4.0.14 / 2023-01-22
- fixed: add missed typing "eNotation" to parse values
4.0.13 / 2023-01-07
- preserveorder formatting (By mdeknowis)
- support
transformAttributeName
(By Erik Rothoff Andersson)
4.0.12 / 2022-11-19
- fix typescript
4.0.11 / 2022-10-05
- fix #501: parse for entities only once
4.0.10 / 2022-09-14
- fix broken links in demo site (By Yannick Lang)
- fix #491: tagValueProcessor type definition (By Andrea Francesco Speziale)
- Add jsdocs for tagValueProcessor
4.0.9 / 2022-07-10
- fix #470: stop-tag can have self-closing tag with same name
- fix #472: stopNode can have any special tag inside
- Allow !ATTLIST and !NOTATION with DOCTYPE
- Add transformTagName option to transform tag names when parsing (#469) (By Erik Rothoff Andersson)
4.0.8 / 2022-05-28
- Fix CDATA parsing returning empty string when value = 0 (#451) (By ndelanou)
- Fix stopNodes when same tag appears inside node (#456) (By patrickshipe)
- fix #468: prettify own properties only
4.0.7 / 2022-03-18
- support CDATA even if tag order is not preserved
- support Comments even if tag order is not preserved
- fix #446: XMLbuilder should not indent XML declaration
4.0.6 / 2022-03-08
- fix: call tagValueProcessor only once for array items
- fix: missing changed for #437
4.0.5 / 2022-03-06
- fix #437: call tagValueProcessor from XML builder
4.0.4 / 2022-03-03
- fix #435: should skip unpaired and self-closing nodes when set as stopnodes
4.0.3 / 2022-02-15
- fix: ReferenceError when Bundled with Strict (#431) (By Andreas Heissenberger)
4.0.2 / 2022-02-04
- builder supports
suppressUnpairedNode
- parser supports
ignoreDeclaration
andignorePiTags
- fix: when comment is parsed as text value if given as
<!--> ...
#423 - builder supports decoding
&
4.0.1 / 2022-01-08
- fix builder for pi tag
- fix: support suppressBooleanAttrs by builder
4.0.0 / 2022-01-06
- Generating different combined, parser only, builder only, validator only browser bundles
- Keeping cjs modules as they can be imported in cjs and esm modules both. Otherwise refer
esm
branch.
4.0.0-beta.8 / 2021-12-13
- call tagValueProcessor for stop nodes
4.0.0-beta.7 / 2021-12-09
- fix Validator bug when an attribute has no value but '=' only
- XML Builder should suppress unpaired tags by default.
- documents update for missing features
- refactoring to use Object.assign
- refactoring to remove repeated code
4.0.0-beta.6 / 2021-12-05
- Support PI Tags processing
- Support
suppressBooleanAttributes
by XML Builder for attributes with valuetrue
.
4.0.0-beta.5 / 2021-12-04
- fix: when a tag with name "attributes"
4.0.0-beta.4 / 2021-12-02
- Support HTML document parsing
- skip stop nodes parsing when building the XML from JS object
- Support external entites without DOCTYPE
- update dev dependency: strnum v1.0.5 to fix long number issue
4.0.0-beta.3 / 2021-11-30
- support global stopNodes expression like "*.stop"
- support self-closing and paired unpaired tags
- fix: CDATA should not be parsed.
- Fix typings for XMLBuilder (#396)(By Anders Emil Salvesen)
- supports XML entities, HTML entities, DOCTYPE entities
- rename
attrMap
toattibutes
in parser output whenpreserveOrder:true
- supports unpairedTags
- Parser returns an array now
- to make the structure common
- and to return root level detail
- renamed
cdataTagName
tocdataPropName
- Added
commentPropName
- fix typings
- Name change of many configuration properties.
attrNodeName
toattributesGroupName
attrValueProcessor
toattributeValueProcessor
parseNodeValue
toparseTagValue
ignoreNameSpace
toremoveNSPrefix
numParseOptions
tonumberParseOptions
- spelling correction for
suppressEmptyNode
- Name change of cli and browser bundle to fxparser
isArray
option is added to parse a tag into arraypreserveOrder
option is added to render XML in such a way that the result js Object maintains the order of properties same as in XML.- Processing behaviour of
tagValueProcessor
andattributeValueProcessor
are changes with extra input parameters - j2xparser is renamed to XMLBuilder.
- You need to build XML parser instance for given options first before parsing XML.
- fix #327, #336: throw error when extra text after XML content
- fix #330: attribute value can have '\n',
- fix #350: attrbiutes can be separated by '\n' from tagname
3.21.1 / 2021-10-31
- Correctly format JSON elements with a text prop but no attribute props ( By haddadnj )
3.21.0 / 2021-10-25
- feat: added option
rootNodeName
to set tag name for array input when converting js object to XML. - feat: added option
alwaysCreateTextNode
to force text node creation (by: @massimo-ua) ⚠️ feat: Better error location for unclosed tags. (by @Gei0r)- Some error messages would be changed when validating XML. Eg
{ InvalidXml: "Invalid '[ \"rootNode\"]' found." }
→{InvalidTag: "Unclosed tag 'rootNode'."}
{ InvalidTag: "Closing tag 'rootNode' is expected inplace of 'rootnode'." }
→{ InvalidTag: "Expected closing tag 'rootNode' (opened in line 1) instead of closing tag 'rootnode'."}
- Some error messages would be changed when validating XML. Eg
⚠️ feat: Column in error response when validating XML
{
"code": "InvalidAttr",
"msg": "Attribute 'abc' is repeated.",
"line": 1,
"col": 22
}
3.20.1 / 2021-09-25
- update strnum package
3.20.0 / 2021-09-10
- Use strnum npm package to parse string to number
- breaking change: long number will be parsed to scientific notation.
3.19.0 / 2021-03-14
- License changed to MIT original
- Fix #321 : namespace tag parsing
3.18.0 / 2021-02-05
- Support RegEx and function in arrayMode option
- Fix #317 : validate nested PI tags
3.17.4 / 2020-06-07
- Refactor some code to support IE11
- Fix:
<tag >
space as attribute string
3.17.3 / 2020-05-23
- Fix: tag name separated by \n \t
- Fix: throw error for unclosed tags
3.17.2 / 2020-05-23
- Fixed an issue in processing doctype tag
- Fixed tagName where it should not have whitespace chars
3.17.1 / 2020-05-19
- Fixed an issue in checking opening tag
3.17.0 / 2020-05-18
- parser: fix '<' issue when it comes in aatr value
- parser: refactoring to remove dependency from regex
- validator: fix IE 11 issue for error messages
- updated dev dependencies
- separated benchmark module to sub-module
- breaking change: comments will not be removed from CDATA data
3.16.0 / 2020-01-12
- validaor: fix for ampersand characters (#215)
- refactoring to support unicode chars in tag name
- update typing for validator error
3.15.1 / 2019-12-09
- validaor: fix multiple roots are not allowed
3.15.0 / 2019-11-23
- validaor: improve error messaging
- validator: add line number in case of error
- validator: add more error scenarios to make it more descriptive
3.14.0 / 2019-10-25
- arrayMode for XML to JS obj parsing
3.13.0 / 2019-10-02
- pass tag/attr name to tag/attr value processor
- inbuilt optional validation with XML parser
3.12.21 / 2019-10-02
- Fix validator for unclosed XMLs
- move nimnjs dependency to dev dependency
- update dependencies
3.12.20 / 2019-08-16
- Revert: Fix #167: '>' in attribute value as it is causing high performance degrade.
3.12.19 / 2019-07-28
- Fix js to xml parser should work for date values. (broken:
tagValueProcessor
will receive the original value instead of string always) (breaking change)
3.12.18 / 2019-07-27
- remove configstore dependency
3.12.17 / 2019-07-14
- Fix #167: '>' in attribute value
3.12.16 / 2019-03-23
- Support a new option "stopNodes". (#150)
Accept the list of tags which are not required to be parsed. Instead, all the nested tag and data will be assigned as string. - Don't show post-install message
3.12.12 / 2019-01-11
- fix : IE parseInt, parseFloat error
3.12.11 / 2018-12-24
- fix #132: "/" should not be parsed as boolean attr in case of self closing tags
3.12.9 / 2018-11-23
- fix #129 : validator should not fail when an atrribute name is 'length'
3.12.8 / 2018-11-22
- fix #128 : use 'attrValueProcessor' to process attribute value in json2xml parser
3.12.6 / 2018-11-10
- Fix #126: check for type
3.12.4 / 2018-09-12
- Fix: include tasks in npm package
3.12.3 / 2018-09-12
- Fix CLI issue raised in last PR
3.12.2 / 2018-09-11
- Fix formatting for JSON to XML output
- Migrate to webpack (PR merged)
- fix cli (PR merged)
3.12.0 / 2018-08-06
- Support hexadecimal values
- Support true number parsing
3.11.2 / 2018-07-23
- Update Demo for more options
- Update license information
- Update readme for formatting, users, and spelling mistakes
- Add missing typescript definition for j2xParser
- refactoring: change filenames
3.11.1 / 2018-06-05
- fix #93: read the text after self closing tag
3.11.0 / 2018-05-20
- return defaultOptions if there are not options in buildOptions function
- added localeRange declaration in parser.d.ts
- Added support of cyrillic characters in validator XML
- fixed bug in validator work when XML data with byte order marker
3.10.0 / 2018-05-13
- Added support of cyrillic characters in parsing XML to JSON
3.9.11 / 2018-05-09
- fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/80 fix nimn chars
- update package information
- fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/86: json 2 xml parser : property with null value should be parsed to self closing tag.
- update online demo
- revert zombiejs to old version to support old version of node
- update dependencies
3.3.10 / 2018-04-23
- fix #77 : parse even if closing tag has space before '>'
- include all css & js lib in demo app
- remove babel dependencies until needed
3.3.9 / 2018-04-18
- fix #74 : TS2314 TypeScript compiler error
3.3.8 / 2018-04-17
- fix #73 : IE doesn't support Object.assign
3.3.7 / 2018-04-14
- fix: use let insted of const in for loop of validator
- Merge pull request
https://github.com/NaturalIntelligence/fast-xml-parser/issues/71s/71 from bb/master
first draft of typings for typhttps://github.com/NaturalIntelligence/fast-xml-parser/issues/69er/issues/69 - Merge pull request
https://github.com/NaturalIntelligence/fast-xml-parser/issues/70s/70 from bb/patch-1
fix some typos in readme
3.3.6 / 2018-03-21
- change arrow functions to full notation for IE compatibility
3.3.5 / 2018-03-15
- fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/67 : attrNodeName invalid behavior
- fix: remove decodeHTML char condition
3.3.4 / 2018-03-14
- remove dependency on "he" package
- refactor code to separate methods in separate files.
- draft code for transforming XML to json string. It is not officially documented due to performance issue.
3.3.0 / 2018-03-05
- use common default options for XML parsing for consistency. And add
parseToNimn
method. - update nexttodo
- update README about XML to Nimn transformation and remove special notes about 3.x release
- update CONTRIBUTING.ms mentioning nexttodo
- add negative case for XML PIs
- validate xml processing instruction tags https://github.com/NaturalIntelligence/fast-xml-parser/issues/62
- nimndata: handle array with object
- nimndata: node with nested node and text node
- nimndata: handle attributes and text node
- nimndata: add options, handle array
- add xml to nimn data converter
- x2j: direct access property with tagname
- update changelog
- fix validator when single quote presents in value enclosed with double quotes or vice versa
- Revert "remove unneded nimnjs dependency, move opencollective to devDependencies and replace it
with more light opencollective-postinstall"
This reverts commitd47aa71
. - Merge pull request: https://github.com/NaturalIntelligence/fast-xml-parser/issues/63 from HaroldPutman/suppress-undefined
Keep undefined nodes out of the XML output : This is useful when you are deleting nodes from the JSON and rewriting XML.
3.2.4 / 2018-03-01
- fix #59 fix in validator when open quote presents in attribute value
- Create nexttodo.md
- exclude static from bitHound tests
- add package lock
3.2.3 / 2018-02-28
- Merge pull request from Delagen/master: fix namespaces can contain the same characters as xml names
3.2.2 / 2018-02-22
- fix: attribute xmlns should not be removed if ignoreNameSpace is false
- create CONTRIBUTING.md
3.2.1 / 2018-02-17
- fix: empty attribute should be parsed
3.2.0 / 2018-02-16
- Merge pull request : Dev to Master
- Update README and version
- j2x:add performance test
- j2x: Remove extra empty line before closing tag
- j2x: suppress empty nodes to self closing node if configured
- j2x: provide option to give indentation depth
- j2x: make optional formatting
- j2x: encodeHTMLchat
- j2x: handle cdata tag
- j2x: handle grouped attributes
- convert json to xml
- nested object
- array
- attributes
- text value
- small refactoring
- Merge pull request: Update cli.js to let user validate XML file or data
- Add option for rendering CDATA as separate property
3.0.1 / 2018-02-09
- fix CRLF: replace it with single space in attributes value only.
3.0.0 / 2018-02-08
- change online tool with new changes
- update info about new options
- separate tag value processing to separate function
- make HTML decoding optional
- give an option to allow boolean attributes
- change cli options as per v3
- Correct comparison table format on README
- update v3 information
- some performance improvement changes
- Make regex object local to the method and move some common methods to util
- Change parser to
- handle multiple instances of CDATA
- make triming of value optionals
- HTML decode attribute and text value
- refactor code to separate files
- Ignore newline chars without RE (in validator)
- validate for XML prolog
- Validate DOCTYPE without RE
- Update validator to return error response
- Update README to add detail about V3
- Separate xmlNode model class
- include vscode debug config
- fix for repeated object
- fix attribute regex for boolean attributes
- Fix validator for invalid attributes
2.9.4 / 2018-02-02 - Merge pull request: Decode HTML characters
- refactor source folder name
- ignore bundle / browser js to be published to npm
2.9.3 / 2018-01-26 - Merge pull request: Correctly remove CRLF line breaks
- Enable to parse attribute in online editor
- Fix testing demo app test
- Describe parsing options
- Add options for online demo
2.9.2 / 2018-01-18 - Remove check if tag starting with "XML"
- Fix: when there are spaces before / after CDATA
2.9.1 / 2018-01-16
- Fix: newline should be replaced with single space
- Fix: for single and multiline comments
- validate xml with CDATA
- Fix: the issue when there is no space between 2 attributes
- Fix: https://github.com/NaturalIntelligence/fast-xml-parser/issues/33: when there is newline char in attr val, it doesn't parse
- Merge pull request: fix ignoreNamespace
- fix: don't wrap attributes if only namespace attrs
- fix: use portfinder for run tests, update deps
- fix: don't treat namespaces as attributes when ignoreNamespace enabled
2.9.0 / 2018-01-10
- Rewrite the validator to handle large files.
Ignore DOCTYPE validation. - Fix: When attribute value has equal sign
2.8.3 / 2017-12-15
- Fix: when a tag has value along with subtags
2.8.2 / 2017-12-04
- Fix value parsing for IE
2.8.1 / 2017-12-01
- fix: validator should return false instead of err when invalid XML
2.8.0 / 2017-11-29
- Add CLI option to ignore value conversion
- Fix variable name when filename is given on CLI
- Update CLI help text
- Merge pull request: xml2js: Accept standard input
- Test Node 8
- Update dependencies
- Bundle readToEnd
- Add ability to read from standard input
2.7.4 / 2017-09-22
- Merge pull request: Allow wrap attributes with subobject to compatible with other parsers output
2.7.3 / 2017-08-02
- fix: handle CDATA with regx
2.7.2 / 2017-07-30
- Change travis config for yarn caching
- fix validator: when tag property is same as array property
- Merge pull request: Failing test case in validator for valid SVG
2.7.1 / 2017-07-26
- Fix: Handle val 0
2.7.0 / 2017-07-25
- Fix test for arrayMode
- Merge pull request: Add arrayMode option to parse any nodes as arrays
2.6.0 / 2017-07-14
- code improvement
- Add unit tests for value conversion for attr
- Merge pull request: option of an attribute value conversion to a number (textAttrConversion) the same way as the textNodeConversion option does. Default value is false.
2.5.1 / 2017-07-01
- Fix XML element name pattern
- Fix XML element name pattern while parsing
- Fix validation for xml tag element
2.5.0 / 2017-06-25
- Improve Validator performance
- update attr matching regex
- Add perf tests
- Improve atrr regex to handle all cases
2.4.4 / 2017-06-08
- Bug fix: when an attribute has single or double quote in value
2.4.3 / 2017-06-05
- Bug fix: when multiple CDATA tags are given
- Merge pull request: add option "textNodeConversion"
- add option "textNodeConversion"
2.4.1 / 2017-04-14
- fix tests
- Bug fix: preserve initial space of node value
- Handle CDATA
2.3.1 / 2017-03-15
- Bug fix: when single self closing tag
- Merge pull request: fix .codeclimate.yml
- Update .codeclimate.yml - Fixed config so it does not error anymore.
- Update .codeclimate.yml
2.3.0 / 2017-02-26
- Code improvement
- add bithound config
- Update usage
- Update travis to generate bundle js before running tests
- 1.Browserify, 2. add more tests for validator
- Add validator
- Fix CLI default parameter bug
2.2.1 / 2017-02-05
- Bug fix: CLI default option
preactjs/preact (preact)
v10.26.5
Types
- Return 'AllHTMLAttributes' to manually including all attrs (#4728, thanks @rschristian)
- Correct
hydrateRoot
return type (#4735, thanks @plesiecki) - Update CommandEventHandler type to use EventHandler (#4740, thanks @robertknight)
Fixes
- Avoid cloning reused nodes (#4733, thanks @JoviDeCroock)
- Bring back strict-equality bailout for children even w/ context updates (#4724, thanks @rschristian)
- Effect in memoed boundary should be re-executed when the lazy boundary resolves (#4711, thanks @CaptainWang98)
Maintenance
- Add case for context w/ strictly-equal children (#4725, thanks @rschristian)
- Golf down unnecessary strict equality checks (#4723, thanks @rschristian)
publint/publint (publint)
v0.3.10
Patch Changes
-
Support custom conditions in
"exports"
that points to raw TS or TSX files. This configuration is common in monorepo setups where packages refer to the raw files among themselves using a custom condition so custom aliasing isn't needed. (b34ea94
)With this support, the
"types"
condition is allowed to come after any exports of the raw TS or TSX files. File existence checks are also disabled for raw TS and TSX files reference as after publish these files may intentionally be not published.
remarkjs/remark-rehype (remark-rehype)
v11.1.2
Types
eefd5f1
Fix types for bridge mode with missing overload
Full Changelog: remarkjs/remark-rehype@11.1.1...11.1.2
sass/dart-sass (sass)
v1.86.3
- Fix a bug introduced in 1.86.1 where Sass fails to resolve paths starting with
a..
segment.
v1.86.2
- No user-visible changes.
sveltejs/svelte (svelte)
v5.25.7
Patch Changes
- fix: ensure clearing of old values happens independent of root flushes (#15664)
v5.25.6
Patch Changes
Configuration
📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Changes
Fix build errors being ignored when using concurrency, by using Promise.all
instead of Promise.allSettled
Testing
Added a test fixture that throws an error when built.
Docs
N/A (expected behaviour)
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.32.6
Patch Changes
-
#3030
5bdf139
Thanks @trueberryless! - Updates the type of theisFallback
field in route data fromtrue
toboolean
, keeping it optional but allowingfalse
as a possible value. -
#3018
188b8cf
Thanks @trueberryless! - Adds validation for user configrouteMiddleware
so it does not conflict with Astro's middleware.

Changes
This PR makes astro:config
stable.
Testing
Updated the existing tests.
Docs
/cc @withastro/maintainers-docs for feedback!
Description
- Closes #1239
- This PR adds built-in support for rendering clickable anchor links alongside headings.
Where does this apply?
- For Markdown and MDX files, anchor links are added using
rehype
plugins. This can be disabled withmarkdown: { headingLinks: false }
in Starlight config. - For Markdoc files, anchor links are added with a custom renderer for the
heading
node. This can be disabled by passing{ headingLinks: false }
to the Starlight Markdoc preset. - In Astro components, anchor links can be added with a new
<AnchorHeading>
component.
The anchor link approach
The HTML mark-up approach the anchor links follow is based on Amber Wilson’s Are your Anchor Links Accessible? blog post. (Thank you for sharing your research, Amber!)
The output looks a little like this:
<div>
<h2 id="a-heading">A heading</h2>
<a href="#a-heading">
<span class="sr-only">Section titled “A heading”</span>
<svg>...</svg>
</a>
</div>
- The
<a>
link is placed after the heading element rather than inside it or even wrapping it as some sites do. This ensures that the heading doesn’t contain any additional text (for screenreaders listing headings for example) and also avoids the potentially confusing situation of a link which links to itself. - The accessible “Section titled…” label uses Starlight’s internationalization APIs so it can be localized.
- The heading and link are wrapped in a
<div>
so that we can position the icon link inline at the end of the heading as desired. - There are more notes about the actual styles for the layout in
anchor-links.css
in this PR.
To-do
- Write tests for the rehype plugins.
- Write tests to assert that component and plugin markup matches.
- Fix the use of
rehypeSlug
and use Astro’s built-in heading slugger instead. - Add changesets

Changes
- Addresses feedback from Chris
- With this PR, we don't throw an error in dev if a local font file used is deleted. Instead we show a warning in the terminal
- Allows to remove a bunch of code
Testing
Updated and manual
Docs
N/A

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.6.2
Patch Changes
-
#13606
793ecd9
Thanks @natemoo-re! - Fixes a regression that allowed prerendered code to leak into the server bundle. -
#13576
1c60ec3
Thanks @ascorbic! - Reduces duplicate code in server islands scripts by extracting shared logic into a helper function. -
#13588
57e59be
Thanks @natemoo-re! - Fixes a memory leak when using SVG assets. -
#13589
5a0563d
Thanks @ematipico! - Deprecates the asset utility functionemitESMImage()
and adds a newemitImageMetadata()
to be used insteadThe function
emitESMImage()
is now deprecated. It will continue to function, but it is no longer recommended nor supported. This function will be completely removed in a next major release of Astro.Please replace it with the new function
emitImageMetadata()
as soon as you are able to do so:- import { emitESMImage } from "astro/assets/utils"; + import { emitImageMetadata } from "astro/assets/utils";
The new function returns the same signature as the previous one. However, the new function removes two deprecated arguments that were not meant to be exposed for public use:
_watchMode
andexperimentalSvgEnabled
. Since it was possible to access these with the old function, you may need to verify that your code still works as intended withemitImageMetadata()
. -
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version -
#13548
e588527
Thanks @ryuapp! - Support for Deno to install npm pacakges.Deno requires npm prefix to install packages on npm. For example, to install react, we need to run
deno add npm:react
. But currently the command executed isdeno add react
, which doesn't work. So, we change the package names to have an npm prefix if you are using Deno. -
#13587
a0774b3
Thanks @robertoms99! - Fixes an issue with the client router where some attributes of the root element were not updated during swap, including the transition scope.
@astrojs/db@0.14.11
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version -
Updated dependencies [
3752519
,360cb91
]:- @astrojs/studio@0.1.7
@astrojs/alpinejs@0.4.6
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version
@astrojs/cloudflare@12.4.1
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version -
Updated dependencies []:
- @astrojs/underscore-redirects@0.6.0
@astrojs/markdoc@0.13.4
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version
@astrojs/mdx@4.2.4
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version
@astrojs/netlify@6.2.6
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version -
Updated dependencies []:
- @astrojs/underscore-redirects@0.6.0
@astrojs/preact@4.0.9
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version
@astrojs/react@4.2.4
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version
@astrojs/solid-js@5.0.8
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version
@astrojs/svelte@7.0.10
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version
@astrojs/vue@5.0.10
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version
@astrojs/studio@0.1.7
Patch Changes
-
#13596
3752519
Thanks @jsparkdev! - update vite to latest version to fix CVE -
#13547
360cb91
Thanks @jsparkdev! - Updates vite to the latest version

Changes
Testing
Docs

Changes
- Adds support for entrypoints in local families
variants.src
: path relative to the root, urls and package imports are now supported - Adds support for font techs:
variants.src
can also contain objects withurl
(same rules as line above) and optionaltech
- Fixes a bug where default fallbacks would not be applied
Testing
Updated
Docs
RFC updated

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.6.1
Patch Changes
-
#13519
3323f5c
Thanks @florian-lefebvre! - Refactors some internals to improve Rolldown compatibility -
#13545
a7aff41
Thanks @stramel! - Prevent empty attributes from appearing in the SVG output -
#13552
9cd0fd4
Thanks @ematipico! - Fixes an issue where Astro validated the i18n configuration incorrectly, causing false positives in downstream libraries.

Changes
- Addresses feedback from Chris
- Updates the shape of the local font family:
src
becomesvariants
,src.paths
becomesvariants.src
- Moves the transforms to
resolveFontFamily
so they also apply to fonts added through integrations
Testing
Updated
Docs
RFC updated

Changes
- Deno requires a prefix when installing packages
- So, if you use Deno as your package manager, prepend
npm:
to the library name
Before deno task astro add react
After deno task astro add react
Testing
It was manually tested on local. We can install and try out this PR's astro
.
Docs
I think Astro don't officially supports Deno as a package manager, so I'll write about it if necessary.


Changes
Updating to the latest 1.6.0 which fixes the issue and brings in some optimizations to the regexes it uses.
Fixes #13496
Testing
Added a test to assert that there were no empty attributes =""
in the resultant html with an SVG known to produce it.
Docs
Not necessary as this is just a bug fix.

Changes
- Addresses feedback from the API bash
- Removes the
as
prop. Instead, we generate a newnameWithHash
(hash computed from the family config object) property to avoid conflicts if the same font name is specified more than once - Adds a new required
cssVariable
property. That gives control to the user and avoids having to guess. There's minimal validation, that should handle most mistakes - It simplifies a lot of things by removing some checks and errors that are now unecessary
Testing
Manual and automated
Docs
RFC updated

Changes
Updates the formatting of the changeset for the SVG API breaking changes
Testing
no tests, just docs
Docs
only docs!
Description
This is rather a question / discussion of the decision why the isFallback
type is defined as type true
instead of boolean
:
starlight/packages/starlight/utils/routing/types.ts
Lines 61 to 73 in bdb05e7
export interface Route extends LocaleData { | |
/** Content collection entry for the current page. Includes frontmatter at `data`. */ | |
entry: StarlightDocsEntry; | |
/** Locale metadata for the page content. Can be different from top-level locale values when a page is using fallback content. */ | |
entryMeta: LocaleData; | |
/** @deprecated Migrate to the new Content Layer API and use `id` instead. */ | |
slug: string; | |
/** The slug or unique ID if using the `legacy.collections` flag. */ | |
id: string; | |
/** True if this page is untranslated in the current language and using fallback content from the default locale. */ | |
isFallback?: true; | |
[key: string]: unknown; | |
} |
This has the consequence that my editor gives me the warning (when I use <StarlightPage>
:
My var isFallback
is of type boolean:
I'm not sure if this is an oversight or has a specific reason, therefore I'm creating this as a draft PR...

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.6.0
Minor Changes
-
#13403
dcb9526
Thanks @yurynix! - Adds a new optionalprerenderedErrorPageFetch
option in the Adapter API to allow adapters to provide custom implementations for fetching prerendered error pages.Now, adapters can override the default
fetch()
behavior, for example whenfetch()
is unavailable or when you cannot call the server from itself.The following example provides a custom fetch for
500.html
and404.html
, reading them from disk instead of performing an HTTP call:return app.render(request, { prerenderedErrorPageFetch: async (url: string): Promise<Response> => { if (url.includes("/500")) { const content = await fs.promises.readFile("500.html", "utf-8"); return new Response(content, { status: 500, headers: { "Content-Type": "text/html" }, }); } const content = await fs.promises.readFile("404.html", "utf-8"); return new Response(content, { status: 404, headers: { "Content-Type": "text/html" }, }); });
If no value is provided, Astro will fallback to its default behavior for fetching error pages.
Read more about this feature in the Adapter API reference.
-
#13482
ff257df
Thanks @florian-lefebvre! - Updates Astro config validation to also run for the Integration API. An error log will specify which integration is failing the validation.Now, Astro will first validate the user configuration, then validate the updated configuration after each integration
astro:config:setup
hook has run. This meansupdateConfig()
calls will no longer accept invalid configuration.This fixes a situation where integrations could potentially update a project with a malformed configuration. These issues should now be caught and logged so that you can update your integration to only set valid configurations.
-
#13405
21e7e80
Thanks @Marocco2! - Adds a neweagerness
option forprefetch()
when usingexperimental.clientPrerender
With the experimental
clientPrerender
flag enabled, you can use theeagerness
option onprefetch()
to suggest to the browser how eagerly it should prefetch/prerender link targets.This follows the same API described in the Speculation Rules API and allows you to balance the benefit of reduced wait times against bandwidth, memory, and CPU costs for your site visitors.
For example, you can now use
prefetch()
programmatically with large sets of links and avoid browser limits in place to guard against over-speculating (prerendering/prefetching too many links). Seteagerness: 'moderate'
to take advantage of First In, First Out (FIFO) strategies and browser heuristics to let the browser decide when to prerender/prefetch them and in what order:<a class="link-moderate" href="/nice-link-1">A Nice Link 1</a> <a class="link-moderate" href="/nice-link-2">A Nice Link 2</a> <a class="link-moderate" href="/nice-link-3">A Nice Link 3</a> <a class="link-moderate" href="/nice-link-4">A Nice Link 4</a> ... <a class="link-moderate" href="/nice-link-20">A Nice Link 20</a> <script> import { prefetch } from 'astro:prefetch'; const linkModerate = document.getElementsByClassName('link-moderate'); linkModerate.forEach((link) => prefetch(link.getAttribute('href'), { eagerness: 'moderate' })); </script>
-
#13482
ff257df
Thanks @florian-lefebvre! - Improves integrations error handlingIf an error is thrown from an integration hook, an error log will now provide information about the concerned integration and hook
Patch Changes
-
#13539
c43bf8c
Thanks @ascorbic! - Adds a newsession.load()
method to the experimental session API that allows you to load a session by ID.When using the experimental sessions API, you don't normally need to worry about managing the session ID and cookies: Astro automatically reads the user's cookies and loads the correct session when needed. However, sometimes you need more control over which session to load.
The new
load()
method allows you to manually load a session by ID. This is useful if you are handling the session ID yourself, or if you want to keep track of a session without using cookies. For example, you might want to restore a session from a logged-in user on another device, or work with an API endpoint that doesn't use cookies.// src/pages/api/cart.ts import type { APIRoute } from 'astro'; export const GET: APIRoute = async ({ session, request }) => { // Load the session from a header instead of cookies const sessionId = request.headers.get('x-session-id'); await session.load(sessionId); const cart = await session.get('cart'); return Response.json({ cart }); };
If a session with that ID doesn't exist, a new one will be created. This allows you to generate a session ID in the client if needed.
For more information, see the experimental sessions docs.
-
#13488
d777420
Thanks @stramel! - BREAKING CHANGE to the experimental SVG Component API onlyRemoves some previously available prop, attribute, and configuration options from the experimental SVG API. These items are no longer available and must be removed from your code:
-
The
title
prop has been removed until we can settle on the correct balance between developer experience and accessibility. Please replace anytitle
props on your components witharia-label
:- <Logo title="My Company Logo" /> + <Logo aria-label="My Company Logo" />
-
Sprite mode has been temporarily removed while we consider a new implementation that addresses how this feature was being used in practice. This means that there are no longer multiple
mode
options, and all SVGs will be inline. All instances ofmode
must be removed from your project as you can no longer control a mode:- <Logo mode="inline" /> + <Logo />
import { defineConfig } from 'astro' export default defineConfig({ experimental: { - svg: { - mode: 'sprite' - }, + svg: true } });
-
The default
role
is no longer applied due to developer feedback. Please add the appropriaterole
on each component individually as needed:- <Logo /> + <Logo role="img" /> // To keep the role that was previously applied by default
-
The
size
prop has been removed to better work in combination withviewBox
and additional styles/attributes. Please replacesize
with explicitwidth
andheight
attributes:- <Logo size={64} /> + <Logo width={64} height={64} />
-

Changes
Adds support for loading a session by ID
Adds a new session.load()
method to the experimental session API that allows you to load a session by ID. In normal use a session is loaded automatically from the session cookie. This method allows a session to be loaded manually instead. This has been requested in the RFC, and is useful for cases where the session ID has been persisted somewhere other than the browser cookie. For example, a session ID might be stored in a user database. This would allow that user's session to be loaded when logging-in on another device or in a different browser. It would also allow a session to be loaded in an API when cookies can't be set, such as when loading across domains.
Testing
Added tests
Docs
I will do a separate docs PR

Changes
- Depends on #13515
- In development, only log if there's an error. That also means the download font error is not thrown anymore so someone with connectivity issues can keep developing
- During builds, only one log is added to show something fonts related is happening
Testing
Manual
Docs
N/A

Changes
- Depends on #13533
- Passes the family name as is. If the family name should contain wrapping quotes, then it has to be passed in the config (eg.
family: '"Roboto"'
)
Testing
N/A
Docs
N/A

Changes
- Feedback from the API bash. Renames
defineFontProvider
todefineAstroFontProvider
to avoid the confusion withdefineFontProvider
fromunifont
- Depends on #13515
Testing
N/A
Docs
Later

Changes
This PR unflags the session API. Aside from removing the flag, this changes some of the details of how session configuration is validated, because of them no longer being opt-in. Previously, if a user had enabled the flag and not configured a driver we would throw when validating the config We can no longer do this because we don't know if the sessions will be used. Instead, we use a getter for the session object in context and the Astro global. Previously this would just be undefined. Now it also logs a warning if accessed, explaining why it is undefined. As well as doing this when there is no driver, it will catch attempts to access it in prerendered pages. This would previously fail with a headers error when it tried to set a cookie. It now fails earlier, with a more helpful error message.
Testing
The configuration tests have mostly been removed, as they no longer apply. Other tests have been updated to remove flags.
Docs
This will have a lot of docs changes, to come later.


This PR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
@preact/signals (source) | ^2.0.1 -> ^2.0.2 |
||||
@types/react (source) | ^18.3.19 -> ^18.3.20 |
||||
svelte (source) | ^5.23.2 -> ^5.25.3 |
Configuration
📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

This PR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
@codspeed/vitest-plugin (source) | 4.0.0 -> 4.0.1 |
||||
@libsql/client (source) | ^0.15.0 -> ^0.15.1 |
||||
@preact/signals (source) | ^2.0.1 -> ^2.0.2 |
||||
@tailwindcss/vite (source) | ^4.0.15 -> ^4.0.17 |
||||
@types/estree (source) | ^1.0.6 -> ^1.0.7 |
||||
@types/react (source) | ^18.3.19 -> ^18.3.20 |
||||
@types/semver (source) | ^7.5.8 -> ^7.7.0 |
||||
eslint (source) | ^9.22.0 -> ^9.23.0 |
||||
svelte (source) | ^5.23.2 -> ^5.25.3 |
||||
tailwindcss (source) | ^4.0.15 -> ^4.0.17 |
||||
typescript-eslint (source) | ^8.27.0 -> ^8.28.0 |
Release Notes
CodSpeedHQ/codspeed-node (@codspeed/vitest-plugin)
v4.0.1
What's Changed
- feat: vitest-plugin - allow vite 6 in peer dependencies by @belgattitude in https://github.com/CodSpeedHQ/codspeed-node/pull/43
New Contributors
- @belgattitude made their first contribution in https://github.com/CodSpeedHQ/codspeed-node/pull/43
Full Changelog: CodSpeedHQ/codspeed-node@v4.0.0...v4.0.1
typescript-eslint/typescript-eslint (typescript-eslint)
v8.28.0
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
Configuration
📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Changes
getStaticPaths()
is run in another scope, that makes it impossible to access Astro render context. For some use cases of implementing getStaticPaths()
, it becomes necessary to know the routePattern
to calculate the params and props for each page route.
For example imagine you have a route [...locale]/[files]/[slug].astro
and you want to implement a getStaticPaths()
that,
- provides the current
[...locale]
- provides
[files]
according to the locale, so you can have a path translation - provides a slugified version of the pages title as
[slug]
- calculate all translations of a page so you can offer a language switcher that directly links the user to the other language.
To lookup what [files]
should be substituted with, you need to parse the routePattern
as well as for calculating the translations.
This change provides routePattern
via GetStaticPathsOptions
. It isn't a breaking change as whoever wants to consume it can, but doesn't need to.
A workaround would be calculating this props during rendering of the actual page. For each render getCollection()
needs to be invoked again. Then I would also wonder why props
are returned from getStaticPaths()
after all.
Example code
[...locale]/[files]/[slug].astro
import { C } from "../../../site.config";
export const getStaticPaths: GetStaticPaths = async ({ routePattern }) => {
const filesCollection = await getCollection("files");
return translationPaths(filesCollection, {
routePattern: routePattern,
defaultLocale: C.DEFAULT_LOCALE,
segmentTranslations: C.SEGMENT_TRANSLATIONS,
});
};
site.config.ts
export const C = {
LOCALES: ["de-CH", "zh-CN"],
DEFAULT_LOCALE: "de-CH" as const,
SEGMENT_TRANSLATIONS: {
"de-CH": {
files: "dateien",
},
"zh-CN": {
files: "files",
},
},
};
translation-path.ts
import { GetStaticPathsResult } from "astro";
import limax from "limax";
import { checkI18nLoaderCollection } from "../schemas/i18n-loader-schema";
import { buildPath, parseRoutePattern, SegmentTranslations } from "../utils/route";
type Config = {
routePattern: string;
segmentTranslations: SegmentTranslations;
defaultLocale: string;
localeParamName?: string;
slugParamName?: string;
titleDataKey?: string;
};
const defaultConfig = {
localeParamName: "locale",
slugParamName: "slug",
titleDataKey: "title",
};
function getSegmentTranslations(segments: SegmentTranslations, locale: string) {
if (!segments[locale]) throw new Error(`No slugs found for locale ${locale}`);
return segments[locale];
}
export function translationPaths(collection: unknown[], config: Config): GetStaticPathsResult {
checkI18nLoaderCollection(collection);
const { routePattern, segmentTranslations, defaultLocale, localeParamName, slugParamName, titleDataKey } = { ...defaultConfig, ...config };
const route = parseRoutePattern(routePattern);
route.forEach((segment, index) => {
if (
segment.param &&
segment.value !== localeParamName &&
index !== route.length - 1 &&
!Object.values(segmentTranslations).every((translation) => translation[segment.value])
) {
throw new Error(`No slugs found for route segment ${segment.value}`);
}
});
return collection.map((entry) => {
const segments = getSegmentTranslations(segmentTranslations, entry.data.locale);
const translationId = entry.data.translationId;
const entryTranslations = collection.filter((entry) => entry.data.translationId === translationId);
const translations = entryTranslations.reduce(
(previous, current) => {
const segmentValues = getSegmentTranslations(segmentTranslations, current.data.locale);
segmentValues[localeParamName] = defaultLocale === current.data.locale ? "" : current.data.locale;
const slugValue = titleDataKey ? (current.data as Record<string, string | undefined>)[titleDataKey] : undefined;
if (slugValue) {
segmentValues[slugParamName] = limax(slugValue);
}
return {
...previous,
[current.data.locale]: buildPath(route, segmentValues),
};
},
{} as Record<string, string>
);
return {
params: {
...segments,
},
props: {
translationId,
translations,
},
};
});
}
Testing
I don't know how to test this. I'm very happy to add tests, if you can point me in the right direction.
Docs
/cc @withastro/maintainers-docs for feedback!
The new options should be mentioned in https://docs.astro.build/en/reference/routing-reference/#getstaticpaths.

Changes
- Applies some of the changes from https://github.com/vitejs/vite-ecosystem-ci/blob/rolldown-vite/tests-patches/astro/astro.patch
- Updates all vite plugins
load
to return an object instead of a string so it's easier to adopt Rolldown module types
Testing
Should pass
Docs
N/A. No changeset since it's a refactor

Changes
- Fixes a case where automatic fallbacks cannot be used with local fonts on node because
FileReader
is not implemented. Depends on seek-oss/capsize#223
Testing
Manual
Docs
N/A

Changes
- We now throw an error if the response from a font file download is not successful
Testing
N/A
Docs
N/A

Changes
- After discussing with @delucis, we came to the conclusion that having
sans-serif
as a default fallback makes sense so users can benefit from automatic fallback generation by default
Testing
N/A
Docs
Will be documented properly alongside all defaults

Changes
- Addresses some of the feedback from the API bash
- Updates the config to be an array at
experimental.fonts
- Updates the config so providers are passed directly to families
- Updates the config so the local font provider is inferred if
src
is provided - Updates how font providers are initialized to be smarter
- Updates the
FontProvider
interface so it doesn't require aname
anymore
Testing
Updated. This PR simplifies types tests a lot
Docs
RFC updated. Docs update will come later, after more feedback from the API bash has been addressed

Changes
Adds support for automatically-provisioning session storage for Cloudflare KV
Automatically configures Cloudflare KV storage when experimental sessions are enabled
If the experimental.session
flag is enabled when using the Cloudflare adapter, Astro will automatically configure the session storage using the Cloudflare KV driver. You can still manually configure the session storage if you need to use a different driver or want to customize the session storage configuration. If you want to use sessions, you will need to create the KV namespace and declare it in your wrangler config. You can do this using the Wrangler CLI:
npx wrangler kv namespace create SESSION
This will log the id of the created namespace. You can then add it to your wrangler.json
/wrangler.toml
file like this:
By default it uses the binding name SESSION
, but if you want to use a different binding name you can do so by passing the sessionKVBindingName
option to the adapter. For example:
import { defineConfig } from 'astro/config';
import cloudflare from '@astrojs/cloudflare';
export default defineConfig({
output: 'server',
site: `http://example.com`,
adapter: cloudflare({
platformProxy: {
enabled: true,
},
sessionKVBindingName: 'MY_SESSION',
}),
experimental: {
session: true,
}
});
Testing
Adds fixture and test suite. To try it on your own site, use the preview release of @astrojs/cloudflare
Docs
Needs updated docs

Description
- New
/shorts
page - Update
CardView
,CardItem
comps
Description
Initially reported in Discord by Chris and Sarah, this PR fixes a list styling issue that can happen when the last child element of a list item is a script tag.
This can naturally happen in Starlight, e.g. in a list of steps where the last element of a step is the first occurence of a set of tabs in the page. The issue is visible in the Starlight documentation of the <Steps>
component:
Before | After | |
---|---|---|
URL | https://starlight.astro.build/components/steps/ | https://deploy-preview-3026--astro-starlight.netlify.app/components/steps/ |
Preview | ![]() |
![]() |
We cannot really target the built-in tabs component to fix this issue, as we could have more components that could lead to the same issue in the future, or the user could have their own component that triggers the issue.
We also cannot fix this issue if only the last child element of a list item is a script tag, as even if rare, the last n child elements could be script tags too.
This leads to quite the complex selector to try to handle all cases, I tried to comment it as much as possible to make it more understandable.

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/cloudflare@12.4.0
Minor Changes
-
#13514
a9aafec
Thanks @ascorbic! - Automatically configures Cloudflare KV storage when experimental sessions are enabledIf the
experimental.session
flag is enabled when using the Cloudflare adapter, Astro will automatically configure the session storage using the Cloudflare KV driver. You can still manually configure the session storage if you need to use a different driver or want to customize the session storage configuration. If you want to use sessions, you will need to create the KV namespace and declare it in your wrangler config. You can do this using the Wrangler CLI:npx wrangler kv namespace create SESSION
This will log the id of the created namespace. You can then add it to your
wrangler.json
/wrangler.toml
file like this:// wrangler.json { "kv_namespaces": [ { "binding": "SESSION", "id": "<your kv namespace id here>", }, ], }
By default it uses the binding name
SESSION
, but if you want to use a different binding name you can do so by passing thesessionKVBindingName
option to the adapter. For example:import { defineConfig } from 'astro/config'; import cloudflare from '@astrojs/cloudflare'; export default defineConfig({ output: 'server', site: `http://example.com`, adapter: cloudflare({ platformProxy: { enabled: true, }, sessionKVBindingName: 'MY_SESSION', }), experimental: { session: true, }, });
See the Cloudflare KV docs for more details on setting up KV namespaces.
See the experimental session docs for more information on configuring session storage.
Patch Changes
-
#13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version -
Updated dependencies []:
- @astrojs/underscore-redirects@0.6.0
astro@5.5.6
Patch Changes
-
#13429
06de673
Thanks @ematipico! - TheActionAPIContext.rewrite
method is deprecated and will be removed in a future major version of Astro -
#13524
82cd583
Thanks @ematipico! - Fixes a bug where the functionsAstro.preferredLocale
andAstro.preferredLocaleList
would return the incorrect locales
when the Astro configuration specifies a list ofcodes
. Before, the functions would return thepath
, instead now the functions
return a list built fromcodes
. -
#13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
@astrojs/db@0.14.10
Patch Changes
-
#13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version -
Updated dependencies [
ff9d69e
]:- @astrojs/studio@0.1.6
@astrojs/alpinejs@0.4.5
Patch Changes
- #13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
@astrojs/markdoc@0.13.3
Patch Changes
- #13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
@astrojs/mdx@4.2.3
Patch Changes
- #13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
@astrojs/netlify@6.2.5
Patch Changes
-
#13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version -
Updated dependencies []:
- @astrojs/underscore-redirects@0.6.0
@astrojs/preact@4.0.8
Patch Changes
- #13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
@astrojs/react@4.2.3
Patch Changes
- #13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
@astrojs/solid-js@5.0.7
Patch Changes
- #13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
@astrojs/svelte@7.0.9
Patch Changes
- #13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
@astrojs/vue@5.0.9
Patch Changes
- #13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
@astrojs/studio@0.1.6
Patch Changes
- #13526
ff9d69e
Thanks @jsparkdev! - updatevite
to the latest version
Description
-
This PR changes how social links are configured in the Starlight options.
-
It switches from a shorthand object syntax to an array of explicit link items:
- social: { - github: 'https://github.com/withastro/starlight', - discord: 'https://astro.build/chat', - }, + social: [ + { icon: 'github', label: 'GitHub', href: 'https://github.com/withastro/starlight' }, + { icon: 'discord', label: 'Discord', href: 'https://astro.build/chat' }, + ],
-
This is a little unfortunate in that it’s a more verbose configuration approach, but it has a few advantages for long-term maintenance:
-
Icons no longer need dedicated built-in labels and code to be used as social links. Any icon can be used if people want (avoiding us needing to decide what counts as a valid social link and what doesn’t).
-
User control of labels means that less common links can be labelled accurately. For example, we avoided adding an
email
social icon because the label could vary depending on site language and context. This change allows people to use the existingemail
icon with a label of their choosing. -
Following #3024, this should be updated to also support user-installed icons reducing the pressure on Starlight to contain icons for every platform in the known universe.
-
Not in scope
- Currently there’s no implementation of localized labels for social links in this PR. There are a few obstacles to implementing that nicely at the moment, and given labels are already not localizable (and for many cases don’t require it where the label is a platform name), we decided to skip that until we refactor some internals to make it easier to support that elegantly.
Also considered
- I also considered whether some hybrid of our current shorthand syntax and the new explicit syntax could make sense to keep config for common platforms terse, but I decided the slightly less verbose syntax didn’t justify users needing to understand two subtly different link shapes (e.g. some icons not needing an explicit
label
).
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.32.5
Patch Changes
-
#3021
e3f881e
Thanks @jsparkdev! - Updates Korean language support -
#3013
5b599dd
Thanks @oluwatobiss! - Adds Substack icon to social links list


Changes
Handles module not found errors thrown when importing the dist/server/entry.mjs
file. If the file itself is missing, the existing error will still be thrown
Testing
Manually. This was replicated by modifying a build output to import a missing package.
Docs
N/A
Description
This PR will add SourceHut as an option in the social config. See discussion: #3008 (comment)
Description
As I noticed myself, the current documentation does not point out that Starlight's custom middleware may or may not conflict with Astro's middleware.
Related discussion: #3017 (pls comment your thoughts there, this PR is just an example)

Changes
Upgrades vite
to the latest due to a CVE of theirs: GHSA-x574-m823-4x7w
Testing
CI should stay green
Docs
N/A
Description
This PR adds a new theme https://github.com/ocavue/starlight-theme-nova to the docs.

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.5.5
Patch Changes
-
#13510
5b14d33
Thanks @florian-lefebvre! - Fixes a case whereastro:env
secrets used in actions would not be available -
#13485
018fbe9
Thanks @ascorbic! - Fixes a bug that caused cookies to ignore custom decode function if has() had been called before -
#13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest. -
#13483
fc2dcb8
Thanks @ematipico! - Fixes a bug where an Astro adapter couldn't call the middleware when there isn't a route that matches the incoming request.
@astrojs/db@0.14.9
Patch Changes
-
#13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest. -
Updated dependencies [
a98ae5b
]:- @astrojs/studio@0.1.5
@astrojs/alpinejs@0.4.4
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.
@astrojs/cloudflare@12.3.1
Patch Changes
-
#13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest. -
Updated dependencies []:
- @astrojs/underscore-redirects@0.6.0
@astrojs/markdoc@0.13.2
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.
@astrojs/mdx@4.2.2
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.
@astrojs/netlify@6.2.4
Patch Changes
-
#13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest. -
Updated dependencies []:
- @astrojs/underscore-redirects@0.6.0
@astrojs/preact@4.0.7
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.
@astrojs/react@4.2.2
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.
@astrojs/solid-js@5.0.6
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.
@astrojs/svelte@7.0.8
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.
@astrojs/tailwind@6.0.2
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.
@astrojs/vue@5.0.8
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.
@astrojs/studio@0.1.5
Patch Changes
- #13505
a98ae5b
Thanks @ematipico! - Updates the dependencyvite
to the latest.

This PR contains the following updates:
Release Notes
preactjs/signals (@preact/signals)
v2.0.2
Patch Changes
-
#655
6a0284c
Thanks @JoviDeCroock! - Avoid usage of.base
and check the_dom
on the vnode instead -
#660
df4df76
Thanks @JoviDeCroock! - Bail out of the animation frame with a setTimeout in case the origin page is hidden
tailwindlabs/tailwindcss (@tailwindcss/vite)
v4.0.17
Fixed
- Fix an issue causing the CLI to hang when processing Ruby files (#17383)
v4.0.16
Added
- Add support for literal values in
--value('…')
and--modifier('…')
(#17304)
Fixed
- Fix class extraction followed by
(
in Pug (#17320) - Ensure
@keyframes
for theme animations are emitted if they are referenced following a comma (#17352) - Vite: Ensure that updates to an imported CSS file are properly propagated after updating source files (#17347)
- Pre process
Slim
templates embedded in Ruby files (#17336) - Error when input and output files resolve to the same file when using the CLI (#17311)
- Add missing suggestions when
--spacing(--value(integer, number))
is used (#17308) - Add
::-webkit-details-marker
pseudo tomarker
variant (#17362)
rollup/rollup (rollup)
v4.37.0
2025-03-23
Features
- Support Musl Linux on Riscv64 architectures (#5726)
- Handles class decorators placed before the
export
keyword (#5871)
Bug Fixes
- Log Rust panic messages to the console when using the WASM build (#5875)
Pull Requests
- #5726: Add support for linux riscv64 musl (@fossdd, @leso-kn)
- #5871: feat: support decorators before or after export (@TrickyPi)
- #5875: capture Rust panic messages and output them to the console. (@luyahan, @lukastaegert)
- #5883: Pin digest of 3rd party actions (@re-taro)
- #5885: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
v4.36.0
2025-03-17
Features
- Extend
renderDynamicImport
hook to provide information about static dependencies of the imported module (#5870) - Export several additional types used by Vite (#5879)
Bug Fixes
- Do not merge chunks if that would create a top-level await cycle between chunks (#5843)
Pull Requests
- #5843: avoiding top level await circular (@TrickyPi, @lukastaegert)
- #5870: draft for extended renderDynamicImport hook (@iczero, @lukastaegert)
- #5876: Update axios overrides to 1.8.2 (@vadym-khodak)
- #5877: chore(deps): update dependency eslint-plugin-vue to v10 (@renovate[bot])
- #5878: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5879: fix: export types (@sxzz)
sveltejs/svelte (svelte)
v5.25.3
Patch Changes
- fix: prevent state runes from being called with spread (#15585)
v5.25.2
Patch Changes
- feat: migrate reassigned deriveds to
$derived
(#15581)
v5.25.1
Patch Changes
- fix: prevent dev server from throwing errors when attempting to retrieve the proxied value of an iframe's contentWindow (#15577)
v5.25.0
Minor Changes
- feat: make deriveds writable (#15570)
v5.24.1
Patch Changes
-
fix: use
get
in constructor for deriveds (#15300) -
fix: ensure toStore root effect is connected to correct parent effect (#15574)
v5.24.0
Minor Changes
- feat: allow state created in deriveds/effects to be written/read locally without self-invalidation (#15553)
Patch Changes
nodejs/undici (undici)
v7.5.0
What's Changed
- feat(docs): button to switch dark and light mode by @shivarm in https://github.com/nodejs/undici/pull/4044
- feat: add mock call history to access request configuration in test by @blephy in https://github.com/nodejs/undici/pull/4029
- fix: Fix retry-handler.js when retry-after header is a Date by @fgiova in https://github.com/nodejs/undici/pull/4084
- Update Cache Tests by @github-actions in https://github.com/nodejs/undici/pull/4027
- Allow disabling autoSelectFamily in an Agent by @hitsthings in https://github.com/nodejs/undici/pull/4070
- Removed clients with unrecoverable errors from the Pool by @mcollina in https://github.com/nodejs/undici/pull/4088
New Contributors
- @blephy made their first contribution in https://github.com/nodejs/undici/pull/4029
- @fgiova made their first contribution in https://github.com/nodejs/undici/pull/4084
- @hitsthings made their first contribution in https://github.com/nodejs/undici/pull/4070
Full Changelog: nodejs/undici@v7.4.0...v7.5.0
Configuration
📅 Schedule: Branch creation - "* 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.
Description
- Closes #
- What does this PR change? Give us a brief description.
- Did you change something visual? A before/after screenshot can be helpful.

Changes
After discussing with @natemoo-re,
Sprite Mode: We decided it was better to push this off until later. Inlining SVGs alone is a big win for Astro and there are some hurdles to creating a good DX without footguns in adding sprites.
Size Prop: We decided to remove this all together as it is pretty opinionated.
Title Prop: We're good with holding off on this until later as well considering there is a good discussion about how this should be implemented by default. Removing this allows users to control the a11y while we work to provide a better DX.
Default Role Attribute: Similar to above, it isn't obvious what we should apply by default. So we'll remove this in favor of a better solution down the road.
Memory Issue: I highly suspect this was tied to Sprite mode but I can look into it more if it still persists.
Additionally, I added a SVGComponent
type that is equivalent to AstroComponentFactory
to provide a better DX for passing SVGs down to other Astro components.
References withastro/roadmap#1035
Testing
Ran tests
Docs
Will need to update the docs but will need some help
/cc @withastro/maintainers-docs for feedback!

Changes
Currently, when a cookie is first parsed from the header the value is cached. This means that if subsequent requests pass a different decode function it will be ignored. This PR changes the behaviour to cache the raw cookie values, and then decode them when getting them. This means the passed decode function will always be used.
Fixes #13078
Testing
Docs

Changes
Currently there is a strange error on Stackblitz where if the config cannot be loaded because of native addons it fails silently, because it throws an uncatchable error. This PR improves error handling so that those errors can be properly logged. This is not Stackblitz-specific, but does special-case the ERR_DLOPEN_DISABLED
error that is thrown. This should be fine, because it's not the sort of error that would ever be recoverable by Vite, as it's due to a setting in Node.
Fixes #13249
Testing
Manually tested on Stackblitz:
https://stackblitz.com/github/ascorbic/withastro-astro-banrd5uv/tree/ascorbic/patch-13439
Docs
Description
- This PR adds Starlight Markdown Blocks to the list of community plugins

Changes
Closes #13409
The fixes use the same logic as the dev server. If we can't find a RouteData
that matches the incoming request, we seek the /404
route, which we usually have, and pass it to the RenderContext
. The RenderContext
eventually calls the middleware.
Testing
I added a new test. Hopefully I didn't introduce any regressions
Docs
N/A

Changes
- In the config schema,
refine
andsuperRefine
were only called when validating the user's config - With this PR, those validations are moved to another schema, called for the user config (as before) as well as at the end of
astro:config:setup
for each integration - Config related schemas are split in several files for clarity
- Integrations hooks are refactored
- Unhandled errors in integration hooks now log which integration and which hook is failing
- I recommend you review the PR without whitespace changes
Testing
Updated, should pass
Docs
Changeset, no docs update needed I think


Changes
Generates the correct target URL for external redirects
Fixes #13479
Testing
Added test
Docs
Description
- add my newest plugin to the list
- modify some other descriptions where I noticed some inconsistencies - mostly dots at end of sentence (please let me know if I should remove those changes if unwanted)

This PR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
@types/react (source) | ^18.3.18 -> ^18.3.19 |
||||
@vitejs/plugin-vue (source) | ^5.2.1 -> ^5.2.3 |
||||
@vitejs/plugin-vue-jsx (source) | ^4.1.1 -> ^4.1.2 |
||||
svelte (source) | ^5.22.6 -> ^5.23.2 |
||||
vite (source) | ^6.2.1 -> ^6.2.2 |
Release Notes
vitejs/vite-plugin-vue (@vitejs/plugin-vue)
v5.2.3
v5.2.2
- feat: pass descriptor vapor flag to compileTemplte (219e007)
- feat(css): tree shake scoped styles (#533) (333094f), closes #533
- fix: generate unique component id (#538) (2704e85), closes #538
- fix: properly interpret boolean values in
define
(#545) (46d3d65), closes #545 - fix(deps): update all non-major dependencies (#482) (cdbae68), closes #482
- fix(deps): update all non-major dependencies (#488) (5d39582), closes #488
- fix(index): move the if check earlier to avoid creating unnecessary ssr when entering return block ( (2135c84), closes #523
- fix(plugin-vue): default value for compile time flags (#495) (ae9d948), closes #495
- fix(plugin-vue): ensure HMR updates styles when SFC is treated as a type dependency (#541) (4abe3be), closes #541
- fix(plugin-vue): resolve sourcemap conflicts in build watch mode with cached modules (#505) (906cebb), closes #505
- fix(plugin-vue): support external import URLs for monorepos (#524) (cdd4922), closes #524
- fix(plugin-vue): support vapor template-only component (#529) (95be153), closes #529
- fix(plugin-vue): suppress warnings for non-recognized pseudo selectors form lightningcss (#521) (15c0eb0), closes #521
- chore(deps): update dependency rollup to ^4.27.4 (#479) (428320d), closes #479
- chore(deps): update dependency rollup to ^4.28.1 (#484) (388403f), closes #484
- chore(deps): update dependency rollup to ^4.29.1 (#493) (b092bc8), closes #493
- chore(deps): update upstream (#503) (8c12b9f), closes #503
- chore(deps): update upstream (#511) (d057351), closes #511
- chore(deps): update upstream (#526) (59946d3), closes #526
- chore(plugin-vue): simplify
resolved
declaration (7288a59)
vitejs/vite-plugin-vue (@vitejs/plugin-vue-jsx)
v4.1.2
- fix: properly interpret boolean values in
define
(#545) (46d3d65), closes #545 - fix(deps): update all non-major dependencies (#482) (cdbae68), closes #482
- fix(deps): update all non-major dependencies (#502) (5bfbbc6), closes #502
- fix(deps): update all non-major dependencies (#510) (28bca4b), closes #510
sveltejs/svelte (svelte)
v5.23.2
Patch Changes
- fix: don't hoist listeners that access non hoistable snippets (#15534)
v5.23.1
Patch Changes
-
fix: invalidate parent effects when child effects update parent dependencies (#15506)
-
fix: correctly match
:has()
selector during css pruning (#15277) -
fix: replace
undefined
withvoid 0
to avoid edge case (#15511) -
fix: allow global-like pseudo-selectors refinement (#15313)
-
chore: don't distribute unused types definitions (#15473)
-
fix: add
files
andgroup
to HTMLInputAttributes in elements.d.ts (#15492) -
fix: throw rune_invalid_arguments_length when $state.raw() is used with more than 1 arg (#15516)
v5.23.0
Minor Changes
- fix: make values consistent between effects and their cleanup functions (#15469)
vitejs/vite (vite)
v6.2.2
- fix: await client buildStart on top level buildStart (#19624) (b31faab), closes #19624
- fix(css): inline css correctly for double quote use strict (#19590) (d0aa833), closes #19590
- fix(deps): update all non-major dependencies (#19613) (363d691), closes #19613
- fix(indexHtml): ensure correct URL when querying module graph (#19601) (dc5395a), closes #19601
- fix(preview): use preview https config, not server (#19633) (98b3160), closes #19633
- fix(ssr): use optional chaining to prevent "undefined is not an object" happening in `ssrRewriteStac (4309755), closes #19612
- feat: show friendly error for malformed
base
(#19616) (2476391), closes #19616 - feat(worker): show asset filename conflict warning (#19591) (367d968), closes #19591
- chore: extend commit hash correctly when ambigious with a non-commit object (#19600) (89a6287), closes #19600
Configuration
📅 Schedule: Branch creation - "* 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.
As discussed today in Talking & Doc'ing, considering we are at the moment only using Renovate for GitHub Actions updates, we want to mostly rely on new pull requests rather than the dashboard.
This PR disables the Renovate Dashboard.

Changes
Follow up to #13471 to align linking style with what we’d usually do
Testing
n/a
Docs
/cc @withastro/maintainers-docs for feedback!
Description
This PR:
- Closes #2989
- Set up default values to the ranking property of merged indexes in pagefind to prevent search collision research between the current site and the sites hosting the merged indexes
- This PR do not changes starlight visual
Test
I've tested locally with 2 variants of the starlight's documentation:
- The first variant is the one from the main branch, without any merged indexes nor any modifications
- The second one is nearly the same as the one from the main branch, with little modifications:
- A markdown file changed, replacing
climate impact
byclimate exchange
- And a merge index pointing to the first site on pagefind configuration
- A markdown file changed, replacing
To test it I searched for climate exchange
(the modified text) on the second site.
Before applying the fix, search shown the original site as first result, and after the fix, modified site was first in search result (due to corp. network policies I can't upload screenshot right now to prove it)
Details
I used this script to build and serve locally the 2 variants:
#! /bin/bash
echo "Installing serve globaly"
npm i -g serve
echo "Building the documentation for port 3001"
if [ -d "dist-3001" ]; then
rm -rf "dist-3001"
fi
pnpm build
mv dist dist-3001
echo "Changing the content of the documentation"
sed -i 's/climate impact/climate exchange/' src/content/docs/environmental-impact.md
sed -i '52i\ \t\t\tpagefind: { indexWeight: 2.0, mergeIndex: [{ bundlePath: "http://localhost:3001/pagefind/", indexWeight: 0.5, }] },' astro.config.mjs
echo "Building the documentation for port 3002"
if [ -d "dist-3002" ]; then
rm -rf "dist-3002"
fi
pnpm build
mv dist dist-3002
echo "Serving the 2 sites"
serve -l 3001 --cors ./dist-3001 &
serve -l 3002 --cors ./dist-3002

Changes
- Updates the Tailwind integration README to show it is deprecated and remove links to docs which are no longer useful
Testing
n/a — docs only
Docs
cc @withastro/maintainers-docs for feedback!
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@astrojs/starlight@0.32.4
Patch Changes
@astrojs/starlight-tailwind@3.0.1
Patch Changes
- #2991
b8a4800
Thanks @florian-lefebvre! - Adds support for@astrojs/tailwind
v6
Description
- What does this PR change? Updates the peer dep. I made it a patch since v6 doesn't change anything compared to v5

Changes
Unlike other frameworks, by default, preact and svelte don't replace the target element content when rendering (via render
or mount
) respectively. This caused fallback content to remain when using client:only
. This PR empties the target element before rendering.
Fixes #12513
Testing
Added e2e tests
Docs

Changes
- There was a regression in #13401 that made impossible to provide an object without a
provider
for a family - This PR moves some things around to have types working properly
Testing
Updates the types tests
Docs
N/A
This PR should hopefully disable packageManager
updates.
Description
This aims to fix the GitHub labeler action that runs for every PR for compatibility with v5.
Their docs are pretty bad, but IIUC, they introduced different match types which means we need to use a changed-files
key for each of our existing labels.
Based on https://docs.renovatebot.com/docker/#disable-all-docker-renovation, this PR disables all Docker renovations, e.g. like this one #2981

Changes
- Now generates types for the
Font
component family prop - Fixes a bug where the map passed to the virtual module was not using
family.as
if provided
Testing
Updated + manual
Docs
N/A

Changes
Currently the Cloudflare adapter attempts to move the _redirects
and _routes.json
files out of the base dir into the root when a base value is set in the config. This fails, because the files are already created in the root. This PR removes that code path.
Fixes #13162
Testing
Adds tests
Docs
This seems like a useful plugin but isn't listed to easily discovered. So I'm raising this PR.

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/cloudflare@12.3.0
Minor Changes
-
#13444
9721f4a
Thanks @florian-lefebvre! - Adds globalastro:env
supportCloudflare workers now support importing
env
in the global scope. Until now, callingastro:env
APIs had to be done within request scope or the values wereundefined
.With this release, they can be called anywhere server-side, like any other official adapter.
Patch Changes
-
#13463
d5ad591
Thanks @ascorbic! - Fixes a bug that caused builds to fail when a base directory is configured -
Updated dependencies []:
- @astrojs/underscore-redirects@0.6.0
astro@5.5.4
Patch Changes
-
#13457
968e713
Thanks @ascorbic! - Sets correct response status text for custom error pages -
#13447
d80ba2b
Thanks @ematipico! - Fixes an issue wheresite
was added to the generated redirects. -
#13481
e9e9245
Thanks @martrapp! - Makes server island work with the client router again. -
#13484
8b5e4dc
Thanks @ascorbic! - Display useful errors when config loading fails because of Node addons being disabled on Stackblitz
@astrojs/preact@4.0.6
Patch Changes
@astrojs/svelte@7.0.7
Patch Changes
@astrojs/tailwind@6.0.1
Patch Changes
- #13471
020c542
Thanks @delucis! - Updates the README to indicate that the Tailwind integration is deprecated
@astrojs/vercel@8.1.3
Patch Changes

Changes
Currently if a user has a custom 404.astro
or 500.astro
we set the correct status code in the response, but not the correct status text, instead leaving the default OK
. This PR ensures the correct text is set too.
Fixes #13259
Testing
Added tests
Docs

Changes
This PR restores the workflow removed in #13435
The workflow is now fixed: tj-actions/changed-files#2464 (comment)
Testing
Once approved, I will merge this PR and trigger again a renovate bot PR so it can pin the actions via digest.
Docs
N/A

Changes
Due to the recent events that happened with changed-files
, this PR enforces the use of the commit digests for our GH actions, instead of a tag.
I also added a group to renovate, so renovate will make a PR to update them all at once.
Testing
Once merged, renovate should update its dependency board. I will trigger a PR
Docs
N/A

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@astrojs/sitemap@3.3.0
Minor Changes
- #13448
91c9503
Thanks @ematipico! - Add support for XSL in sitemap-index.xml
astro@5.5.3
Patch Changes
-
#13448
91c9503
Thanks @ematipico! - Upgrade to shiki v3 -
#13448
91c9503
Thanks @ematipico! - Handleserver.allowedHosts
when the value is true without attempting to push it into an array. -
#13448
91c9503
Thanks @ematipico! - Fixes a bug that caused some very large data stores to save incomplete data. -
#13448
91c9503
Thanks @ematipico! - Adds a new function calledinsertPageRoute
to the Astro Container API.The new function is useful when testing routes that, for some business logic, use
Astro.rewrite
.For example, if you have a route
/blog/post
and for some business decision there's a rewrite to/generic-error
, the container API implementation will look like this:import Post from '../src/pages/Post.astro'; import GenericError from '../src/pages/GenericError.astro'; import { experimental_AstroContainer as AstroContainer } from 'astro/container'; const container = await AstroContainer.create(); container.insertPageRoute('/generic-error', GenericError); const result = await container.renderToString(Post); console.log(result); // this should print the response from GenericError.astro
This new method only works for page routes, which means that endpoints aren't supported.
-
#13448
91c9503
Thanks @ematipico! - Fixes a bug that caused theastro add
command to ignore the--yes
flag for third-party integrations -
#13448
91c9503
Thanks @ematipico! - Prevent bad value in x-forwarded-host from crashing request -
#13448
91c9503
Thanks @ematipico! - Fix an issue in the Container API, where therenderToString
function doesn't render adequately nested slots when they are components. -
Updated dependencies [
91c9503
]:- @astrojs/markdown-remark@6.3.1
@astrojs/markdoc@0.13.1
Patch Changes
- Updated dependencies [
91c9503
]:- @astrojs/markdown-remark@6.3.1
@astrojs/mdx@4.2.1
Patch Changes
-
#13448
91c9503
Thanks @ematipico! - Upgrade to shiki v3 -
Updated dependencies [
91c9503
]:- @astrojs/markdown-remark@6.3.1
@astrojs/markdown-remark@6.3.1
Patch Changes
- #13448
91c9503
Thanks @ematipico! - Upgrade to shiki v3

Changes
Closes #13371
To avoid possible breaking changes with the canonical tag, now the function that creates the HTML redirect accepts a relative location and an absolution location.
Testing
Added a new test. I also tested it manually to make sure that it keeps working as expected.
Docs
N/A
Description
- Closes # - did not create an issue first
- Add social icon for
npm
- A work of art:

Can't make it any smaller (SVGOMG makes it larger)
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.32.3
Patch Changes
-
#2955
77b6a41
Thanks @trueberryless! - Adds 5 new icons:figma
,sketch
,vim
,vscode
, andzed
. -
#2961
da57fab
Thanks @ematipico! - Adds 1 new icon:jetbrains
.

Changes
- Allows using
astro:env
APIs globally on cloudflare - Updates wrangler to its latest version. There are breaking changes that should not affect us https://developers.cloudflare.com/workers/wrangler/migration/update-v3-to-v4/
- Closes #13475 (doesn't solve the cause really but should deal with that anyways)
Testing
Should still pass
Docs

Changes
This follows a RFC review from @matthewp
- By default, we try to generate automatic fallbacks
- With this PR, set
automaticFallback: false
on a family to disable this behaviors
Testing
Adds a test
Docs
RFC has been updated

This PR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
miniflare (source) | ^3.20250224.0 -> ^4.20250317.0 |
Release Notes
cloudflare/workers-sdk (miniflare)
v4.20250317.0
Minor Changes
- #8445
74b0c73
Thanks @lambrospetrou! - D1 local developer experience supports sessions API bookmarks
Patch Changes
-
#8538
5ae180e
Thanks @emily-shen! - chore: update dependencies of "miniflare" packageThe following dependency versions have been updated:
Dependency From To workerd 1.20250310.0 1.20250317.0 @cloudflare/workers-types ^4.20250310.0 ^4.20250317.0
v4.20250310.0
Major Changes
-
#7334
869ec7b
Thanks @penalosa! - The--node-compat
flag andnode_compat
config properties are no longer supported as of Wrangler v4. Instead, use thenodejs_compat
compatibility flag. This includes the functionality from legacynode_compat
polyfills and natively implemented Node.js APIs. See https://developers.cloudflare.com/workers/runtime-apis/nodejs for more information.If you need to replicate the behaviour of the legacy
node_compat
feature, refer to https://developers.cloudflare.com/workers/wrangler/migration/update-v3-to-v4/ for a detailed guide. -
#7334
869ec7b
Thanks @penalosa! - Packages in Workers SDK now support the versions of Node that Node itself supports (Current, Active, Maintenance). Currently, that includes Node v18, v20, and v22.
v3.20250310.1
Patch Changes
- #8453
f90a669
Thanks @workers-devprod! - trigger dummy v3 maintenance release for testing
v3.20250310.0
Patch Changes
-
#8423
8242e07
Thanks @dependabot! - chore: update dependencies of "miniflare" packageThe following dependency versions have been updated:
Dependency From To workerd 1.20250224.0 1.20250310.0 @cloudflare/workers-types ^4.20250224.0 ^4.20250310.0 -
#8390
53e6323
Thanks @GregBrimble! - Parse and apply metafiles (_headers
and_redirects
) inwrangler dev
for Workers Assets
Configuration
📅 Schedule: Branch creation - "* 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.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

This PR contains the following updates:
Release Notes
microsoft/playwright (@playwright/test)
v1.51.1
Highlights
https://github.com/microsoft/playwright/issues/35093 - [Regression]: TimeoutOverflowWarning: 2149630
.634 does not fit into a 32-bit signed integer
https://github.com/microsoft/playwright/issues/35138 - [Regression]: TypeError: Cannot read properties of undefined (reading 'expectInfo')
Browser Versions
- Chromium 134.0.6998.35
- Mozilla Firefox 135.0
- WebKit 18.4
This version was also tested against the following stable channels:
- Google Chrome 133
- Microsoft Edge 133
tailwindlabs/tailwindcss (@tailwindcss/vite)
v4.0.15
v4.0.14
Fixed
- Do not extract candidates with JS string interpolation
${
(#17142) - Fix extraction of variants containing
.
character (#17153) - Fix extracting candidates in Clojure/ClojureScript (#17087)
v4.0.13
Fixed
- Fix Haml pre-processing (#17051)
- Ensure
.node
and.wasm
files are not scanned for utilities (#17123) - Improve performance when scanning JSON files (#17125)
- Fix extracting candidates containing dots in Haml, Pug, and Slim pre processors (#17094, #17085, #17113)
- Don't create invalid CSS when encountering a link wrapped in square brackets (#17129)
alpinejs/alpine (alpinejs)
v3.14.9
What's Changed
- Fix focus documentation example code by @iamshcc in https://github.com/alpinejs/alpine/pull/4496
- Add skip children to morph by @joshhanley in https://github.com/alpinejs/alpine/pull/4568
New Contributors
- @iamshcc made their first contribution in https://github.com/alpinejs/alpine/pull/4496
Full Changelog: alpinejs/alpine@v3.14.8...v3.14.9
ai/nanoid (nanoid)
v5.1.5
- Fixed latest version on npm after 3.x release.
v5.1.4
- Fixed latest version on npm after 3.x release.
antfu-collective/package-manager-detector (package-manager-detector)
v1.1.0
🚀 Features
- Support
devEngines
field - by @zanminkian in https://github.com/antfu-collective/package-manager-detector/issues/50 (ba53a)
View changes on GitHub
sass/dart-sass (sass)
v1.86.0
-
Add support for
%
as an expression in its own right. It will still be parsed
as the modulo operator when between two other expressions, but in any other
context it will be an expression whose value is the unquoted string%
. -
Consider
attr()
to be a special number function that can be used as a
channel in color functions. -
Deprecate user-defined functions named
type()
so that we can eventually
support the new CSStype()
function.
Dart API
- Increase the minimum Dart SDK to 3.6.0.
typescript-eslint/typescript-eslint (typescript-eslint)
v8.27.0
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
vitest-dev/vitest (vitest)
v3.0.9
🐞 Bug Fixes
- Typings of
ctx.skip()
asnever
- by @sirlancelot in https://github.com/vitest-dev/vitest/issues/7608 (09f35) - Cleanup vitest in public
resolveConfig
API - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7623 (db14a) - Fix
toHaveBeenCalledWith(asymmetricMatcher)
withundefined
arguments - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7624 (0fb21) - Race condition in RPC filesystem cache. - by @dts in https://github.com/vitest-dev/vitest/issues/7531 (b7f55)
- Fix
getState().testPath
during collection with no isolation - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7640 (3fb3f) - Support custom toString method in %s format - by @pengooseDev in https://github.com/vitest-dev/vitest/issues/7637 (46d93)
- browser:
- Fail playwright timeouts earlier than a test timeout - by @sheremet-va and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7565 (5eb4c)
- Remove @testing-library/dom from dependencies #7555)" - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7628 and https://github.com/vitest-dev/vitest/issues/7555 (94b27)
- coverage:
- Browser mode +
coverage.all
- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7597 (422ba)
- Browser mode +
- runner:
- Show stacktrace on hook timeout error - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7502 (268a1)
- vite-node:
- Fix source map of inlined node_modules - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7557 (34aa3)
- Fix missing
buildStart
- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7652 (29f5a)
- web-worker:
- Ensure
removeEventListener
is bound to worker - by @joelgallant in https://github.com/vitest-dev/vitest/issues/7631 (ff42b)
- Ensure
View changes on GitHub
Configuration
📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Changes
- Fixes: #13342
- Fix handling of server.allowedHosts when the value is true.
- Ensures that a boolean
true
value is accepted without attempting to convert it into an array.
Testing
- Manually tested by setting allowedHosts: true in astro.config.mjs.
- Verified that astro info and astro dev no longer throw configuration errors.
Docs
No documentation updates needed as this aligns with existing Vite behavior.

Changes
Fixes #13067
In the initial issue, all slots passed to the renderToString function are considered strings, so when we pass them to the renderChild function, the HTML escaper breaks the component.
When a slot is passed to the renderToString function, a new SlotString is created.
I created a SlotString for now, but I don't know if this solution is the best approach (it's my first PR on Astro).
Let me know if it's correct or not. :)
Testing
I added a case inside container-with-vitest\test\Card.test.ts
that reproduces the case displayed on the issue here.
Docs
The documentation is already present as mentioned by the initial issue.

Changes
Refactors the types of ActionAPIContext
to not inherit functions from APIContext
.
Testing
CI should stay green
Docs
N/A

Changes
- If a bad value is provide by this header, we simply ignore it and fallback to the host provided by the host header (if there is one).
- Fixes #13392
Testing
- Test added
Docs
N/A, bug fix

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.6.0
Minor Changes
- #13437
013fa87
Thanks @Vardhaman619! - Handle server.allowedHosts when the value is true without attempting to push it into an array.
Patch Changes
-
#13324
ea74336
Thanks @ematipico! - Upgrade to shiki v3 -
#13372
7783dbf
Thanks @ascorbic! - Fixes a bug that caused some very large data stores to save incomplete data. -
#13358
8c21663
Thanks @ematipico! - Adds a new function calledinsertPageRoute
to the Astro Container API.The new function is useful when testing routes that, for some business logic, use
Astro.rewrite
.For example, if you have a route
/blog/post
and for some business decision there's a rewrite to/generic-error
, the container API implementation will look like this:import Post from '../src/pages/Post.astro'; import GenericError from '../src/pages/GenericError.astro'; import { experimental_AstroContainer as AstroContainer } from 'astro/container'; const container = await AstroContainer.create(); container.insertPageRoute('/generic-error', GenericError); const result = await container.renderToString(Post); console.log(result); // this should print the response from GenericError.astro
This new method only works for page routes, which means that endpoints aren't supported.
-
#13426
565583b
Thanks @ascorbic! - Fixes a bug that caused theastro add
command to ignore the--yes
flag for third-party integrations -
#13428
9cac9f3
Thanks @matthewp! - Prevent bad value in x-forwarded-host from crashing request -
#13432
defad33
Thanks @P4tt4te! - Fix an issue in the Container API, where therenderToString
function doesn't render adequately nested slots when they are components. -
Updated dependencies [
ea74336
]:- @astrojs/markdown-remark@6.3.1
@astrojs/sitemap@3.3.0
Minor Changes
- #13421
382f5db
Thanks @sweeneytr! - Add support for XSL in sitemap-index.xml
@astrojs/markdoc@0.13.1
Patch Changes
- Updated dependencies [
ea74336
]:- @astrojs/markdown-remark@6.3.1
@astrojs/mdx@4.2.1
Patch Changes
-
#13324
ea74336
Thanks @ematipico! - Upgrade to shiki v3 -
Updated dependencies [
ea74336
]:- @astrojs/markdown-remark@6.3.1
@astrojs/markdown-remark@6.3.1
Patch Changes
- #13324
ea74336
Thanks @ematipico! - Upgrade to shiki v3

Changes
Ensures that the "x is not an official Astro package" prompt respects the --yes
flag
Fixes #13399
Testing
Manually tested.
Docs

Changes
- Creates astro errors and uses them
Testing
Updated
Docs
N/A

Changes
- Improves vite plugin cleanup
Testing
N/A
Docs
N/A

Changes
- Enables styling of sitemap via XSL (eXtensible Styling Language)
- Passes existing config.xslURL to
SiteMapIndexStream
Docs Link- I assume that a separate config value for
sitemap-index.xml
is unneeded, as historic examples of XSL for sitemaps handle both the index and map XML files.
- I assume that a separate config value for
Testing
- I extended the tests that ensured
sitemap-0.xml
included the XSL to also test thatsitemap-index.xml
includes it.
Docs
I don't believe the docs need to be updated, as the description of the sitemap plugin's config is the only place I've seen XSL (or xslURL
) referenced, and that value's usage doesn't differ in a way that merits documentation. I expected the xslURL
value to behave this way already, from the docs.

Description
This PR adds found new icons: vscode, zed, vim and jetbrains

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.5.2
Patch Changes
-
#13415
be866a1
Thanks @ascorbic! - Reuses experimental session storage object between requests. This prevents memory leaks and improves performance for drivers that open persistent connections to a database. -
#13420
2f039b9
Thanks @ematipico! - It fixes an issue that caused some regressions in how styles are bundled.

Changes
- Validates the name of the font family, to make sure we can generate a proper css variable name
Testing
Added
Docs
N/A

Changes
Moves the storage object to a static property on AstroSession
, meaning it can be reused between requests. This avoids memory leaks and excessive connections when using drivers that open persistent DB connections.
Fixes #13376
Testing
Tested manually. Passes all session tests.
Docs

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.5.1
Patch Changes

Changes
Small fix to types
Testing
Docs

Changes
- Updates how we read font metrics by switching from fontaine to capsize
- Capsize was used under the hood by fontaine. But fontaine abstracted it too much so we couldn't do some caching
- I copied part of fontaine's source which is not tested
- I updated the code from fontaine so it uses less dependencies, so this PR makes Astro lighter
Testing
Updated
Docs
N/A

Changes
If Astro detects that sharp is not installed when trying to transform an image it will throw a MissingSharp
error. However when this happens during a build, we currently catch it and instead throw a CouldNotTransformImage
error, with a message suggesting the image is corrupt. The correct error is buried in the cause
. This PR checks if the thrown error is an AstroError, and if so rethrows it rather than throwing a CouldNotTransformImage
error. This means that the MissingSharp
error is logged correctly.
Testing
Tested manually
Docs

Changes
- What does this change?
New PrefetchOptions
param eagerness
that can be explicitly stated for prefetch()
function.
Usecase: letting a browser manage when a page should be prerendered will simplify web site code compared to default behavior (no eagerness
passed will automatically default to immediate
, causing headcaches if you want to use FIFO strategy available for moderate
and conservative
args)
Reference doc: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/speculationrules#eagerness
Testing
No tests added, as there weren't for PrefetchOptions
Docs
/cc @withastro/maintainers-docs
prefetch()
doc should be updated accordingly to notify users a new option to be passed on

Changes
Currently if a file is edited in dev, any schema errors will be displayed by the Vite dev server as an UnhandledRejectionError
. This is because the schema validation happens in the file watcher, and isn't caught and displayed during the rendering. This ensures that AstroErrors (including InvalidContentEntryDataError
) that are caught by the dev server are recognised and displayed directly, rather than as unhandled rejections.
Testing
Tested manually
Docs

Changes
While working on an adapter, I encountered a scenario where app.match()
correctly matches a route, but the dynamic route ultimately returns a 404. In such cases, a prerendered 404 page needs to be served.
Currently, when a prerendered 404 page exists, fetch
is used to retrieve it. However, in some environments, it would be useful to provide a custom implementation for fetching the prerendered page.
In my specific use case, I am deploying to a Cloudflare Worker, where not all workers can call themselves. This limitation makes it necessary to have a way to override the default fetch
behavior.
This PR introduces support for a user-provided fetch
function (string -> Response
), which will be used when SSR needs to serve a prerendered 404/500 page.
Testing
- Added a test for this specific scenario: a server target with a prerendered 404.
- Updated the test adapter to propagate the custom
fetch
function.
Docs
/cc @withastro/maintainers-docs

Changes
Exposes the functionality implemented in the compiler: withastro/compiler#1055
I added a new experimental flag (name to bikeshed, of course).
Testing
Added a test
Docs

Changes
This PR makes a bunch of changes related to the fonts configuration:
- Extracts schemas to be reused in the Astro config and in types
- Improves schemas to allow more font options (eg.
featureSettings
) - Adds errors to avoid name conflicts. Consider the errors messages placeholders, we'll refine them once team docs make a proper review
I'd like your opinion on a TODO (I added a PR comment as well)
Testing
- Adds unit tests
- Disable whitespace sensitivty as I took the opportunity to improve some things in the config validation test
Docs
N/A

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.5.0
Minor Changes
-
#13402
3e7b498
Thanks @ematipico! - Adds a new experimental flag calledexperimental.preserveScriptOrder
that renders<script>
and<style>
tags in the same order as they are defined.When rendering multiple
<style>
and<script>
tags on the same page, Astro currently reverses their order in your generated HTML output. This can give unexpected results, for example CSS styles being overridden by earlier defined style tags when your site is built.With the new
preserveScriptOrder
flag enabled, Astro will generate the styles in the order they are defined:import { defineConfig } from 'astro/config'; export default defineConfig({ experimental: { preserveScriptOrder: true, }, });
For example, the following component has two
<style>
tags, and both define the same style for thebody
tag:<p>I am a component</p> <style> body { background: red; } </style> <style> body { background: yellow; } </style>
Once the project is compiled, Astro will create an inline style where
yellow
appears first, and thenred
. Ultimately, thered
background is applied:body { background: #ff0; } body { background: red; }
When
experimental.preserveScriptOrder
is set totrue
, the order of the two styles is kept as it is, and in the style generatedred
appears first, and thenyellow
:body { background: red; } body { background: #ff0; }
This is a breaking change to how Astro renders project code that contains multiple
<style>
and<script>
tags in the same component. If you were previously compensating for Astro's behavior by writing these out of order, you will need to update your code.This will eventually become the new default Astro behavior, so we encourage you to add this experimental style and script ordering as soon as you are able! This will help us test the new behavior and ensure your code is ready when this becomes the new normal.
For more information as this feature develops, please see the experimental script order docs.
-
#13352
cb886dc
Thanks @delucis! - Adds support for a newexperimental.headingIdCompat
flagBy default, Astro removes a trailing
-
from the end of IDs it generates for headings ending with
special characters. This differs from the behavior of common Markdown processors.You can now disable this behavior with a new configuration flag:
// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ experimental: { headingIdCompat: true, }, });
This can be useful when heading IDs and anchor links need to behave consistently across your site
and other platforms such as GitHub and npm.If you are using the
rehypeHeadingIds
plugin directly, you can also pass this new option:// astro.config.mjs import { defineConfig } from 'astro/config'; import { rehypeHeadingIds } from '@astrojs/markdown-remark'; import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source'; export default defineConfig({ markdown: { rehypePlugins: [ [rehypeHeadingIds, { experimentalHeadingIdCompat: true }], otherPluginThatReliesOnHeadingIDs, ], }, });
-
#13311
a3327ff
Thanks @chrisirhc! - Adds a new configuration option for Markdown syntax highlightingexcludeLangs
This option provides better support for diagramming tools that rely on Markdown code blocks, such as Mermaid.js and D2 by allowing you to exclude specific languages from Astro's default syntax highlighting.
This option allows you to avoid rendering conflicts with tools that depend on the code not being highlighted without forcing you to disable syntax highlighting for other code blocks.
The following example configuration will exclude highlighting for
mermaid
andmath
code blocks:import { defineConfig } from 'astro/config'; export default defineConfig({ markdown: { syntaxHighlight: { type: 'shiki', excludeLangs: ['mermaid', 'math'], }, }, });
Read more about this new option in the Markdown syntax highlighting configuration docs.
Patch Changes
-
#13404
4e78b4d
Thanks @ascorbic! - Fixes a bug in error handling that saving a content file with a schema error would display an "unhandled rejection" error instead of the correct schema error -
#13379
d59eb22
Thanks @martrapp! - Fixes an edge case where the client router executed scripts twice when used with a custom swap function that only swaps parts of the DOM. -
#13393
6b8fdb8
Thanks @renovate! - Updatesprimsjs
to version 1.30.0, which adds support for more languages and fixes a security advisory which does not affect Astro. -
#13374
7b75bc5
Thanks @ArmandPhilippot! - Fixes the documentation of the i18n configuration wheremanual
was presented as a key ofrouting
instead of an available value. -
#13380
9bfa6e6
Thanks @martrapp! - Fixes an issue where astro:page-load fires before all scripts are executed -
#13407
0efdc22
Thanks @ascorbic! - Displays correct error message when sharp isn't installed -
Updated dependencies [
cb886dc
,a3327ff
]:- @astrojs/markdown-remark@6.3.0
@astrojs/markdoc@0.13.0
Minor Changes
-
#13352
cb886dc
Thanks @delucis! - Adds support for a newexperimental.headingIdCompat
flagBy default, Astro removes a trailing
-
from the end of IDs it generates for headings ending with
special characters. This differs from the behavior of common Markdown processors.You can now disable this behavior with a new configuration flag:
// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ experimental: { headingIdCompat: true, }, });
This can be useful when heading IDs and anchor links need to behave consistently across your site
and other platforms such as GitHub and npm.If you are using the
rehypeHeadingIds
plugin directly, you can also pass this new option:// astro.config.mjs import { defineConfig } from 'astro/config'; import { rehypeHeadingIds } from '@astrojs/markdown-remark'; import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source'; export default defineConfig({ markdown: { rehypePlugins: [ [rehypeHeadingIds, { experimentalHeadingIdCompat: true }], otherPluginThatReliesOnHeadingIDs, ], }, });
Patch Changes
@astrojs/mdx@4.2.0
Minor Changes
-
#13352
cb886dc
Thanks @delucis! - Adds support for a newexperimental.headingIdCompat
flagBy default, Astro removes a trailing
-
from the end of IDs it generates for headings ending with
special characters. This differs from the behavior of common Markdown processors.You can now disable this behavior with a new configuration flag:
// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ experimental: { headingIdCompat: true, }, });
This can be useful when heading IDs and anchor links need to behave consistently across your site
and other platforms such as GitHub and npm.If you are using the
rehypeHeadingIds
plugin directly, you can also pass this new option:// astro.config.mjs import { defineConfig } from 'astro/config'; import { rehypeHeadingIds } from '@astrojs/markdown-remark'; import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source'; export default defineConfig({ markdown: { rehypePlugins: [ [rehypeHeadingIds, { experimentalHeadingIdCompat: true }], otherPluginThatReliesOnHeadingIDs, ], }, });
Patch Changes
@astrojs/markdown-remark@6.3.0
Minor Changes
-
#13352
cb886dc
Thanks @delucis! - Adds support for a newexperimental.headingIdCompat
flagBy default, Astro removes a trailing
-
from the end of IDs it generates for headings ending with
special characters. This differs from the behavior of common Markdown processors.You can now disable this behavior with a new configuration flag:
// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ experimental: { headingIdCompat: true, }, });
This can be useful when heading IDs and anchor links need to behave consistently across your site
and other platforms such as GitHub and npm.If you are using the
rehypeHeadingIds
plugin directly, you can also pass this new option:// astro.config.mjs import { defineConfig } from 'astro/config'; import { rehypeHeadingIds } from '@astrojs/markdown-remark'; import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source'; export default defineConfig({ markdown: { rehypePlugins: [ [rehypeHeadingIds, { experimentalHeadingIdCompat: true }], otherPluginThatReliesOnHeadingIDs, ], }, });
-
#13311
a3327ff
Thanks @chrisirhc! - Adds a new configuration option for Markdown syntax highlightingexcludeLangs
This option provides better support for diagramming tools that rely on Markdown code blocks, such as Mermaid.js and D2 by allowing you to exclude specific languages from Astro's default syntax highlighting.
This option allows you to avoid rendering conflicts with tools that depend on the code not being highlighted without forcing you to disable syntax highlighting for other code blocks.
The following example configuration will exclude highlighting for
mermaid
andmath
code blocks:import { defineConfig } from 'astro/config'; export default defineConfig({ markdown: { syntaxHighlight: { type: 'shiki', excludeLangs: ['mermaid', 'math'], }, }, });
Read more about this new option in the Markdown syntax highlighting configuration docs.

Changes
Use package-manager-detector to replace preferred-pm and which-pm. It includes features of both of those packages with a smaller dependency footprint. It also includes APIs to get the package-manager-specific command strings so we don't have to handle them manually.
NOTE: It's easier to review some of the changes with whitespace disabled for diffs.
Testing
Tested manually through the CLIs. Here's some screenshots:



Docs
Added a changeset, but this is mostly an internal change and shouldn't change the detected package manager in most project setups.

This PR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
prismjs | 1.29.0 -> 1.30.0 |
GitHub Vulnerability Alerts
CVE-2024-53382
Prism (aka PrismJS) through 1.29.0 allows DOM Clobbering (with resultant XSS for untrusted input that contains HTML but does not directly contain JavaScript), because document.currentScript lookup can be shadowed by attacker-injected HTML elements.
Release Notes
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 this update again.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Changes
- What does this change?
- Be short and concise. Bullet points can help!
- Before/after screenshots can help as well.
- Don't forget a changeset!
pnpm exec changeset
Testing
Docs

Description
This PR updates the Toc.astro
to properly support Chinese text anchors. Previously, the anchor links did not account for percent-encoded Chinese characters. As a result, headings containing Chinese text were not correctly recognized.

Changes
- Remove trailing spaces from blog example's links.
- A formatter introduced newlines inside the anchor tags on the blog example's home
index.astro
page, causing the link to include a trailing space. - Not the worst thing, just looks a little unpolished compared to everything else I've experienced getting to know Astro :)
- I've put the anchor tags on their own lines to avoid this issue, and prevent future formatters from re-introducing the issue (tested with Astro extension's formatter, at least).
- No changeset because this is in
examples/*
.
Before
After
Testing
- Ran the example locally (
cd examples/blog && npm run dev
) and it fixes the issue. - Ran Astro VS Code extension's formatter, confirmed issue is not re-introduced. (Also tried Prettier's.)
Docs
No docs added - small visual tweak to blog example page links.


This PR contains the following updates:
Release Notes
netlify/functions (@netlify/functions)
v3.0.1
Bug Fixes
- deps: update dependency @netlify/serverless-functions-api to v1.32.0 (#542) (0cefb35)
- deps: update dependency @netlify/serverless-functions-api to v1.33.0 (#562) (704141f)
- deps: update dependency @netlify/serverless-functions-api to v1.34.0 (#568) (73001eb)
- deps: update dependency @netlify/serverless-functions-api to v1.35.0 (#572) (82b29ca)
tailwindlabs/tailwindcss (@tailwindcss/vite)
v4.0.12
Fixed
- Vite: Fix
url(…)
rebasing in transitively imported CSS files (#16965) - PostCSS: Rebase
url(…)
s in imported CSS files (#16965) - Ensure utilities are sorted based on their actual property order (#16995)
- Ensure strings in Pug and Slim templates are handled correctly (#17000)
- Ensure classes between
}
and{
are properly extracted (#17001) - Fix
razor
/cshtml
pre-processing (#17027) - Ensure extracting candidates from JS embedded in a PHP string works as expected (#17031)
v4.0.11
Fixed
- Ensure classes containing
--
are extracted correctly (#16972) - Ensure classes containing numbers followed by dash or underscore are extracted correctly (#16980)
- Ensure arbitrary container queries are extracted correctly (#16984)
- Ensure classes ending in
[
are extracted in Slim templating language (#16985) - Ensure arbitrary variables with data types are extracted correctly (#16986)
v4.0.10
Added
- Add
col-<number>
androw-<number>
utilities forgrid-column
andgrid-row
(#15183)
Fixed
- Ensure
not-*
does not remove:is(…)
from variants (#16825) - Ensure
@keyframes
are correctly emitted when using a prefix (#16850) - Don't swallow
@utility
declarations when@apply
is used in nested rules (#16940) - Ensure
outline-hidden
behaves likeoutline-none
outside of forced colors mode (#16943) - Allow
!important
on CSS variables again (#16873) - Vite: Do not crash when encountering an
.svg
file with#
or?
in the filename (#16957) - Ensure utilities are properly detected within square brackets (#16306)
- Ensure utilities are properly detected using Angular's conditional class binding syntax (#16306)
- Ensure utilities starting with numbers are properly extracted from Slim templates (#16306)
- Discard arbitrary property candidates that have guaranteed-invalid property names (#16306)
Changed
postcss/autoprefixer (autoprefixer)
v10.4.21
- Fixed old
-moz-
prefix for:placeholder-shown
(by @Marukome0743).
cloudflare/workers-sdk (miniflare)
v3.20250224.0
Patch Changes
-
#8338
2d40989
Thanks @GregBrimble! - feat: Upload _headers and _redirects if present with Workers Assets as part ofwrangler deploy
andwrangler versions upload
. -
#8251
da568e5
Thanks @dependabot! - chore: update dependencies of "miniflare" packageThe following dependency versions have been updated:
Dependency From To workerd 1.20250214.0 1.20250224.0 @cloudflare/workers-types ^4.20250214.0 ^4.20250224.0 -
#8288
cf14e17
Thanks @CarmenPopoviciu! - feat: Add assets Proxy Worker skeleton in miniflareThis commit implements a very basic Proxy Worker skeleton, and wires it in the "pipeline" miniflare creates for assets. This Worker will be incrementally worked on, but for now, the current implementation will forward all incoming requests to the Router Worker, thus leaving the current assets behaviour in local dev, the same.
This is an experimental feature available under the
--x-assets-rpc
flag:wrangler dev --x-assets-rpc
. -
#8355
79c7810
Thanks @GregBrimble! - fix: Add default empty router config for assets in Miniflare
publint/publint (publint)
v0.3.9
Patch Changes
-
Support the
formatMessage
utility in the browser. It has a newcolor: 'html'
option to highlight important parts with<strong>
tags instead of ANSI colors. It also has a newreference: boolean
option so the messages are worded in reference of the message location. (e1cfef0
) -
If
formatMessage
is passed apackage.json
object with missing keys, the message part that references the value will now fallback to"undefined"
instead of completely erroring out. (45962d1
)
rollup/rollup (rollup)
v4.35.0
2025-03-08
Features
- Pass build errors to the closeBundle hook (#5867)
Pull Requests
- #5852: chore(deps): update dependency eslint-plugin-unicorn to v57 (@renovate[bot], @lukastaegert)
- #5862: fix(deps): update swc monorepo (major) (@renovate[bot], @lukastaegert)
- #5867: feat(5858): make closeBundle hook receive the last error (@GauBen)
- #5872: chore(deps): update dependency builtin-modules to v5 (@renovate[bot])
- #5873: chore(deps): update uraimo/run-on-arch-action action to v3 (@renovate[bot])
- #5874: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
sveltejs/svelte (svelte)
v5.22.6
Patch Changes
-
fix: skip
log_if_contains_state
if only logging literals (#15468) -
fix: Add
closedby
property to HTMLDialogAttributes type (#15458) -
fix: null and warnings for local handlers (#15460)
v5.22.5
Patch Changes
-
fix: memoize
clsx
calls (#15456) -
fix: respect
svelte-ignore hydration_attribute_changed
on elements with spread attributes (#15443) -
fix: always use
setAttribute
when settingstyle
(#15323) -
fix: make
style:
directive and CSS handling more robust (#15418)
v5.22.4
Patch Changes
- fix: never deduplicate expressions in templates (#15451)
v5.22.3
Patch Changes
- fix: run effect roots in tree order (#15446)
sveltejs/language-tools (svelte2tsx)
v0.7.35
- fix: take other snippets into account when checking for hoistability (#2668)
- fix: disambiguate render in module script (#2667)
- fix: properly transform $props.id when $props is assigned to props (#2694)
- fix: correctly handle unclosed tags with same type tag inside (#2682)
- fix: handle booleanish popover (#2702)
- perf: cache files during emitDts (#2701)
typescript-eslint/typescript-eslint (typescript-eslint)
v8.26.1
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
You can read about our versioning strategy and releases on our website.
vitejs/vite (vite)
v6.2.1
- refactor: remove
isBuild
check from preAliasPlugin (#19587) (c9e086d), closes #19587 - refactor: restore endsWith usage (#19554) (6113a96), closes #19554
- refactor: use
applyToEnvironment
in internal plugins (#19588) (f678442), closes #19588 - fix(css): stabilize css module hashes with lightningcss in dev mode (#19481) (92125b4), closes #19481
- fix(deps): update all non-major dependencies (#19555) (f612e0f), closes #19555
- fix(reporter): fix incorrect bundle size calculation with non-ASCII characters (#19561) (437c0ed), closes #19561
- fix(sourcemap): combine sourcemaps with multiple sources without matched source (#18971) (e3f6ae1), closes #18971
- fix(ssr): named export should overwrite export all (#19534) (2fd2fc1), closes #19534
- feat: add
*?url&no-inline
type and warning for.json?inline
/.json?no-inline
(#19566) (c0d3667), closes #19566 - test: add glob import test case (#19516) (aa1d807), closes #19516
- test: convert config playground to unit tests (#19568) (c0e68da), closes #19568
- test: convert resolve-config playground to unit tests (#19567) (db5fb48), closes #19567
- perf: flush compile cache after 10s (#19537) (6c8a5a2), closes #19537
- chore(css): move environment destructuring after condition check (#19492) (c9eda23), closes #19492
- chore(html): remove unnecessary value check (#19491) (797959f), closes #19491
vitest-dev/vitest (vitest)
v3.0.8
🐞 Bug Fixes
- Fix fetch cache multiple writes - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7546 (1a8b4)
- Use browser.isolate instead of config.isolate - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7560 (4b5ed)
- Remove vestigial spy stub, import directly from
@vitest/spy
- by @mrginglymus in https://github.com/vitest-dev/vitest/issues/7575 (7f7ff) - Correctly split the argv string - by @btea in https://github.com/vitest-dev/vitest/issues/7533 (4325a)
- browser:
- Remove @testing-library/dom from dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7555 (5387a)
- Improve source map handling for bundled files - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7534 (e2c57)
- Print related test file and potential test in unhandled errors - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7564 (fee90)
- runner:
- Fix
beforeEach/All
cleanup callback timeout - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7500 (0c292) - Fix and simplify
Task.suite
initialization - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7414 (ca9ff)
- Fix
- snapshot:
- Allow inline snapshot calls on same location with same snapshot - by @jycouet and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7464 (d5cb8)
- vite-node:
- Fix
buildStart
on Vite 6 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7480 (c0f47)
- Fix
View changes on GitHub
Configuration
📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Changes
The problem was the the content of the toolbar settings overflowed the toolbar. That made it very hard to read the text it looked broken.
I did a few things:
- The text of the last row takes up the whole width of the section
- If the content is still too large, the developer can scroll the content of the toolbar
Before
After
Bildschirmaufnahme.2025-03-09.um.12.35.04.mov
Testing
I did some manual testing, by resizing the window and testing the changes on a real iPhone. I did not any automated tests, because there's now way to test this without a visual test. Please correct me if I'm wrong.
Docs
This change does not need documentation, it doesn't change how users
need to interact with Astro.

Changes
In typescript/lib/lib.dom.d.ts
the ViewTransition interface now includes the types
property.
Added the property to our simulated viewTransition object for browsers without native support.
https://discord.com/channels/830184174198718474/1055240348970000454/1346390166356361289
Testing
Compiles without errors after removing the @ts-expect-error comment
Docs
n.a. / upstream change

Changes
Fixes #12858
The original code to execute scripts after swap() made the assumption that all inline scripts
are directly executed when inserted into the DOM. This is not true for inline module scripts,
which are deferred but still executed in order.
Inline module scripts can not be awaited for with onload.
Thus to be able to wait for the execution of all scripts,
we make sure that the last inline module script
is always followed by an external module script.
Testing
new e2e test
Docs
n.a. / bugfix

Changes
Fixes #13375
Marks scripts executed on initial page load as executed to prevent their re-execution if they are not replaced with the next call to swap.
This might happen if a custom swap() function only swaps part of the DOM and leaves some original scripts in place.
Testing
added e2e test
Docs
n.a. / bug fix

Changes
This fixes pop-ups and highlights rendering over the audit list window.
Fixes #11114
Testing
Added e2e test.
Docs

Changes
This fixes a few race condition bugs that manifested in sites with lots of very large markdown files.
Adds a method to the data store object that returns a promise that resolves when saving to disk is complete.
Resets the #dirty
flag before saving to disk. The main cause of #13310 was that debounced saves that happened while the large data store file was being written to disk would be lost because the dirty flag was cleared once the file write was complete, missing the fact that more more entries need writing.
Fixes #13310
Testing
Tested with the #13310 repro
Docs
- see withastro/astro#12360 for details
Description
- Closes #
- What does this PR change? Give us a brief description.
- Did you change something visual? A before/after screenshot can be helpful.

Changes
Those additions should help users that try to use redirects to resolve issues with trailing slashes. Those redirects are not supported ATM. It is quite time consuming to debug those, so having something in the docs about it should save people some time.
More about the issue in #12532 (comment)
Testing
This is a docs change. The test case is in #12532 (comment)
Docs
This is only a docs change.
Description
- Closes #
- What does this PR change? Adding my starlight site to your showcase :)
- Did you change something visual?

Changes
- This adds an optional
as
property to a font family - The RFC has been updated but TLDR use
as
if:- You are an integration and want to make sure you don't conflict with fonts declared by the user
- Your font name can't be properly converted to a CSS variable name
Testing
Tests updated
Docs
RFC updated

Changes
This PR removes makeSvgComponent
from the exported functions. That function is meant to be used internally and shouldn't be exported.
I added a note at top of the file.
Testing
CI should pass
Docs
N/A

Changes
- Adds css variables generations
- Fixes a bug around fallbacks that impacted css variables
- RFC has been updated to remove the
cssVar
prop from theFont
component as I'll go with another solution (upcoming PR)
Testing
Adds unit tests
Docs
N/A

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.4.3
Patch Changes
-
#13381
249d52a
Thanks @martrapp! - Adds thetypes
property to the viewTransition object when the ClientRouter simulates parts of the View Transition API on browsers w/o native support. -
#13367
3ce4ad9
Thanks @ematipico! - Adds documentation to various utility functions used for remote image services -
#13347
d83f92a
Thanks @bluwy! - Updates internal CSS chunking behavior for Astro components' scoped styles. This may result in slightly more CSS chunks created, but should allow the scoped styles to only be included on pages that use them. -
#13388
afadc70
Thanks @ematipico! - Fixes a bug whereastro:config/server
andastro:config/client
had incorrect types. -
#13355
042d1de
Thanks @ematipico! - Adds documentation to the assets utilities for remote service images. -
#13395
6d1c63f
Thanks @bluwy! - Usespackage-manager-detector
to detect the package manager used in the project -
#13363
a793636
Thanks @ematipico! - Fixes an issue where the internal functionmakeSvgComponent
was incorrectly exposed as a public API. -
Updated dependencies [
042d1de
]:- @astrojs/internal-helpers@0.6.1
- @astrojs/markdown-remark@6.2.1
@astrojs/cloudflare@12.2.4
Patch Changes
- Updated dependencies [
042d1de
]:- @astrojs/internal-helpers@0.6.1
- @astrojs/underscore-redirects@0.6.0
@astrojs/markdoc@0.12.11
Patch Changes
- Updated dependencies [
042d1de
]:- @astrojs/internal-helpers@0.6.1
- @astrojs/markdown-remark@6.2.1
@astrojs/mdx@4.1.1
Patch Changes
- Updated dependencies []:
- @astrojs/markdown-remark@6.2.1
@astrojs/netlify@6.2.3
Patch Changes
- Updated dependencies [
042d1de
]:- @astrojs/internal-helpers@0.6.1
- @astrojs/underscore-redirects@0.6.0
@astrojs/node@9.1.3
Patch Changes
- Updated dependencies [
042d1de
]:- @astrojs/internal-helpers@0.6.1
@astrojs/svelte@7.0.6
Patch Changes
- #13339
a05e6ab
Thanks @Hugos68! - Fixes a case where$props.id()
would not be unique across multiple islands
@astrojs/vercel@8.1.2
Patch Changes
- Updated dependencies [
042d1de
]:- @astrojs/internal-helpers@0.6.1
@astrojs/internal-helpers@0.6.1
Patch Changes
- #13355
042d1de
Thanks @ematipico! - Adds documentation to the assets utilities for remote service images.
@astrojs/markdown-remark@6.2.1
Patch Changes
- Updated dependencies [
042d1de
]:- @astrojs/internal-helpers@0.6.1
@astrojs/upgrade@0.5.1
Patch Changes

Changes
Closes #13264
This PR adds support for Astro.rewrite
for the container API. A new method called insertPageRoute
has been exposed that will help users to test routes that trigger a possible rewrite.
Testing
I added a new test
Docs
Will create a PR

Changes
This PR adds the command build:ci
to the adapters we recently moved.
That command is used by the ecosystem CI of vite
Testing
Merge it and check with the vite team
Docs
N/A
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@astrojs/starlight-markdoc@0.3.0
Minor Changes
-
#2931
10b93b3
Thanks @HiDeoo! - Adds support for thetitle
,frame
, andmeta
fence attributes to code blocks.These new optional attributes add support for Expressive Code text & line markers. The following example renders a code block using a terminal frame with a title:
```js {% title="editor.exe" frame="terminal" %} console.log('Hello, world!'); ```
Any other text or line markers should be specified using the
meta
fence attribute. For example, the following code block renders a code block using thediff
syntax combined with thejs
language syntax highlighting and themarkers
text highlighted:```diff {% meta="lang=js 'markers'" %} function thisIsJavaScript() { // This entire block gets highlighted as JavaScript, // and we can still add diff markers to it! - console.log('Old code to be removed') + console.log('New and shiny code!') } ```
To learn more about all the available options, check out the Expressive Code documentation.

Changes
- Simplifies the
cache
util - Removes duplicated loop while resolving font families
- Extracts code to a new
loadFonts
function, making it easier to test - Extract things outside of the the vite plugin file
- Moves constants around to fix a circular dependency problem
Testing
Adds a unit test
Docs
N/A

Changes
- Adds a new
experimental.headingIdCompat
flag - Uses this to disable sanitizing heading IDs when set
- Applies to default Markdown processing as well as the Markdoc and MDX integrations
- Why? Astro currently strips a single trailing
-
from heading IDs it generates, deviating from the standardgithub-slugger
behavior that is common to many platforms. The aim would be for us to remove this nonstandard behavior entirely in a future major release.
Testing
Added some tests for headings with special characters
Docs
No docs yet, but this will need experimental feature docs if the basic idea is accepted.
/cc @withastro/maintainers-docs for feedback!

Changes
Vercel only allows images to be generated with widths that are from a configured allowlist. This PR ensures that experimental responsive images only include allowed sizes.
Fixes #13325
Testing
Adds tests
Docs

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
astro@5.4.2
Patch Changes
-
#12985
84e94cc
Thanks @matthewp! - Prevent re-executing scripts in client router -
#13349
50e2e0b
Thanks @ascorbic! - Correctly escapes attributes in Markdown images -
#13262
0025df3
Thanks @ematipico! - Refactor Astro Actions to not use a middleware. Doing so should avoid unexpected issues when using the Astro middleware at the edge.
@astrojs/db@0.14.8
Patch Changes
-
#13343
a001a75
Thanks @dreyfus92! - Fix Astro DB seed failing when project path contains spaces. This resolves by properly decoding URL pathnames that contain encoded spaces (%20) before passing them to Vite's ssrLoadModule. -
Updated dependencies []:
- @astrojs/studio@0.1.4
@astrojs/partytown@2.1.4
Patch Changes
-
#13109
5c0e0ea
Thanks @arnottferels! - Adds support forconfig.lib
, which allows changing the destination of the files:export default defineConfig({ integrations: [partytown({ config: { + lib: '/assets/lib/~partytown/'; } })] })
@astrojs/vercel@8.1.1
Patch Changes

Changes
In Markdown, the generated attributes in img elements were not being correctly esacaped. This meant that including >
or "
in the img alt would break the tag. This isn't a security issue because Markdown is trusted, and you can add an actual script tag if you want.
Fixes #13345
Testing
Added test case
Docs

Changes
Vite 6.2 has builtin support for treeshaking scoped CSS (vitejs/vite#19418) which we can use to replace our internal implementation copy before.
Testing
Existing tests should pass. There's added test in the past from #10291. If CI fails, maybe there's a bug in Vite.
EDIT: The new behaviour will now properly place scoped styles into its own chunk so that it's only loaded by pages that uses the component's scoped styles. This means the CSS is more granular and accurately loaded, but results in slightly more CSS chunks which causes some tests that did not anticipate it to fail. I've made fixes to the tests for these cases.
Docs
n/a. Shouldn't require a changeset as it's an internal refactor.

This PR contains the following updates:
Release Notes
withastro/astro (@astrojs/solid-js)
v5.0.5
Patch Changes
- #13323
80926fa
Thanks @ematipico! - Updatesesbuild
andvite
to the latest to avoid false positives audits warnings caused byesbuild
.
v5.0.4
Patch Changes
- #13011
cf30880
Thanks @ascorbic! - Upgrades Vite
v5.0.3
Patch Changes
- #12887
ea603ae
Thanks @louisescher! - Adds a warning message when multiple JSX-based UI frameworks are being used without either theinclude
orexclude
property being set on the integration.
withastro/astro (@astrojs/svelte)
v7.0.5
Patch Changes
- #13323
80926fa
Thanks @ematipico! - Updatesesbuild
andvite
to the latest to avoid false positives audits warnings caused byesbuild
.
v7.0.4
Patch Changes
- #13011
cf30880
Thanks @ascorbic! - Upgrades Vite
withastro/astro (@astrojs/vue)
v5.0.7
Patch Changes
- #13251
3842ce5
Thanks @florian-lefebvre! - Fixes a case where the compiler could not be resolved automatically
v5.0.6
Patch Changes
- #13011
cf30880
Thanks @ascorbic! - Upgrades Vite
v5.0.5
Patch Changes
- #12887
ea603ae
Thanks @louisescher! - Adds a warning message when multiple JSX-based UI frameworks are being used without either theinclude
orexclude
property being set on the integration.
changesets/changesets (@changesets/changelog-github)
v0.5.1
Patch Changes
- Updated dependencies [
84a4a1b
]:
fontsource/font-files (@fontsource/montserrat)
[v5.2.5
](https://redirect.g
Configuration
📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Changes
adds decodeURIComponent
to properly handle the pathname
closes: #13332
Testing
Docs
there's no need to update docs.
Last fetched: | Scheduled refresh: Every Saturday
See Customizing GitHub Activity Pages to configure your own
Inspired by prs.atinux.com