Releases: withastro/astro
[email protected]
Patch Changes
-
#13336
8f632ef
Thanks @ematipico! - Fixes a regression where some asset utilities were move across monorepo, and not re-exported anymore. -
#13320
b5dabe9
Thanks @{! - Adds support for typing experimental session dataYou can add optional types to your session data by creating a
src/env.d.ts
file in your project that extends the globalApp.SessionData
interface. For example:declare namespace App { interface SessionData { id: string; email: string; }; lastLogin: Date; } }
Any keys not defined in this interface will be treated as
any
.Then when you access
Astro.session
in your components, any defined keys will be typed correctly:--- const user = await Astro.session.get('user'); // ^? const: user: { id: string; email: string; } | undefined const something = await Astro.session.get('something'); // ^? const: something: any Astro.session.set('user', 1); // ^? Argument of type 'number' is not assignable to parameter of type '{ id: string; email: string; }'. ---
See the experimental session docs for more information.
-
#13330
5e7646e
Thanks @ematipico! - Fixes an issue with the conditional rendering of scripts.This change updates a v5.0 breaking change when
experimental.directRenderScript
became the default script handling behavior.If you have already successfully upgraded to Astro v5, you may need to review your script tags again and make sure they still behave as desired after this release. See the v5 Upgrade Guide for more details.
@astrojs/[email protected]
Minor Changes
- #13330
5e7646e
Thanks @ematipico! - Adds the ability to identifybun
as the preferred package manager.
[email protected]
Minor Changes
-
#12052
5be12b2
Thanks @Fryuni! - Exposes extra APIs for scripting and testing.Config helpers
Two new helper functions exported from
astro/config
:mergeConfig()
allows users to merge partially defined Astro configurations on top of a base config while following the merge rules ofupdateConfig()
available for integrations.validateConfig()
allows users to validate that a given value is a valid Astro configuration and fills in default values as necessary.
These helpers are particularly useful for integration authors and for developers writing scripts that need to manipulate Astro configurations programmatically.
Programmatic build
The
build
API now receives a second optionalBuildOptions
argument where users can specify:devOutput
(defaultfalse
): output a development-based build similar to code transformed inastro dev
.teardownCompiler
(defaulttrue
): teardown the compiler WASM instance after build.
These options provide more control when running Astro builds programmatically, especially for testing scenarios or custom build pipelines.
-
#13278
4a43c4b
Thanks @ematipico! - Adds a new configuration optionserver.allowedHosts
and CLI option--allowed-hosts
.Now you can specify the hostnames that the dev and preview servers are allowed to respond to. This is useful for allowing additional subdomains, or running the dev server in a web container.
allowedHosts
checks the Host header on HTTP requests from browsers and if it doesn't match, it will reject the request to prevent CSRF and XSS attacks.astro dev --allowed-hosts=foo.bar.example.com,bar.example.com
astro preview --allowed-hosts=foo.bar.example.com,bar.example.com
// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ server: { allowedHosts: ['foo.bar.example.com', 'bar.example.com'], }, });
This feature is the same as Vite's
server.allowHosts
configuration. -
#13254
1e11f5e
Thanks @p0lyw0lf! - Adds the ability to process and optimize remote images in Markdown filesPreviously, Astro only allowed local images to be optimized when included using
![]()
syntax in plain Markdown files. Astro's image service could only display remote images without any processing.Now, Astro's image service can also optimize remote images written in standard Markdown syntax. This allows you to enjoy the benefits of Astro's image processing when your images are stored externally, for example in a CMS or digital asset manager.
No additional configuration is required to use this feature! Any existing remote images written in Markdown will now automatically be optimized. To opt-out of this processing, write your images in Markdown using the HTML
<img>
tag instead. Note that images located in yourpublic/
folder are still never processed.
Patch Changes
-
#13256
509fa67
Thanks @p0lyw0lf! - Adds experimental responsive image support in MarkdownPreviously, the
experimental.responsiveImages
feature could only provide responsive images when using the<Image />
and<Picture />
components.Now, images written with the
![]()
Markdown syntax in Markdown and MDX files will generate responsive images by default when using this experimental feature.To try this experimental feature, set
experimental.responsiveImages
to true in yourastro.config.mjs
file:{ experimental: { responsiveImages: true, }, }
Learn more about using this feature in the experimental responsive images feature reference.
For a complete overview, and to give feedback on this experimental API, see the Responsive Images RFC.
-
#13323
80926fa
Thanks @ematipico! - Updatesesbuild
andvite
to the latest to avoid false positives audits warnings caused byesbuild
. -
#13313
9e7c71d
Thanks @martrapp! - Fixes an issue where a form field named "attributes" shadows the form.attributes property. -
#12052
5be12b2
Thanks @Fryuni! - Fixes incorrect config update when callingupdateConfig
fromastro:build:setup
hook.The function previously called a custom update config function made for merging an Astro config. Now it calls the appropriate
mergeConfig()
utility exported by Vite that updates functional options correctly. -
#13303
5f72a58
Thanks @ematipico! - Fixes an issue where the dev server was applying second decoding of the URL of the incoming request, causing issues for certain URLs. -
Updated dependencies [
1e11f5e
,1e11f5e
]:- @astrojs/[email protected]
- @astrojs/[email protected]
@astrojs/[email protected]
Minor Changes
-
#13211
7ea0aba
Thanks @slawekkolodziej! - Adds support for regular expressions in ISR exclude listPreviously, excluding a page from ISR required explicitly listing it in
isr.exclude
. As websites grew larger, maintaining this list became increasingly difficult, especially for multiple API routes and pages that needed server-side rendering.To address this, ISR exclusions now support regular expressions, allowing for more flexible and scalable configurations.
// astro.config.mjs import vercel from '@astrojs/vercel/serverless'; export default defineConfig({ output: 'server', adapter: vercel({ isr: { exclude: [ '/preview', // Excludes a specific route (e.g., pages/preview.astro) '/auth/[page]', // Excludes a dynamic route (e.g., pages/auth/[page].astro) /^\/api\/.+/, // Excludes all routes starting with /api/ ], }, }), });
Patch Changes
-
#13323
80926fa
Thanks @ematipico! - Updatesesbuild
andvite
to the latest to avoid false positives audits warnings caused byesbuild
. -
Updated dependencies [
1e11f5e
]:- @astrojs/[email protected]
@astrojs/[email protected]
Patch Changes
- #13323
80926fa
Thanks @ematipico! - Updatesesbuild
andvite
to the latest to avoid false positives audits warnings caused byesbuild
.
@astrojs/[email protected]
Patch Changes
- #13323
80926fa
Thanks @ematipico! - Updatesesbuild
andvite
to the latest to avoid false positives audits warnings caused byesbuild
.
@astrojs/[email protected]
Patch Changes
- #13323
80926fa
Thanks @ematipico! - Updatesesbuild
andvite
to the latest to avoid false positives audits warnings caused byesbuild
.
@astrojs/[email protected]
Patch Changes
- #13323
80926fa
Thanks @ematipico! - Updatesesbuild
andvite
to the latest to avoid false positives audits warnings caused byesbuild
.
@astrojs/[email protected]
Patch Changes
- Updated dependencies [
1e11f5e
]:- @astrojs/[email protected]
@astrojs/[email protected]
Patch Changes
-
#13323
80926fa
Thanks @ematipico! - Updatesesbuild
andvite
to the latest to avoid false positives audits warnings caused byesbuild
. -
Updated dependencies [
1e11f5e
]:- @astrojs/[email protected]
- @astrojs/[email protected]