AstroEco is Releasing…
Display your GitHub releases using astro-loader-github-releases

Patch Changes
-
#14562
722bba0
Thanks @erbierc! - Fixes a bug where the behavior of the "muted" HTML attribute was inconsistent with that of other attributes. -
#14538
51ebe6a
Thanks @florian-lefebvre! - Improves how Actions are implemented -
#14548
6cdade4
Thanks @ascorbic! - Removes support for themaxAge
property incacheHint
objects returned by live loaders.⚠️ Breaking change for experimental live content collections onlyFeedback showed that this did not make sense to set at the loader level, since the loader does not know how long each individual entry should be cached for.
If your live loader returns cache hints with
maxAge
, you need to remove this property:return { entries: [...], cacheHint: { tags: ['my-tag'], - maxAge: 60, lastModified: new Date(), }, };
The
cacheHint
object now only supportstags
andlastModified
properties. If you want to set the max age for a page, you can set the headers manually:--- Astro.headers.set('cdn-cache-control', 'max-age=3600'); ---
-
#14548
6cdade4
Thanks @ascorbic! - Adds missingrendered
property to experimental live collections entry typeLive collections support a
rendered
property that allows you to provide pre-rendered HTML for each entry. While this property was documented and implemented, it was missing from the TypeScript types. This could lead to type errors when trying to use it in a TypeScript project.No changes to your project code are necessary. You can continue to use the
rendered
property as before, and it will no longer produce TypeScript errors.
Patch Changes
-
#3479
2fec483
Thanks @gboubeta-uvigo! - Updates Galician UI translations -
#3457
c6c0c51
Thanks @HiDeoo! - Deduplicates sitemap link tags in the head.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 Starlighthead
configuration option or thehead
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 Astrointegrations
array for more fine-grained control over sitemap generation and also using thefilenameBase
integration option can customize the sitemap link tag in the head. -
#3448
1fc7501
Thanks @dionysuzx! - Enlarges the Farcaster icon to better match other social icons -
#3473
07204dd
Thanks @gboubeta! - Fixes a typo in Galician table of contents label

Patch Changes
- #14536
9261996
Thanks @florian-lefebvre! - Fixes a bug that caused too many files to be bundled in SSR

Patch Changes
-
#14536
9261996
Thanks @florian-lefebvre! - Fixes a bug that caused too many files to be bundled in SSR -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0

Patch Changes
-
#14525
4f55781
Thanks @penx! - FixesdefineLiveCollection()
types -
#14441
62ec8ea
Thanks @upsuper! - Updates redirect handling to be consistent acrossstatic
andserver
output, aligning with the behavior of other adapters.Previously, the Node.js adapter used default HTML files with meta refresh tags when in
static
output. This often resulted in an extra flash of the page on redirect, while also not applying the proper status code for redirections. It's also likely less friendly to search engines.This update ensures that configured redirects are always handled as HTTP redirects regardless of output mode, and the default HTML files for the redirects are no longer generated in
static
output. It makes the Node.js adapter more consistent with the other official adapters.No change to your project is required to take advantage of this new adapter functionality. It is not expected to cause any breaking changes. However, if you relied on the previous redirecting behavior, you may need to handle your redirects differently now. Otherwise you should notice smoother redirects, with more accurate HTTP status codes, and may potentially see some SEO gains.
-
#14506
ec3cbe1
Thanks @abdo-spices! - Updates the<Font />
component so that preload links are generated after the style tag, as recommended by capo.js

Patch Changes
- #14528
3597371
Thanks @florian-lefebvre! - Fixes a case where a deprecation warning would be shown on Node 24

Minor Changes
-
#14441
62ec8ea
Thanks @upsuper! - Updates redirect handling to be consistent acrossstatic
andserver
output, aligning with the behavior of other adapters.Previously, the Node.js adapter used default HTML files with meta refresh tags when in
static
output. This often resulted in an extra flash of the page on redirect, while also not applying the proper status code for redirections. It's also likely less friendly to search engines.This update ensures that configured redirects are always handled as HTTP redirects regardless of output mode, and the default HTML files for the redirects are no longer generated in
static
output. It makes the Node.js adapter more consistent with the other official adapters.No change to your project is required to take advantage of this new adapter functionality. It is not expected to cause any breaking changes. However, if you relied on the previous redirecting behavior, you may need to handle your redirects differently now. Otherwise you should notice smoother redirects, with more accurate HTTP status codes, and may potentially see some SEO gains.

🚀 Features
- search: Support collection type filter, batch loading, search term highlighting on result page, and limit on displayed results - by @lin-stephanie in #44 (1c4a0)
🐞 Bug Fixes
- bg: Remove
dark:invert
, use direct dark styles to prevent Safari 18+ navigation white flash - by @lin-stephanie in #30 (7126f) - toc: Ensure active heading scrolls into view in long TOC - by @lin-stephanie (218c2)
- Prevent horizontal scroll on narrow screens - by @lin-stephanie (c4fe5)
- Automatically wrap markdown tables in a scrollable div to prevent horizontal overflow - by @lin-stephanie (77938)
- Prevent search loading state from sticking when debounced requests are cancelled - by @lin-stephanie (49372)
- Prevent layout shift when toggling panel in Safari & hide non-HTML scrollbars sitewide - by @lin-stephanie (ef3b7)
- Automatically wrap markdown tables in a scrollable div to prevent horizontal overflow - by @lin-stephanie (c4885)
- Rename
manifest.webmanifest.js
toapp.webmanifest.js
and support subpath deployment - by @lin-stephanie (bfd90) - Restore scrollbar visibility (excluding search, nav, and toc panels) - by @lin-stephanie (91f94)
💅 Refactors
- Rewrite
Rose
component with custom element - by @lin-stephanie (ac6c2)
🏡 Chore
- Update JSDoc in
types.ts
and tweak others - by @lin-stephanie (6155e) - Update docs - by @lin-stephanie (d6720)
- Update deps, Astro 5.12.1 → 5.14.4 (enable experimental
chromeDevtoolsWorkspace
andfailOnPrerenderConflict
) - by @lin-stephanie (8dcee)
View changes on GitHub

Patch Changes
- #14509
7e04caf
Thanks @ArmandPhilippot! - Fixes an error in the docs that specified an incorrect version for thesecurity.allowedDomains
release.


Patch Changes
- Updated dependencies [
b8ca69b
]:- @astrojs/internal-helpers@0.7.4

Patch Changes
- Updated dependencies []:
- @astrojs/markdown-remark@6.3.8

Patch Changes

Patch Changes
-
#14473
d9634d3
Thanks @florian-lefebvre! - Fixes a bug that caused too many files to be bundled in SSR -
Updated dependencies [
b8ca69b
]:- @astrojs/internal-helpers@0.7.4
- @astrojs/underscore-redirects@1.0.0


Patch Changes
- Updated dependencies [
b8ca69b
]:- @astrojs/internal-helpers@0.7.4

Patch Changes
-
#14473
d9634d3
Thanks @florian-lefebvre! - Fixes a bug that caused too many files to be bundled in SSR -
Updated dependencies [
b8ca69b
]:- @astrojs/internal-helpers@0.7.4


Patch Changes
- Updated dependencies [
b8ca69b
]:- @astrojs/internal-helpers@0.7.4
- @astrojs/markdown-remark@6.3.8

Patch Changes
- #14440
a3e16ab
Thanks @florian-lefebvre! - Fixes a case where the URLs generated by the experimental Fonts API would be incorrect in dev

Minor Changes
-
#14386
f75f446
Thanks @yanthomasdev! - Stabilizes the formerly experimentalgetActionState()
andwithState()
functions introduced in@astrojs/react
v3.4.0 used to integrate Astro Actions with React 19'suseActionState()
hook.This example calls a
like
action that accepts apostId
and returns the number of likes. Pass this action to thewithState()
function to apply progressive enhancement info, and apply touseActionState()
to track the result:import { actions } from 'astro:actions'; import { withState } from '@astrojs/react/actions'; import { useActionState } from 'react'; export function Like({ postId }: { postId: string }) { const [state, action, pending] = useActionState( withState(actions.like), 0, // initial likes ); return ( <form action={action}> <input type="hidden" name="postId" value={postId} /> <button disabled={pending}>{state} ❤️</button> </form> ); }
You can also access the state stored by
useActionState()
from your action handler. CallgetActionState()
with the API context, and optionally apply a type to the result:import { defineAction } from 'astro:actions'; import { z } from 'astro:schema'; import { getActionState } from '@astrojs/react/actions'; export const server = { like: defineAction({ input: z.object({ postId: z.string(), }), handler: async ({ postId }, ctx) => { const currentLikes = getActionState<number>(ctx); // write to database return currentLikes + 1; }, }), };
If you were previously using this experimental feature, you will need to update your code to use the new stable exports:
// src/components/Form.jsx import { actions } from 'astro:actions'; -import { experimental_withState } from '@astrojs/react/actions'; +import { withState } from '@astrojs/react/actions'; import { useActionState } from "react";
// src/actions/index.ts import { defineAction, type SafeResult } from 'astro:actions'; import { z } from 'astro:schema'; -import { experimental_getActionState } from '@astrojs/react/actions'; +import { getActionState } from '@astrojs/react/actions';

Minor Changes
-
#14430
78011ba
Thanks @ascorbic! - Adds support for async server renderingSvelte 5.36 added experimental support for async rendering. This allows you to use
await
in your components in several new places. This worked out of the box with client-rendered components, but server-rendered components needed some extra help. This update adds support for async server rendering in Svelte components used in Astro.To use async rendering, you must enable it in your Svelte config:
// svelte.config.js export default { compilerOptions: { experimental: { async: true, }, }, };
Then you can use
await
in your components:<script> let data = await fetch('/api/data').then(res => res.json()); </script> <h1>{data.title}</h1>
See the Svelte docs for more information on using
await
in Svelte components, including inside$derived
blocks and directly in markup.
Patch Changes

Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3

Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
- @astrojs/underscore-redirects@1.0.0


Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
- @astrojs/underscore-redirects@1.0.0

Patch Changes
- Updated dependencies []:
- @astrojs/markdown-remark@6.3.7

Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3

Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3

Patch Changes
- Updated dependencies [
1e2499e
]:- @astrojs/internal-helpers@0.7.3
- @astrojs/markdown-remark@6.3.7
Minor Changes
-
#3427
c3b2d0f
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; }
-
#3380
3364af3
Thanks @HiDeoo! - Makes head entry parsing stricter in Starlight config and content frontmatter.⚠️ Potentially breaking change: Previously Starlight would accept a head entry for ameta
tag defining somecontent
which generates invalid HTML as<meta>
is a void element which cannot have any child nodes. Now, it is an error to define ameta
tag including somecontent
.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 acontent
property for ameta
tag. To fix the error, move thecontent
property to theattrs
object with at least an additional attribute to identify the kind of metadata it represents:head: { tag: 'meta', - content: 'foo', attrs: { name: 'my-meta', + content: 'foo', }, },
-
#3340
2018c31
Thanks @HiDeoo! - Adds missing vertical spacing between Markdown content and UI Framework components using client directives.⚠️ 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

Minor Changes
-
#14285
bedc31b
Thanks @jdcolombo! - Adds a new configuration optionnamespaces
for more control over XML namespaces used in sitemap generationExcluding unused namespaces can help create cleaner, more focused sitemaps that are faster for search engines to parse and use less bandwidth. If your site doesn't have news content, videos, or multiple languages, you can exclude those namespaces to reduce XML bloat.
The
namespaces
option allows you to configurenews
,xhtml
,image
, andvideo
namespaces independently. All namespaces are enabled by default for backward compatibility and no change to existing projects is necessary. But now, you can choose to streamline your XML and avoid unnecessary code.For example, to exclude the video namespace from your sitemap, set
video: false
in your configuration:// astro.config.mjs import { sitemap } from '@astrojs/sitemap'; export default { integrations: [ sitemap({ namespaces: { video: false, // other namespaces remain enabled by default } }) ] };
The generated XML will not include the
xmlns:video
namespace:<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" > <!-- ... --> </urlset>

Minor Changes
-
#14204
d71448e
Thanks @Adammatthiesen! - Adds a new libSQL web driver to support environments that require a non-Node.js libSQL client such as Cloudflare or Deno. Also adds a newmode
configuration option to allow you to set your client connection type:node
(default) orweb
.The default db
node
driver mode is identical to the previous AstroDB functionality. No changes have been made to how AstroDB works in Node.js environments, and this is still the integration's default behavior. If you are currently using AstroDB, no changes to your project code are required and setting amode
is not required.However, if you have previously been unable to use AstroDB because you required a non-Node.js libSQL client, you can now install and configure the libSQL web driver by setting
mode: 'web'
in yourdb
configuration:import db from '@astrojs/db'; import { defineConfig } from 'astro/config'; // https://astro.build/config export default defineConfig({ integrations: [db({ mode: 'web' })], });
For more information, see the
@astrojs/db
documentation.
Patch Changes
-
#3416
fcc0633
Thanks @randomguy-2650! - Updates German UI translations to be more idiomatic. -
#1640
d1b3828
Thanks @hippotastic! - Refactors various internal systems, improving code quality and maintainability. -
#3421
97e8103
Thanks @andersk! - Removes an invalidvalue
attribute from the language and theme selectors -
#3422
9200fac
Thanks @andersk! - Refactors collapsible sidebar sections and “on this page” dropdown to use<span>
instead of<div>

Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE

Patch Changes
-
#14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0

Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE

Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE

Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE

Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE

Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE

Patch Changes
-
#14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0

Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE

Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE

Patch Changes
- #14326
c24a8f4
Thanks @jsparkdev! - Updatesvite
version to fix CVE
Last fetched: | Scheduled refresh: Every Saturday
See Customizing GitHub Activity Pages to configure your own
Inspired by releases.antfu.me