Minor Changes
-
#9566
165cfc154be477337037185c32b308616d1ed6fa
Thanks @OliverSpeir! - Allows remark plugins to pass options specifying how images in.md
files will be optimized -
#9661
d6edc7540864cf5d294d7b881eb886a3804f6d05
Thanks @ematipico! - Adds new helper functions for adapter developers.Astro.clientAddress
can 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
Request
andResponse
objects are now provided as static methods on theNodeApp
class.
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 theResponse
object by passing theaddCookieHeader
option 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
f1a61268061b8834f39a9b38bca043ae41caed04
Thanks @ematipico! - Adds a newi18n.routing
config optionredirectToDefaultLocale
to disable automatic redirects of the root URL (/
) to the default locale whenprefixDefaultLocale: true
is 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.astro
should 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
8521ff77fbf7e867701cc30d18253856914dbd1b
Thanks @bholmesdev! - Removes the requirement for non-content files and assets inside content collections to be prefixed with an underscore. For files with extensions like.astro
or.css
, you can now remove underscores without seeing a warning in the terminal.src/content/blog/ post.mdx - _styles.css - _Component.astro + styles.css + Component.astro
Continue to use underscores in your content collections to exclude individual content files, such as drafts, from the build output.
-
#9567
3a4d5ec8001ebf95c917fdc0d186d29650533d93
Thanks @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
e9a72d9a91a3741566866bcaab11172cb0dc7d31
Thanks @blackmann! - Adds a newmarkdown.shikiConfig.transformers
config 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
a5f1682347e602330246129d4666a9227374c832
Thanks @rossrobino! - Adds an experimental flagclientPrerender
to 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
prefetch
behavior globally to prerender links on the client according to yourprefetch
configuration. 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,
prefetch
will fallback to the supported strategy.See the Prefetch Guide for more
prefetch
options and usage. -
#9439
fd17f4a40b83d14350dce691aeb79d87e8fcaf40
Thanks @Fryuni! - Adds an experimental flagglobalRoutePriority
to 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/astro
Injected route /blog/[...slug]
Redirect to /tags/[tag]
/blog/post/0
Injected route /blog/[...slug]
File-based route /blog/post/[pid]
/posts
File-based route /[page]
Redirect to /blog
In 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
7e1db8b4ce2da9e044ea0393e533c6db2561ac90
Thanks @bluwy! - Refactors Vite config to avoid Vite 5.1 warnings -
#9439
fd17f4a40b83d14350dce691aeb79d87e8fcaf40
Thanks @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].astro
will build routes of the form/blog/posts/1
and/blog/posts/a
/pages/blog/[...slug].astro
will build routes of a variety of forms, includingblog/1
and/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
1539e04a8e5865027b3a8718c6f142885e7c8d88
Thanks @bluwy! - Simplifies HMR handling, improves circular dependency invalidation, and fixes Astro styles invalidation -
Updated dependencies [
165cfc154be477337037185c32b308616d1ed6fa
,e9a72d9a91a3741566866bcaab11172cb0dc7d31
]:- @astrojs/[email protected]