Major Changes
-
#11798
e9e2139
Thanks @matthewp! - Unflag globalRoutePriorityThe previously experimental feature
globalRoutePriority
is now the default in Astro 5.This was a refactoring of route prioritization in Astro, making it so that injected routes, file-based routes, and redirects are all prioritized using the same logic. This feature has been enabled for all Starlight projects since it was added and should not affect most users.
-
#11679
ea71b90
Thanks @florian-lefebvre! - Theastro:env
feature introduced behind a flag in v4.10.0 is no longer experimental and is available for general use. If you have been waiting for stabilization before usingastro:env
, you can now do so.This feature lets you configure a type-safe schema for your environment variables, and indicate whether they should be available on the server or the client.
To configure a schema, add the
env
option to your Astro config and define your client and server variables. If you were previously using this feature, please remove the experimental flag from your Astro config and move your entireenv
configuration unchanged to a top-level option.import { defineConfig, envField } from 'astro/config'; export default defineConfig({ env: { schema: { API_URL: envField.string({ context: 'client', access: 'public', optional: true }), PORT: envField.number({ context: 'server', access: 'public', default: 4321 }), API_SECRET: envField.string({ context: 'server', access: 'secret' }), }, }, });
You can import and use your defined variables from the appropriate
/client
or/server
module:--- import { API_URL } from 'astro:env/client'; import { API_SECRET_TOKEN } from 'astro:env/server'; const data = await fetch(`${API_URL}/users`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${API_SECRET_TOKEN}`, }, }); --- <script> import { API_URL } from 'astro:env/client'; fetch(`${API_URL}/ping`); </script>
-
#11788
7c0ccfc
Thanks @ematipico! - Updates the default value ofsecurity.checkOrigin
totrue
, which enables Cross-Site Request Forgery (CSRF) protection by default for pages rendered on demand.If you had previously configured
security.checkOrigin: true
, you no longer need this set in your Astro config. This is now the default and it is safe to remove.To disable this behavior and opt out of automatically checking that the “origin” header matches the URL sent by each request, you must explicitly set
security.checkOrigin: false
:export default defineConfig({ + security: { + checkOrigin: false + } })
-
#11741
6617491
Thanks @bluwy! - Removes internal JSX handling and moves the responsibility to the@astrojs/mdx
package directly. The following exports are also now removed:astro/jsx/babel.js
astro/jsx/component.js
astro/jsx/index.js
astro/jsx/renderer.js
astro/jsx/server.js
astro/jsx/transform-options.js
If your project includes
.mdx
files, you must upgrade@astrojs/mdx
to the latest version so that it doesn't rely on these entrypoints to handle your JSX. -
#11782
9a2aaa0
Thanks @Princesseuh! - Makes thecompiledContent
property of Markdown content an async function, this change should fix underlying issues where sometimes when using a custom image service and images inside Markdown, Node would exit suddenly without any error message.--- import * as myPost from "../post.md"; - const content = myPost.compiledContent(); + const content = await myPost.compiledContent(); --- <Fragment set:html={content} />
-
#11770
cfa6a47
Thanks @Princesseuh! - Removed support for the Squoosh image service. As the underlying librarylibsquoosh
is no longer maintained, and the image service sees very little usage we have decided to remove it from Astro.Our recommendation is to use the base Sharp image service, which is more powerful, faster, and more actively maintained.
- import { squooshImageService } from "astro/config"; import { defineConfig } from "astro/config"; export default defineConfig({ - image: { - service: squooshImageService() - } });
If you are using this service, and cannot migrate to the base Sharp image service, a third-party extraction of the previous service is available here: https://github.com/Princesseuh/astro-image-service-squoosh
Patch Changes
-
#11780
c6622ad
Thanks @Princesseuh! - Deprecates the Squoosh image service, to be removed in Astro 5.0. We recommend migrating to the default Sharp service. -
#11732
4cd6c43
Thanks @matthewp! - Use GET requests with preloading for Server IslandsServer Island requests include the props used to render the island as well as any slots passed in (excluding the fallback slot). Since browsers have a max 4mb URL length we default to using a POST request to avoid overflowing this length.
However in reality most usage of Server Islands are fairly isolated and won't exceed this limit, so a GET request is possible by passing this same information via search parameters.
Using GET means we can also include a
<link rel="preload">
tag to speed up the request.This change implements this, with safe fallback to POST.
-
#11773
86a3391
Thanks @ematipico! - Changes messages logged when using unsupported, deprecated, or experimental adapter features for clarity -
#11774
c6400ab
Thanks @florian-lefebvre! - Fixes the path returned byinjectTypes
-
#11771
49650a4
Thanks @florian-lefebvre! - Fixes an error thrown byastro sync
when anastro:env
virtual module is imported inside the Content Collections config -
#11744
b677429
Thanks @bluwy! - Disables the WebSocket server when creating a Vite server for loading config files