This release also updates the shape of autogenerated sidebar entries in route data. Autogenerated links and groups in Astro.locals.starlightRoute.sidebar now include an autogenerate object with the configured directory value:
{
type: 'link',
label: 'Example',
href: '/examples/example/',
isCurrent: false,
autogenerate: { directory: 'examples' }
}
#3618dcf6d09 Thanks @HiDeoo! - ⚠️ BREAKING CHANGE: This release changes the default collapsed state of autogenerated sidebar subgroups.
Autogenerated subgroups no longer inherit the collapsed value from their parent group. They are now expanded by default unless explicitly configured with autogenerate.collapsed.
If your sidebar configuration relies on a collapsed parent group to also collapse its autogenerated subgroups, update your configuration to set autogenerate.collapsed to true:
#38454d755f5 Thanks @delucis! - Adds a <link rel="alternate" hreflang="x-default" href="..."> tag pointing to the default locale in multilingual sites. The x-default alternate is used as a signal of which language to fall back to if no other is available. Learn more in Google’s SEO localization docs.
#3862ec70630 Thanks @itrew! - Makes spacing of items in nested lists more consistent
If you would prefer to disable autospacing in Chinese and Japanese pages, you can add the following custom CSS to your site:
[lang]:where(:lang(zh, ja)) {
text-autospace: initial;
}
#37979764ebd Thanks @delucis! - Avoids the risk of layout shift when users expand and collapse sidebar groups
This release can introduce additional padding to the site sidebar on certain devices to reserve space for scrollbars. You may wish to inspect your site sidebar visually when upgrading.
If you would prefer to keep the previous styling, you can add the following custom CSS to your site:
.sidebar-pane {
scrollbar-gutter: auto;
}
#38586672c35 Thanks @delucis! - Updates i18next, used for Starlight’s localization APIs, from v23 to v26
There should not be any user-facing changes from this update
#3759f24ce99 Thanks @MilesChou! - Fixes an issue where monolingual sites using a region-specific locale (e.g., zh-TW) as the default would incorrectly display base language translations (e.g., zh Simplified Chinese) instead of the region-specific ones (e.g., zh-TW Traditional Chinese).
#3768a4c6c20 Thanks @delucis! - Improves performance of sidebar generation for sites with very large sidebars
#36440d2e7ed Thanks @HiDeoo! - Adds support for Astro v6, drops support for Astro v5.
Upgrade Astro and dependencies
⚠️ BREAKING CHANGE: Astro v5 is no longer supported. Make sure you update Astro and any other official integrations at the same time as updating Starlight:
Terminal window
npx@astrojs/upgrade
Community Starlight plugins and Astro integrations may also need to be manually updated to work with Astro v6. If you encounter any issues, please reach out to the plugin or integration author to see if it is a known issue or if an updated version is being worked on.
Update your collections
⚠️ BREAKING CHANGE: Drops support for content collections backwards compatibility.
In Astro 5.x, projects could delay upgrading to the new Content Layer API introduced for content collections because of some existing automatic backwards compatibility that was not previously behind a flag. This meant that it was possible to upgrade from Astro 4 to Astro 5 without updating your content collections, even if you had not enabled the legacy.collections flag. Projects would continue to build, and no errors or warnings would be displayed.
Astro v6.0 now removes this automatic legacy content collections support, along with the legacy.collections flag.
If you are unable to make any changes to your collections at this time, including Starlight’s default docs and i18n collections, you can enable the legacy.collectionsBackwardsCompat flag to upgrade to v6 without updating your collections. This temporary flag preserves some legacy v4 content collections features, and will allow you to keep your collections in their current state until the legacy flag is no longer supported.
#3704375edcc Thanks @florian-lefebvre! - Fixes autocomplete for components exported from @astrojs/starlight/components/*
⚠️ Potentially breaking change: This change moves some files used in Starlight’s component internals out of the components/ directory. Direct use of these files was not and is not officially supported. If you previously imported TableOfContents/starlight-toc.ts, TableOfContents/TableOfContentsList.astro, Icons.ts, or SidebarPersistState.ts, please review your code when updating.
#37293642625 Thanks @delucis! - Improves Starlight’s default body font stack to better support languages such as Chinese, Japanese, and Korean on Windows.
For most users there should be no visible change.
If you would prefer to keep the previous font stack, you can add the following custom CSS to your site:
'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',
'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
}
#3598fff38d5 Thanks @HiDeoo! - Makes hover styles consistent in Starlight’s navigation bar
Previously, the social icon links and language/theme switchers in Starlight’s navigation bar, dimmed on hover.
After this change, they now increase in contrast on hover instead.
This matches hover behavior elsewhere, for example in the sidebar, table of contents, or search button.
⚠️ Potentially breaking change: this is a subtle change to the hover style colors.
If you want to preserve the previous styling, you can add the following custom CSS to your site:
#3534703fab0 Thanks @HiDeoo! - Fixes support for running builds when npx is unavailable.
Previously, Starlight would spawn a process to run the Pagefind search indexing binary using npx. On platforms where npx isn’t available, this could cause issues. Starlight now runs Pagefind using its Node.js API to avoid a separate process. As a side effect, you may notice that logging during builds is now less verbose.
#3656a0e6368 Thanks @delucis! - Fixes several edge cases in highlighting the current page heading in Starlight’s table of contents
#3382db295c2 Thanks @trueberryless! - Fixes an issue where the mobile table of contents is unable to find the first heading when a page has a tall banner.
⚠️ Potentially breaking change: This release switches the overflow-wrap CSS style for common elements to break-word. In most cases, there should be little visual impact, but this change can impact how layouts with implicit sizing (such as tables) look, improving legibility in how words wrap.
If you want to preserve the previous styling, you can add the following custom CSS to your site:
p, h1, h2, h3, h4, h5, h6, code {
overflow-wrap: anywhere;
}
#3351239698c Thanks @HiDeoo! - Ensures that Starlight CSS layer order is predictable in custom pages using the <StarlightPage> component.
Previously, due to how import order works in Astro, the <StarlightPage> component had to be the first import in custom pages to set up cascade layers used internally by Starlight to manage the order of its styles.
With this change, this restriction no longer applies and Starlight’s styles will be applied correctly regardless of the import order of the <StarlightPage> component.
#3521ca7b771 Thanks @shubham-padia! - Fixes an issue where a vertical scrollbar could be displayed on the Starlight <Tabs> component when zooming the page
⚠️ Potentially breaking change: The <Tabs> component no longer uses margin-bottom and border-bottom to highlight the current tab. This is now done with a box-shadow. If you have custom styling for your tabs, you may need to update it.
If you want to preserve the previous styling, you can add the following custom CSS to your site:
'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
'Segoe UI Symbol', 'Noto Color Emoji';
}
#3332f61f99d Thanks @HiDeoo! - Adds a new markdown.processedDirs configuration option to specify additional directories where files should be processed by Starlight’s Markdown pipeline.
By default, Starlight’s processing only applies to Markdown and MDX content loaded using Starlight’s docsLoader(). This new option allows to extend this processing to other directories, which can be useful if you are rendering content from a custom content collection using the <StarlightPage> component and expect Starlight’s Markdown processing to be applied to that content as well.
#3555547dc30 Thanks @Its-Just-Nans! - Improves the error message thrown when using a file in the public/ directory with Starlight’s customCss configuration option
#3496b78fda4 Thanks @delucis! - Fixes invalid <head> output when configuration is missing:
Omits <meta property="og:description" /> if Starlight’s description option is unset
Omits <link rel="canonical" /> and <meta property="og:url" /> if Astro’s site option is unset
When enabling sitemap in Starlight, a <link rel="sitemap" href="/sitemap-index.xml"> tag is automatically added to the head of each page. Manually specifying sitemap link tags using the Starlight head configuration option or the head frontmatter field will now override the default sitemap link tag added by Starlight.
This change ensures that users manually adding the @astrojs/sitemap integration to the Astro integrations array for more fine-grained control over sitemap generation and also using the filenameBase integration option can customize the sitemap link tag in the head.
#34481fc7501 Thanks @dionysuzx! - Enlarges the Farcaster icon to better match other social icons
#3427c3b2d0f Thanks @delucis! - Fixes styling of labels that wrap across multiple lines in <Tabs> component
⚠️ Potentially breaking change: Tab labels now have a narrower line-height and additional vertical padding. If you have custom CSS targetting the <Tabs> component, you may want to double check the visual appearance of your tabs when updating.
If you want to preserve the previous styling, you can add the following custom CSS to your site:
.tab> [role='tab'] {
line-height: var(--sl-line-height);
padding-block: 0;
}
#33803364af3 Thanks @HiDeoo! - Makes head entry parsing stricter in Starlight config and content frontmatter.
⚠️ Potentially breaking change: Previously Starlight would accept a head entry for a meta tag defining some content which generates invalid HTML as <meta> is a void element which cannot have any child nodes. Now, it is an error to define a meta tag including some content.
If you see errors after updating, look for head entries in the Starlight configuration in the astro.config.mjs file or in the frontmatter of your content files that include a content property for a meta tag. To fix the error, move the content property to the attrs object with at least an additional attribute to identify the kind of metadata it represents:
⚠️ Potentially breaking change: By default, Starlight applies some vertical spacing (--sl-content-gap-y) between Markdown content blocks. This change introduces similar spacing between Markdown content blocks and UI Framework components using client directives which was not present before.
If you were relying on the previous behavior, you can manually override the spacing by manually specifying the top margin on the component using custom CSS, e.g. by relying on a CSS class to target the component.
.my-custom-component {
margin-top: 0;
}
🐞 Patch Changes
#3423a0d0670 Thanks @andersk! - Fixes HTML validity in sidebar groups by ensuring <summary> is the first child of <details>