
🍿 Minor Changes
-
#9566
165cfc154be477337037185c32b308616d1ed6faThanks @OliverSpeir! - Allows remark plugins to pass options specifying how images in.mdfiles will be optimized -
#9661
d6edc7540864cf5d294d7b881eb886a3804f6d05Thanks @ematipico! - Adds new helper functions for adapter developers.Astro.clientAddresscan now be passed directly to theapp.render()method.
const response = await app.render(request, { clientAddress: '012.123.23.3' });- Helper functions for converting Node.js HTTP request and response objects to web-compatible
RequestandResponseobjects are now provided as static methods on theNodeAppclass.
http.createServer((nodeReq, nodeRes) => {const request: Request = NodeApp.createRequest(nodeReq);const response = await app.render(request);await NodeApp.writeResponse(response, nodeRes);});- Cookies added via
Astro.cookies.set()can now be automatically added to theResponseobject by passing theaddCookieHeaderoption toapp.render().
const response = await app.render(request)const setCookieHeaders: Array<string> = Array.from(app.setCookieHeaders(webResponse));if (setCookieHeaders.length) {for (const setCookieHeader of setCookieHeaders) {headers.append('set-cookie', setCookieHeader);}}const response = await app.render(request, { addCookieHeader: true }) -
#9638
f1a61268061b8834f39a9b38bca043ae41caed04Thanks @ematipico! - Adds a newi18n.routingconfig optionredirectToDefaultLocaleto disable automatic redirects of the root URL (/) to the default locale whenprefixDefaultLocale: trueis set.In projects where every route, including the default locale, is prefixed with
/[locale]/path, this property allows you to control whether or notsrc/pages/index.astroshould automatically redirect your site visitors from/to/[defaultLocale].You can now opt out of this automatic redirection by setting
redirectToDefaultLocale: false:astro.config.mjs export default defineConfig({i18n: {defaultLocale: 'en',locales: ['en', 'fr'],routing: {prefixDefaultLocale: true,redirectToDefaultLocale: false,},},}); -
#9671
8521ff77fbf7e867701cc30d18253856914dbd1bThanks @bholmesdev! - Removes the requirement for non-content files and assets inside content collections to be prefixed with an underscore. For files with extensions like.astroor.css, you can now remove underscores without seeing a warning in the terminal.src/content/blog/post.mdx_styles.css_Component.astrostyles.cssComponent.astroContinue to use underscores in your content collections to exclude individual content files, such as drafts, from the build output.
-
#9567
3a4d5ec8001ebf95c917fdc0d186d29650533d93Thanks @OliverSpeir! - Improves the a11y-missing-content rule and error message for audit feature of dev-overlay. This also fixes an error where this check was falsely reporting accessibility errors. -
#9643
e9a72d9a91a3741566866bcaab11172cb0dc7d31Thanks @blackmann! - Adds a newmarkdown.shikiConfig.transformersconfig option. You can use this option to transform the Shikiji hast (AST format of the generated HTML) to customize the final HTML. Also updates Shikiji to the latest stable version.See Shikiji’s documentation for more details about creating your own custom transformers, and a list of common transformers you can add directly to your project.
-
#9644
a5f1682347e602330246129d4666a9227374c832Thanks @rossrobino! - Adds an experimental flagclientPrerenderto prerender your prefetched pages on the client with the Speculation Rules API.astro.config.mjs {prefetch: {prefetchAll: true,defaultStrategy: 'viewport',},experimental: {clientPrerender: true,},}Enabling this feature overrides the default
prefetchbehavior globally to prerender links on the client according to yourprefetchconfiguration. Instead of appending a<link>tag to the head of the document or fetching the page with JavaScript, a<script>tag will be appended with the corresponding speculation rules.Client side prerendering requires browser support. If the Speculation Rules API is not supported,
prefetchwill fallback to the supported strategy.See the Prefetch Guide for more
prefetchoptions and usage. -
#9439
fd17f4a40b83d14350dce691aeb79d87e8fcaf40Thanks @Fryuni! - Adds an experimental flagglobalRoutePriorityto prioritize redirects and injected routes equally alongside file-based project routes, following the same route priority order rules for all routes.astro.config.mjs export default defineConfig({experimental: {globalRoutePriority: true,},});Enabling this feature ensures that all routes in your project follow the same, predictable route priority order rules. In particular, this avoids an issue where redirects or injected routes (e.g. from an integration) would always take precedence over local route definitions, making it impossible to override some routes locally.
The following table shows which route builds certain page URLs when file-based routes, injected routes, and redirects are combined as shown below:
- File-based route:
/blog/post/[pid] - File-based route:
/[page] - Injected route:
/blog/[...slug] - Redirect:
/blog/tags/[tag]->/[tag] - Redirect:
/posts->/blog
URLs are handled by the following routes:
Page Current Behavior Global Routing Priority Behavior /blog/tags/astroInjected route /blog/[...slug]Redirect to /tags/[tag]/blog/post/0Injected route /blog/[...slug]File-based route /blog/post/[pid]/postsFile-based route /[page]Redirect to /blogIn the event of route collisions, where two routes of equal route priority attempt to build the same URL, Astro will log a warning identifying the conflicting routes.
- File-based route:
🐞 Patch Changes
-
#9719
7e1db8b4ce2da9e044ea0393e533c6db2561ac90Thanks @bluwy! - Refactors Vite config to avoid Vite 5.1 warnings -
#9439
fd17f4a40b83d14350dce691aeb79d87e8fcaf40Thanks @Fryuni! - Updates Astro’s routing priority rules to prioritize the most specifically-defined routes.Now, routes with more defined path segments will take precedence over less specific routes.
For example,
/blog/posts/[pid].astro(3 path segments) takes precedence over/blog/[...slug].astro(2 path segments). This means that:/pages/blog/posts/[id].astrowill build routes of the form/blog/posts/1and/blog/posts/a/pages/blog/[...slug].astrowill build routes of a variety of forms, includingblog/1and/blog/posts/1/a, but will not build either of the previous routes.
For a complete list of Astro’s routing priority rules, please see the routing guide. This should not be a breaking change, but you may wish to inspect your built routes to ensure that your project is unaffected.
-
#9706
1539e04a8e5865027b3a8718c6f142885e7c8d88Thanks @bluwy! - Simplifies HMR handling, improves circular dependency invalidation, and fixes Astro styles invalidation -
Updated dependencies [
165cfc154be477337037185c32b308616d1ed6fa,e9a72d9a91a3741566866bcaab11172cb0dc7d31]:- @astrojs/markdown-remark@4.1.0