427 KiB
astro
4.0.0-beta.7
Patch Changes
-
#9295
3d2dbb0e5
Thanks @matthewp! - Remove aria-query packageThis is another CJS-only package that breaks usage.
4.0.0-beta.6
Patch Changes
-
#9275
0968cb1a3
Thanks @lilnasy! - Fixes an issue where html annotations relevant only to the dev server were included in the production build. -
#9292
5428b3da0
Thanks @natemoo-re! - Improves display forastro preferences list
command -
#9293
cf5fa4376
Thanks @matthewp! - Removes the 'a11y-role-has-required-aria-props' audit ruleThis audit rule depends on a CommonJS module. To prevent blocking the 4.0 release the rule is being removed temporarily.
4.0.0-beta.5
Minor Changes
- #9279
6a9669b81
Thanks @martrapp! - Improves consistency between navigations with and without<ViewTransitions>
. See #9279 for more details.
Patch Changes
-
#9170
8a228fce0
Thanks @natemoo-re! - Adds new accessibility audits to the Dev Toolbar's built-in Audits app.The audits Astro performs are non-exhaustive and only capable of detecting a handful of common accessibility issues. Please take care to perform a thorough, manual audit of your site to ensure compliance with the Web Content Accessibility Guidelines (WCAG) international standard before publishing your site.
🧡 Huge thanks to the Svelte team for providing the basis of these accessibility audits!
-
#9274
feaba2c7f
Thanks @TheOtterlord! - Fix routing prefixes whenprefixDefaultLocale
istrue
-
#9273
9887f2412
Thanks @alexanderniebuhr! - Exports type for Dev Toolbar App under correct name
4.0.0-beta.4
Major Changes
-
#9271
47604bd5b
Thanks @matthewp! - Renames Dev Overlay to Dev ToolbarThe previously named experimental Dev Overlay is now known as the Astro Dev Toolbar. Plugins have been renamed as Toolbar Apps. This updates our references to reflect.
To not break existing APIs, aliases for the Toolbar-based names have been created. The previous API names will continue to function but will be deprecated in the future. All documentation has been updated to reflect Toolbar-based names.
4.0.0-beta.3
Major Changes
-
#9263
3cbd8ea75
Thanks @bluwy! - Removes additional deprecated APIs:- The Astro preview server now returns a 404 status instead of a 301 redirect when requesting assets from the public directory without a base.
- Removes special handling when referencing the
astro/client-image
type. You should use theastro/client
type instead. - Removes deprecated built-in
rss
support ingetStaticPaths
. You should use@astrojs/rss
instead. - Removes deprecated
Astro.request.params
support. You should useAstro.params
instead.
Minor Changes
-
#9200
b4b851f5a
Thanks @ematipico! - Adds a new way to configure thei18n.locales
array.Developers can now assign a custom URL path prefix that can span multiple language codes:
// astro.config.mjs export default defineConfig({ experimental: { i18n: { defaultLocale: 'english', locales: ['de', { path: 'english', codes: ['en', 'en-US'] }, 'fr'], routingStrategy: 'prefix-always', }, }, });
With the above configuration, the URL prefix of the default locale will be
/english/
. When computingAstro.preferredLocale
, Astro will use thecodes
. -
#9139
459b26436
Thanks @bluwy! - Reworks Vite's logger to use Astro's logger to correctly log HMR messages
Patch Changes
-
#9252
7b74ec4ba
Thanks @ematipico! - Consistently emit fallback routes in the correct folders, and emit routes that considertrailingSlash
-
#9235
9c2342c32
Thanks @Princesseuh! - Fix SVG icons not showing properly in the extended dropdown menu of the dev overlay -
#9254
b750a161e
Thanks @matthewp! - Improve highlight/tooltip positioning when in fixed positions -
#9230
60cfa49e4
Thanks @FredKSchott! - Update the look and feel of the dev overlay -
#9248
43ddb5217
Thanks @martrapp! - Adds properties of the submit button (name, value) to the form data of a view transition -
#9255
9ea3e0b94
Thanks @matthewp! - Adds instructions on how to hide the dev overlay -
#9013
ff8eadb95
Thanks @bayssmekanique! - Returns the updated config in the integrationastro:config:setup
hook'supdateConfig()
API
4.0.0-beta.2
Major Changes
-
#9225
c421a3d17
Thanks @natemoo-re! - Removes the opt-inhandleForms
property for<ViewTransitions />
. Form submissions are now handled by default and can be disabled by settingdata-astro-reload
on relevant<form />
elements. -
#9199
49aa215a0
Thanks @lilnasy! - This change only affects maintainers of third-party adapters. In the Integration API, theapp.render()
method of theApp
class has been simplified.Instead of two optional arguments, it now takes a single optional argument that is an object with two optional properties:
routeData
andlocals
.app.render(request) - app.render(request, routeData) + app.render(request, { routeData }) - app.render(request, routeData, locals) + app.render(request, { routeData, locals }) - app.render(request, undefined, locals) + app.render(request, { locals })
The current signature is deprecated but will continue to function until next major version.
-
#9212
c0383ea0c
Thanks @alexanderniebuhr! - Removes deprecatedapp.match()
option,matchNotFound
Minor Changes
-
#9115
3b77889b4
Thanks @natemoo-re! - Adds theastro preferences
command to manage user preferences. User preferences are specific to individual Astro users, unlike theastro.config.mjs
file which changes behavior for everyone working on a project.User preferences are scoped to the current project by default, stored in a local
.astro/settings.json
file. Using the--global
flag, user preferences can also be applied to every Astro project on the current machine. Global user preferences are stored in an operating system-specific location.# Disable the dev overlay for the current user in the current project npm run astro preferences disable devOverlay # Disable the dev overlay for the current user in all Astro projects on this machine npm run astro preferences --global disable devOverlay # Check if the dev overlay is enabled for the current user npm run astro preferences list devOverlay
-
#9129
8bfc20511
Thanks @FredKSchott! - Update error log formatting
Patch Changes
-
#9222
279e3c1b3
Thanks @matthewp! - Ensure the dev-overlay-window is anchored to the bottom -
#9218
f4401c8c1
Thanks @matthewp! - Improve high contrast mode with the Dev Overlay -
#9227
4b8a42406
Thanks @matthewp! - Ensure overlay x-ray z-index is higher than the island -
#9214
4fe523b00
Thanks @Princesseuh! - Fixes a number of small user experience bugs with the dev overlay
4.0.0-beta.1
Patch Changes
-
#9118
000e8f465
Thanks @Princesseuh! - Redesign Dev Overlay main screen to show more information, such as the coolest integrations, your current Astro version and more. -
#9118
000e8f465
Thanks @Princesseuh! - Fixes an issue where links with the same pathname as the current page, but different search params, were not prefetched.
4.0.0-beta.0
Major Changes
-
#9138
abf601233
Thanks @bluwy! - Updates the unified, remark, and rehype dependencies to latest. Make sure to update your custom remark and rehype plugins as well to be compatible with the latest versions.Potentially breaking change: The default value of
markdown.remarkRehype.footnoteBackLabel
is changed from"Back to content"
to"Back to reference 1"
. See themdast-util-to-hast
commit for more information. -
#9181
cdabf6ef0
Thanks @bluwy! - Removes support for returning simple objects from endpoints (deprecated since Astro 3.0). You should return aResponse
instead.ResponseWithEncoding
is also removed. You can refactor the code to return a response with an array buffer instead, which is encoding agnostic.The types for middlewares have also been revised. To type a middleware function, you should now use
MiddlewareHandler
instead ofMiddlewareResponseHandler
. If you useddefineMiddleware()
to type the function, no changes are needed. -
#9122
1c48ed286
Thanks @bluwy! - Adds Vite 5 support. There are no breaking changes from Astro. Check the Vite migration guide for details of the breaking changes from Vite instead. -
#9196
37697a2c5
Thanks @bluwy! - Removes support for Shiki custom language'spath
property. The language JSON file should be imported and passed to the option instead.// astro.config.js + import customLang from './custom.tmLanguage.json' export default defineConfig({ markdown: { shikiConfig: { langs: [ - { path: './custom.tmLanguage.json' }, + customLang, ], }, }, })
-
#9168
153a5abb9
Thanks @bluwy! - Removes deprecated features from Astro 3.0- Adapters are now required to pass
supportedAstroFeatures
to specify a list of features they support. - The
build.split
andbuild.excludeMiddleware
options are removed. UsefunctionPerRoute
andedgeMiddleware
from adapters instead. - The
markdown.drafts
option and draft feature is removed. Use content collections instead. - Lowercase endpoint names are no longer supported. Use uppercase endpoint names instead.
getHeaders()
exported from markdown files is removed. UsegetHeadings()
instead.
- Adapters are now required to pass
Minor Changes
-
#9105
6201bbe96
Thanks @FredKSchott! - Update CLI logging experience -
#9161
bd0c2e9ae
Thanks @bluwy! - Renames theentryPoint
property of theinjectRoute
integrations API toentrypoint
for consistency. A warning will be shown prompting you to update your code when using the old name.
Patch Changes
-
#9149
0fe3a7ed5
Thanks @bluwy! - Removes vendored Vite'simportMeta.d.ts
file in favour of Vite 5's newvite/types/import-meta.d.ts
export -
#9150
710be505c
Thanks @bluwy! - Refactors virtual modules exports. This should not break your project unless you import Astro's internal modules, including:astro/middleware/namespace
astro/transitions
astro/transitions/router
astro/transitions/events
astro/transitions/types
astro/prefetch
astro/i18n
-
Updated dependencies [
abf601233
,addb57c8e
,c7953645e
]:- @astrojs/markdown-remark@4.0.0-beta.0
3.6.4
Patch Changes
-
#9226
8f8a40e93
Thanks @outofambit! - Fix i18n fallback routing with routing strategy of always-prefix -
#9179
3f28336d9
Thanks @lilnasy! - Fixes an issue where the presence of a slot in a page led to an error. -
#9219
067a65f5b
Thanks @natemoo-re! - Fix edge case where<style>
updates inside of.astro
files would ocassionally fail to update without reloading the page. -
#9236
27d3e86e4
Thanks @ematipico! - The configurationi18n.routingStrategy
has been replaced with an object calledrouting
.export default defineConfig({ experimental: { i18n: { - routingStrategy: "prefix-always", + routing: { + prefixDefaultLocale: true, + } } } })
export default defineConfig({ experimental: { i18n: { - routingStrategy: "prefix-other-locales", + routing: { + prefixDefaultLocale: false, + } } } })
3.6.3
Patch Changes
- #9193
0dc99c9a2
Thanks @florian-lefebvre! - Prevents the Code component from crashing if the lang isn't supported by falling back toplaintext
.
3.6.2
Patch Changes
- #9189
d90714fc3
Thanks @SpencerWhitehead7! - Fixes an issue where links with the same pathname as the current page, but different search params, were not prefetched.
3.6.4
Patch Changes
-
#9226
8f8a40e93
Thanks @outofambit! - Fix i18n fallback routing with routing strategy of always-prefix -
#9179
3f28336d9
Thanks @lilnasy! - Fixes an issue where the presence of a slot in a page led to an error. -
#9219
067a65f5b
Thanks @natemoo-re! - Fix edge case where<style>
updates inside of.astro
files would ocassionally fail to update without reloading the page. -
#9236
27d3e86e4
Thanks @ematipico! - The configurationi18n.routingStrategy
has been replaced with an object calledrouting
.export default defineConfig({ experimental: { i18n: { - routingStrategy: "prefix-always", + routing: { + prefixDefaultLocale: true, + } } } })
export default defineConfig({ experimental: { i18n: { - routingStrategy: "prefix-other-locales", + routing: { + prefixDefaultLocale: false, + } } } })
3.6.3
Patch Changes
- #9193
0dc99c9a2
Thanks @florian-lefebvre! - Prevents the Code component from crashing if the lang isn't supported by falling back toplaintext
.
3.6.2
Patch Changes
- #9189
d90714fc3
Thanks @SpencerWhitehead7! - Fixes an issue where links with the same pathname as the current page, but different search params, were not prefetched.
3.6.1
Patch Changes
-
#9173
04fdc1c61
Thanks @lilnasy! - Fixes an issue where having a middleware prevented the SSR app from being deployed on Netlify. -
#9186
607542c7c
Thanks @martrapp! - Fixes a view transition issue on webKit browsers that prevented scrolling to #fragments
3.6.0
Minor Changes
-
#9090
c87223c21
Thanks @martrapp! - Take full control over the behavior of view transitions!Three new events now complement the existing
astro:after-swap
andastro:page-load
events:'astro:before-preparation'; // Control how the DOM and other resources of the target page are loaded 'astro:after-preparation'; // Last changes before taking off? Remove that loading indicator? Here you go! 'astro:before-swap'; // Control how the DOM is updated to match the new page
The
astro:before-*
events allow you to change properties and strategies of the view transition implementation. Theastro:after-*
events are notifications that a phase is complete. Head over to docs to see the full view transitions lifecycle including these new events! -
#9092
0ea4bd47e
Thanks @smitbarmase! - Changes the fallback prefetch behavior on slow connections and when data saver mode is enabled. Instead of disabling prefetch entirely, thetap
strategy will be used. -
#9166
cba6cf32d
Thanks @matthewp! - The Picture component is no longer experimentalThe
<Picture />
component, part ofastro:assets
, has exited experimental status and is now recommended for use. There are no code changes to the component, and no upgrade to your project is necessary.This is only a change in documentation/recommendation. If you were waiting to use the
<Picture />
component until it had exited the experimental stage, wait no more! -
#9092
0ea4bd47e
Thanks @smitbarmase! - Adds aignoreSlowConnection
option to theprefetch()
API to prefetch even on data saver mode or slow connection.
3.5.7
Patch Changes
- #9157
7ff8d62bf
Thanks @ematipico! - Revert fix around fallback system, which broken injected styles
3.5.6
Patch Changes
-
#9121
f4efd1c80
Thanks @peng! - Adds a warning ifastro add
fetches a package but returns a non-404 status -
#9142
7d55cf68d
Thanks @ematipico! - Consistely emit fallback routes in the correct folders. -
#9119
306781795
Thanks @ematipico! - Fix a flaw in the i18n fallback logic, where the routes didn't preserve their metadata, such as hoisted scripts -
#9140
7742fd7dc
Thanks @martrapp! - View Transitions: handle clicks on SVGAElements and image maps" -
#9101
e3dce215a
Thanks @ematipico! - Add a new propertyAstro.currentLocale
, available wheni18n
is enabled.
3.5.5
Patch Changes
-
#9091
536c6c9fd
Thanks @ematipico! - TheroutingStrategy
prefix-always
should not force its logic to endpoints. This fixes some regression withastro:assets
and@astrojs/rss
. -
#9102
60e8210b0
Thanks @Princesseuh! - In the dev overlay, when there's too many plugins enabled at once, some of the plugins will now be hidden in a separate sub menu to avoid the bar becoming too long
3.5.4
Patch Changes
-
#9085
fc66ecff1
Thanks @ematipico! - When redirecting to the default root locale, Astro middleare should take into consideration the value oftrailingSlash
-
#9067
c6e449c5b
Thanks @danielhajduk! - Fixes display of debug messages when using the--verbose
flag -
#9075
c5dc8f2ec
Thanks @Princesseuh! - Fix Passthrough image service generating multiple images with the same content in certain cases -
#9083
4537ecf0d
Thanks @bluwy! - Uses newcreateShikiHighlighter
API from@astrojs/markdown-remark
to avoid code duplication -
#9084
045e5ec97
Thanks @matthewp! - Supportsformmethod
andformaction
for form overrides -
#9087
b895113a0
Thanks @alexanderniebuhr! - Fixes the regression which broke bundling of image service for pre-rendered pages, which was introduced by #8854 -
#9058
5ef89ef33
Thanks @Princesseuh! - Add a new settings panel to the dev overlay -
#9045
84312f24f
Thanks @rishi-raj-jain! - Fixes preview servertrailingSlash
handling for request URLs with query strings -
Updated dependencies [
4537ecf0d
]:- @astrojs/markdown-remark@3.5.0
3.5.3
Patch Changes
- #9069
50164f5e3
Thanks @natemoo-re! - Fix a regression introduced in 3.5.0 related to content collection styles
3.5.2
Patch Changes
- #9057
1bc331968
Thanks @ematipico! - Correctly infer the presence of an user middleware
3.5.1
Patch Changes
-
#9037
ea71975ec
Thanks @sarah11918! - Updates i18n configuration reference -
#9051
15b84ccb9
Thanks @ematipico! - Fix a regression where endpoints were incorrectly processed during SSG build whentrailingSlash: "always"
-
#9042
7dedd17fc
Thanks @rishi-raj-jain! - Safely bail when thexclip
command does not exist on Linux when trying to copy to clipboard withastro info
-
#9050
bf0286e50
Thanks @Princesseuh! - Fix --verbose flag not working -
#9049
49b82edb2
Thanks @Princesseuh! - Fix image errors when images were used on the client
3.5.0
Minor Changes
-
#8869
f5bdfa272
Thanks @matthewp! - ## Integration Hooks to add MiddlewareIt's now possible in Astro for an integration to add middleware on behalf of the user. Previously when a third party wanted to provide middleware, the user would need to create a
src/middleware.ts
file themselves. Now, adding third-party middleware is as easy as adding a new integration.For integration authors, there is a new
addMiddleware
function in theastro:config:setup
hook. This function allows you to specify a middleware module and the order in which it should be applied:// my-package/middleware.js import { defineMiddleware } from 'astro:middleware'; export const onRequest = defineMiddleware(async (context, next) => { const response = await next(); if (response.headers.get('content-type') === 'text/html') { let html = await response.text(); html = minify(html); return new Response(html, { status: response.status, headers: response.headers, }); } return response; });
You can now add your integration's middleware and specify that it runs either before or after the application's own defined middleware (defined in
src/middleware.{js,ts}
)// my-package/integration.js export function myIntegration() { return { name: 'my-integration', hooks: { 'astro:config:setup': ({ addMiddleware }) => { addMiddleware({ entrypoint: 'my-package/middleware', order: 'pre', }); }, }, }; }
-
#8854
3e1239e42
Thanks @natemoo-re! - Provides a new, experimental build cache for Content Collections as part of the Incremental Build RFC. This includes multiple refactors to Astro's build process to optimize how Content Collections are handled, which should provide significant performance improvements for users with many collections.Users building a
static
site can opt-in to preview the new build cache by adding the following flag to your Astro config:// astro.config.mjs export default { experimental: { contentCollectionCache: true, }, };
When this experimental feature is enabled, the files generated from your content collections will be stored in the
cacheDir
(by default,node_modules/.astro
) and reused between builds. Most CI environments automatically restore files innode_modules/
by default.In our internal testing on the real world Astro Docs project, this feature reduces the bundling step of
astro build
from 133.20s to 10.46s, about 92% faster. The end-to-endastro build
process used to take 4min 58s and now takes just over1min
for a total reduction of 80%.If you run into any issues with this experimental feature, please let us know!
You can always bypass the cache for a single build by passing the
--force
flag toastro build
.astro build --force
-
#8963
fda3a0213
Thanks @matthewp! - Form support in View Transitions routerThe
<ViewTransitions />
router can now handle form submissions, allowing the same animated transitions and stateful UI retention on form posts that are already available on<a>
links. With this addition, your Astro project can have animations in all of these scenarios:- Clicking links between pages.
- Making stateful changes in forms (e.g. updating site preferences).
- Manually triggering navigation via the
navigate()
API.
This feature is opt-in for semver reasons and can be enabled by adding the
handleForms
prop to the ` component:--- // src/layouts/MainLayout.astro import { ViewTransitions } from 'astro:transitions'; --- <html> <head> <!-- ... --> <ViewTransitions handleForms /> </head> <body> <!-- ... --> </body> </html>
Just as with links, if you don't want the routing handling a form submission, you can opt out on a per-form basis with the
data-astro-reload
property:--- // src/components/Contact.astro --- <form class="contact-form" action="/request" method="post" data-astro-reload> <!-- ...--> </form>
Form support works on post
method="get"
andmethod="post"
forms. -
#8954
f0031b0a3
Thanks @Princesseuh! - Updates the Image Services API to now delete original images from the final build that are not used outside of the optimization pipeline. For users with a large number of these images (e.g. thumbnails), this should reduce storage consumption and deployment times. -
#8984
26b1484e8
Thanks @Princesseuh! - Adds a new propertypropertiesToHash
to the Image Services API to allow specifying which properties ofgetImage()
/<Image />
/<Picture />
should be used for hashing the result files when doing local transformations. For most services, this will include properties such assrc
,width
orquality
that directly changes the content of the generated image. -
#9010
100b61ab5
Thanks @jasikpark! - The<Picture />
component will now usejpg
andjpeg
respectively as fallback formats when the original image is in those formats. -
#8974
143bacf39
Thanks @ematipico! - Experimental support for i18n routing.Astro's experimental i18n routing API allows you to add your multilingual content with support for configuring a default language, computing relative page URLs, and accepting preferred languages provided by your visitor's browser. You can also specify fallback languages on a per-language basis so that your visitors can always be directed to existing content on your site.
Enable the experimental routing option by adding an
i18n
object to your Astro configuration with a default location and a list of all languages to support:// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ experimental: { i18n: { defaultLocale: 'en', locales: ['en', 'es', 'pt-br'], }, }, });
Organize your content folders by locale depending on your
i18n.routingStrategy
, and Astro will handle generating your routes and showing your preferred URLs to your visitors.├── src │ ├── pages │ │ ├── about.astro │ │ ├── index.astro │ │ ├── es │ │ │ ├── about.astro │ │ │ ├── index.astro │ │ ├── pt-br │ │ │ ├── about.astro │ │ │ ├── index.astro
Compute relative URLs for your links with
getRelativeLocaleUrl
from the newastro:i18n
module:--- import { getRelativeLocaleUrl } from 'astro:i18n'; const aboutUrl = getRelativeLocaleUrl('pt-br', 'about'); --- <p>Learn more <a href={aboutURL}>About</a> this site!</p>
Enabling i18n routing also provides two new properties for browser language detection:
Astro.preferredLocale
andAstro.preferredLocaleList
. These combine the browser'sAccept-Langauge
header, and your site's list of supported languages and can be used to automatically respect your visitor's preferred languages.Read more about Astro's experimental i18n routing in our documentation.
-
#8951
38e21d127
Thanks @bluwy! - Prefetching is now supported in coreYou can enable prefetching for your site with the
prefetch: true
config. It is enabled by default when using View Transitions and can also be used to configure theprefetch
behaviour used by View Transitions.You can enable prefetching by setting
prefetch:true
in your Astro config:// astro.config.js import { defineConfig } from 'astro/config'; export default defineConfig({ prefetch: true, });
This replaces the
@astrojs/prefetch
integration, which is now deprecated and will eventually be removed. Visit the Prefetch guide for more information. -
#8903
c5010aad3
Thanks @horo-fox! - Adds experimental support for multiple shiki themes with the newmarkdown.shikiConfig.experimentalThemes
option.
Patch Changes
-
#9016
1ecc9aa32
Thanks @Princesseuh! - Add ability to "Click to go editor" on auditted elements in the dev overlay -
#9029
29b83e9e4
Thanks @Princesseuh! - Use UInt8Array instead of Buffer for both the input and return values of thetransform()
hook of the Image Service API to ensure compatibility with non-Node runtimes.This change is unlikely to affect you, but if you were previously relying on the return value being a Buffer, you may convert an
UInt8Array
to aBuffer
usingBuffer.from(your_array)
. -
Updated dependencies [
c5010aad3
]:- @astrojs/markdown-remark@3.4.0
3.4.4
Patch Changes
-
#9000
35739d01e
Thanks @martrapp! - Fixes an error in dev mode on Safari where view transitions prevented navigating to pages withclient:only
components -
#9014
d979b8f0a
Thanks @Princesseuh! - Add animations, shadows and general styling tweaks to the Dev Overlay to better match the intended design. -
#8996
3988bbcc9
Thanks @bluwy! - Adds compatibility for shiki languages with thepath
property -
#8986
910eb00fe
Thanks @Princesseuh! - Fixsizes
attribute not being present onsource
elements when using it on the Picture component
3.4.3
Patch Changes
-
#8981
ab7e745cc
Thanks @matthewp! - Increase the scroll restoration throttle time -
#8940
937522fb7
Thanks @MarvinXu! - Omit nullish and falsy (non-zero) values when stringifying object-formstyle
attributes in Astro files
3.4.2
Patch Changes
-
#8977
40a061679
Thanks @matthewp! - Prevent route announcer from being visible -
#8929
2da33b7a1
Thanks @lilnasy! - Fixes an issue where rendering the same slot multiple times invoked it only once. -
#8978
cc3278bb6
Thanks @Princesseuh! - In the dev overlay, add a tooltip showing the currently hovered / focused plugin's name
3.4.1
Patch Changes
-
#8966
262cef248
Thanks @Princesseuh! - Fix Dev Overlay not working properly when view transitions are enabled -
#8932
5fed432b0
Thanks @Princesseuh! - Fixed window component appearing over the dev overlay on small windows. Added a maximum length to sections of the tooltip component -
#8965
430c470ac
Thanks @matthewp! - Move VT route announcer styles to a classDoing so allows stricter CSP policies.
-
#8762
35cd810f0
Thanks @evadecker! - Upgrades Zod to 3.22.4 -
#8928
ca90b47cf
Thanks @HiDeoo! - Renames dev overlay UI Toolkit component names for consistency.
3.4.0
Minor Changes
-
#8755
fe4079f05
Thanks @matthewp! - Page PartialsA page component can now be identified as a partial page, which will render its HTML content without including a
<! DOCTYPE html>
declaration nor any<head>
content.A rendering library, like htmx or Stimulus or even just jQuery can access partial content on the client to dynamically update only parts of a page.
Pages marked as partials do not have a
doctype
or any head content included in the rendered result. You can mark any page as a partial by setting this option:--- export const partial = true; --- <li>This is a single list item.</li>
Other valid page files that can export a value (e.g.
.mdx
) can also be marked as partials.Read more about Astro page partials in our documentation.
-
#8821
4740d761a
Thanks @Princesseuh! - Improved image optimization performanceAstro will now generate optimized images concurrently at build time, which can significantly speed up build times for sites with many images. Additionally, Astro will now reuse the same buffer for all variants of an image. This should improve performance for websites with many variants of the same image, especially when using remote images.
No code changes are required to take advantage of these improvements.
-
#8757
e99586787
Thanks @Princesseuh! - Dev Overlay (experimental)Provides a new dev overlay for your browser preview that allows you to inspect your page islands, see helpful audits on performance and accessibility, and more. A Dev Overlay Plugin API is also included to allow you to add new features and third-party integrations to it.
You can enable access to the dev overlay and its API by adding the following flag to your Astro config:
// astro.config.mjs export default { experimental: { devOverlay: true, }, };
Read the Dev Overlay Plugin API documentation for information about building your own plugins to integrate with Astro's dev overlay.
-
#8880
8c3d4a859
Thanks @alexanderniebuhr! - Moves the logic for overriding the image service out of core and into adapters. Also fixes a regression where a validastro:assets
image service configuration could be overridden.
3.3.4
Patch Changes
-
#8877
26b77b8fe
Thanks @bluwy! - Fixes CSS modules ordering by rendering styles before links -
Updated dependencies [
341ef6578
]:- @astrojs/telemetry@3.0.4
3.3.3
Patch Changes
-
#8870
5ea6ee0ed
Thanks @xstevenyung! - prevent production install on astro add cmd -
#8840
5c888c10b
Thanks @martrapp! - Fixes styles ofclient:only
components not persisting during view transitions in dev mode -
#8814
ad2bb9155
Thanks @lilnasy! - Fix an issue where500.astro
did not render when the middleware threw an error. -
#8863
326e17893
Thanks @florian-lefebvre! - Fixes an issue where the dev server logged the full file path on updates.
3.3.2
Patch Changes
-
#8852
2c18e2d12
Thanks @rayriffy! - Only use Vite config from astro.config.mjs as source of truth -
#8828
11f45b9a3
Thanks @rishi-raj-jain! - fix file system path references -
#8779
2b8a459a6
Thanks @ematipico! - Enriches the explanation of thebase
configuration with examples.
3.3.1
Patch Changes
-
#8823
8946f2a25
Thanks @Princesseuh! - Fix duplicate images being created in some cases when using densities and/or widths -
#8842
b405b039a
Thanks @Princesseuh! - Fixes Picture component not taking into account the fallback format specified -
#8827
ce3025cfa
Thanks @rishi-raj-jain! - better error handling there whenever we don't get a normal 200 response -
#8817
f8de1983b
Thanks @bluwy! - Fix error overlay syntax highlighting -
#8838
2f9e2083d
Thanks @dominikg! - deps: unpin and update tsconfck from3.0.0-next.9
to^3.0.0
-
#8823
8946f2a25
Thanks @Princesseuh! - fix remote srcset images not being resized
3.3.0
Minor Changes
-
#8808
2993055be
Thanks @delucis! - Adds support for an--outDir
CLI flag toastro build
-
#8502
c4270e476
Thanks @bluwy! - Updates the internalshiki
syntax highlighter toshikiji
, an ESM-focused alternative that simplifies bundling and maintenance.There are no new options and no changes to how you author code blocks and syntax highlighting.
Potentially breaking change: While this refactor should be transparent for most projects, the transition to
shikiji
now produces a smaller HTML markup by attaching a fallbackcolor
style to thepre
orcode
element, instead of to the linespan
directly. For example:Before:
<code class="astro-code" style="background-color: #24292e"> <pre> <span class="line" style="color: #e1e4e8">my code</span> </pre> </code>
After:
<code class="astro-code" style="background-color: #24292e; color: #e1e4e8"> <pre> <span class="line">my code<span> </pre> </code>
This does not affect the colors as the
span
will inherit thecolor
from the parent, but if you're relying on a specific HTML markup, please check your site carefully after upgrading to verify the styles. -
#8798
f369fa250
Thanks @Princesseuh! - Fixedtsconfig.json
's new array format forextends
not working. This was done by migrating Astro to usetsconfck
instead oftsconfig-resolver
to find and parsetsconfig.json
files. -
#8620
b2ae9ee0c
Thanks @Princesseuh! - Adds experimental support for generatingsrcset
attributes and a new<Picture />
component.srcset
supportTwo new properties have been added to
Image
andgetImage()
:densities
andwidths
.These properties can be used to generate a
srcset
attribute, either based on absolute widths in pixels (e.g. [300, 600, 900]) or pixel density descriptors (e.g.["2x"]
or[1.5, 2]
).--- import { Image } from 'astro'; import myImage from './my-image.jpg'; --- <Image src={myImage} width={myImage.width / 2} densities={[1.5, 2]} alt="My cool image" />
<img src="/_astro/my_image.hash.webp" srcset="/_astro/my_image.hash.webp 1.5x, /_astro/my_image.hash.webp 2x" alt="My cool image" />
Picture component
The experimental
<Picture />
component can be used to generate a<picture>
element with multiple<source>
elements.The example below uses the
format
property to generate a<source>
in each of the specified image formats:--- import { Picture } from 'astro:assets'; import myImage from './my-image.jpg'; --- <Picture src={myImage} formats={['avif', 'webp']} alt="My super image in multiple formats!" />
The above code will generate the following HTML, and allow the browser to determine the best image to display:
<picture> <source srcset="..." type="image/avif" /> <source srcset="..." type="image/webp" /> <img src="..." alt="My super image in multiple formats!" /> </picture>
The
Picture
component takes all the same props as theImage
component, including the newdensities
andwidths
properties.
Patch Changes
-
#8771
bd5aa1cd3
Thanks @lilnasy! - Fixed an issue where the transitions router did not work within framework components. -
#8800
391729686
Thanks @lilnasy! - Fixed an issue where attempting to assign a variable onto locals threw an error. -
#8795
f999365b8
Thanks @bluwy! - Fix markdown page charset to be utf-8 by default (same as Astro 2) -
#8810
0abff97fe
Thanks @jacobthesheep! - Removenetwork-information-types
package since TypeScript supports Network Information API natively. -
#8813
3bef32f81
Thanks @martrapp! - Save and restore focus for persisted input elements during view transitions -
Updated dependencies [
c4270e476
]:- @astrojs/markdown-remark@3.3.0
3.2.4
Patch Changes
-
#8638
160d1cd75
Thanks @florian-lefebvre! - The@astrojs/tailwind
integration now creates atailwind.config.mjs
file by default -
#8767
30de32436
Thanks @martrapp! - Revert fix #8472#8472 caused some style files from previous pages to not be cleanly deleted on view transitions. For a discussion of a future fix for the original issue #8144 see #8745.
-
#8741
c4a7ec425
Thanks @lilnasy! - Fixed an issue on Windows where lowercase drive letters in current working directory led to missing scripts and styles. -
#8772
c24f70d91
Thanks @martrapp! - Fix flickering during view transitions -
#8754
93b092266
Thanks @bluwy! - Make CSS chunk names less confusing -
#8776
29cdfa024
Thanks @martrapp! - Fix transition attributes on islands -
#8773
eaed844ea
Thanks @sumimakito! - Fix an issue where HTML attributes do not render if getHTMLAttributes in an image service returns a Promise
3.2.3
Patch Changes
-
#8737
6f60da805
Thanks @ematipico! - Add provenance statement when publishing the library from CI -
#8747
d78806dfe
Thanks @natemoo-re! - Improve error message when user attempts to render a dynamic component reference -
#8736
d1c75fe15
Thanks @bluwy! - Fixtsconfig.json
update causing the server to crash -
#8743
aa265d730
Thanks @bluwy! - Remove unused CSS output files when inlined -
#8700
78adbc443
Thanks @jacobthesheep! - Update link for Netlify SSR -
#8729
21e0757ea
Thanks @lilnasy! - Node-based adapters now create less server-side javascript -
#8730
357270f2a
Thanks @natemoo-re! - Improveastro info
copy to clipboard compatability -
Updated dependencies [
21f482657
,6f60da805
,21e0757ea
]:- @astrojs/markdown-remark@3.2.1
- @astrojs/internal-helpers@0.2.1
- @astrojs/telemetry@3.0.3
3.2.2
Patch Changes
-
#8710
4c2bec681
Thanks @matthewp! - Fixes View transition styles being missing when component used multiple times
3.2.1
Patch Changes
-
#8680
31c59ad8b
Thanks @bluwy! - Fix hydration on slow connection -
#8698
47ea310f0
Thanks @Princesseuh! - Use a Node-specific image endpoint to resolve images in dev and Node SSR. This should fix many issues related to getting 404 from the _image endpoint under certain configurations -
#8706
345808170
Thanks @bluwy! - Fix duplicated Astro and Vite injected styles
3.2.0
Minor Changes
-
#8696
2167ffd72
Thanks @matthewp! - Support adding integrations dynamicallyAstro integrations can now themselves dynamically add and configure additional integrations during set-up. This makes it possible for integration authors to bundle integrations more intelligently for their users.
In the following example, a custom integration checks whether
@astrojs/sitemap
is already configured. If not, the integration adds Astro’s sitemap integration, passing any desired configuration options:import sitemap from '@astrojs/sitemap'; import type { AstroIntegration } from 'astro'; const MyIntegration = (): AstroIntegration => { return { name: 'my-integration', 'astro:config:setup': ({ config, updateConfig }) => { // Look for sitemap in user-configured integrations. const userSitemap = config.integrations.find( ({ name }) => name === '@astrojs/sitemap' ); if (!userSitemap) { // If sitemap wasn’t found, add it. updateConfig({ integrations: [sitemap({ /* opts */ }], }); } }, }; };
-
#8696
2167ffd72
Thanks @matthewp! - View transitions can now be triggered from JavaScript!Import the client-side router from "astro:transitions/client" and enjoy your new remote control for navigation:
import { navigate } from 'astro:transitions/client'; // Navigate to the selected option automatically. document.querySelector('select').onchange = (ev) => { let href = ev.target.value; navigate(href); };
-
#8696
2167ffd72
Thanks @matthewp! - Route Announcer in<ViewTransitions />
The View Transitions router now does route announcement. When transitioning between pages with a traditional MPA approach, assistive technologies will announce the page title when the page finishes loading. This does not automatically happen during client-side routing, so visitors relying on these technologies to announce routes are not aware when a page has changed.
The view transitions route announcer runs after the
astro:page-load
event, looking for the page<title>
to announce. If one cannot be found, the announcer falls back to the first<h1>
it finds, or otherwise announces the pathname. We recommend you always include a<title>
in each page for accessibility.See the View Transitions docs for more on how accessibility is handled.
Patch Changes
-
#8647
408b50c5e
Thanks @lilnasy! - Fixed an issue where configured redirects with dynamic routes did not work in dev mode. -
#8696
2167ffd72
Thanks @matthewp! - Fix logLevel passed to Vite build -
#8696
2167ffd72
Thanks @matthewp! - Fix NoImageMetadata image path error message -
#8670
e797b6816
Thanks @MichailiK! - Fix asset optimization failing when outDir is outside the project directory -
#8684
824dd4670
Thanks @matthewp! - Support content collections with % in filename -
#8648
cfd895d87
Thanks @lilnasy! - Fixed an issue where a response with status code 404 led to an endless loop of implicit rerouting in dev mode.
3.1.4
Patch Changes
3.1.3
Patch Changes
-
#8591
863f5171e
Thanks @rishi-raj-jain! - add site url to the location of redirect -
#8633
63141f3f3
Thanks @Princesseuh! - Fix build not working when having multiple images in the same Markdown file -
#8636
974d5117a
Thanks @martrapp! - fix: no deletion of scripts during view transition -
#8645
cb838b84b
Thanks @matthewp! - Fix getDataEntryById to lookup by basename -
#8640
f36c4295b
Thanks @matthewp! - Warn on empty content collections -
#8615
4c4ad9d16
Thanks @alexanderniebuhr! - Improve the logging of assets for adapters that do not support image optimization
3.1.2
Patch Changes
-
#8612
bcad715ce
Thanks @matthewp! - Ensure cookies are attached when middleware changes the Response -
#8598
bdd267d08
Thanks @Princesseuh! - Fix relative images in Markdown breaking the build process in certain circumstances -
#8382
e522a5eb4
Thanks @DerTimonius! - Do not throw an error for an empty collection directory. -
#8600
ed54d4644
Thanks @FredKSchott! - Improve config info telemetry -
#8592
70f2a8003
Thanks @bluwy! - Fix alias plugin causing CSS ordering issue -
#8614
4398e9298
Thanks @lilnasy! - Fixed an issue where spaces and unicode characters in project path prevented middleware from running. -
#8603
8f8b9069d
Thanks @matthewp! - Prevent body scripts from re-executing on navigation -
#8609
5a988eaf6
Thanks @bluwy! - Fix Astro HMR from a CSS dependency -
Updated dependencies [
ed54d4644
]:- @astrojs/telemetry@3.0.2
3.1.1
Patch Changes
-
#8580
8d361169b
Thanks @rishi-raj-jain! - add hide to style & script generated for island -
#8568
95b5f6280
Thanks @Princesseuh! - Fix small types issues related toastro:assets
's AVIF support andgetImage
-
#8579
0586e20e8
Thanks @rishi-raj-jain! - show redirect symbol as of the page
3.1.0
Minor Changes
-
#8467
ecc65abbf
Thanks @Princesseuh! - Add a newimage.endpoint
setting to allow using a custom endpoint in dev and SSR -
#8518
2c4fc878b
Thanks @Princesseuh! - Adds support for using AVIF (.avif
) files with the Image component. Importing an AVIF file will now correctly return the same object shape as other image file types. See the Image docs for more information on the different properties available on the returned object. -
#8464
c92e0acd7
Thanks @Princesseuh! - Add types for the object syntax forstyle
(ex:style={{color: 'red'}}
)
Patch Changes
-
#8532
7522bb491
Thanks @bluwy! - Improve markdown rendering performance by sharing processor instance -
#8537
f95febf96
Thanks @martrapp! - bugfix checking media-type in client-side router -
#8536
b85c8a78a
Thanks @Princesseuh! - Improved error messages aroundastro:assets
-
#7607
45364c345
Thanks @FineWolf! - AddCollectionKey
,ContentCollectionKey
, andDataCollectionKey
exports toastro:content
-
Updated dependencies [
d93987824
,7522bb491
]:- @astrojs/markdown-remark@3.2.0
3.0.13
Patch Changes
-
#8484
78b82bb39
Thanks @bb010g! - fix(astro): add support forsrc/content/config.mts
files -
#8504
5e1099f68
Thanks @ematipico! - Minify the HTML of the redicts emitted during the build. -
#8480
644825845
Thanks @yamanoku! - Do not add type="text/css" to inline style tag -
#8472
fa77fa63d
Thanks @matthewp! - Prevent client:only styles from being removed in dev (View Transitions) -
#8506
23f9536de
Thanks @mascii! - chore: correct description ofattribute
option inscopedStyleStrategy
-
#8505
2db9762eb
Thanks @martrapp! - Restore horizontal scroll position on history navigation (view transitions) -
#8461
435b10549
Thanks @rdwz! - Fix lang unspecified code blocks (markdownlint MD040) -
#8492
a6a516d94
Thanks @xiBread! - fix(types): makeimage.service
optional -
#8522
43bc5f2a5
Thanks @martrapp! - let view transitions handle same origin redirects -
#8491
0ca332ba4
Thanks @martrapp! - Bugfixes for back navigation in the view transition client-side router
3.0.12
Patch Changes
3.0.11
Patch Changes
-
#8441
f66053a1e
Thanks @martrapp! - Only transition between pages where both have ViewTransitions enabled -
#8443
0fa483283
Thanks @the-dijkstra! - Fix "Cannot read properties of null" error in CLI code -
Updated dependencies [
f3f62a5a2
]:- @astrojs/markdown-remark@3.1.0
3.0.10
Patch Changes
-
#8437
b3cf1b327
Thanks @Princesseuh! - Fix imports of images with uppercased file extensions not working -
#8440
b92d066b7
Thanks @natemoo-re! - Fix issue whererenderToFinalDestination
would throw in internal Astro code
3.0.9
Patch Changes
-
#8351
7d95bd9ba
Thanks @lilnasy! - Fixed a case where dynamic imports tried to preload inlined stylesheets. -
#8353
1947ef7a9
Thanks @elevatebart! - Astro will now skip asset optimization when there is a query in the import. Instead, it will let vite deal with it using plugins.<script> // This will not return an optimized asset import Component from './Component.vue?component'; </script>
-
#8424
61ad70fdc
Thanks @itsmatteomanf! - Fixes remote assets caching logic to not use expired assets -
#8306
d2f2a11cd
Thanks @jacobthesheep! - Support detecting Bun when logging messages with package manager information. -
#8414
5126c6a40
Thanks @Princesseuh! - Fix missing type forimageConfig
export fromastro:assets
-
#8416
48ff7855b
Thanks @Princesseuh! - Installing will no longer fail when Sharp can't be installed -
#8332
8935b3b46
Thanks @martrapp! - Fix scroll position when navigating back from page w/o ViewTransitions
3.0.8
Patch Changes
-
#8388
362491b8d
Thanks @natemoo-re! - Properly handleBEFORE_HYDRATION_SCRIPT
generation, fixing MIME type error on hydration. -
#8370
06e7256b5
Thanks @itsmatteomanf! - Removed extra curly brace.
3.0.7
Patch Changes
-
#8366
c5633434f
Thanks @natemoo-re! - UpdatechunkFileNames
to avoid emitting invalid characters -
#8367
405ad9501
Thanks @Princesseuh! - Fixtsc
complaining about imports of.astro
files in specific cases -
#8357
6b1e79814
Thanks @itsmatteomanf! - Added counter to show progress for assets image generation. Fixed small unit of measurement error. -
Updated dependencies [
0ce0720c7
]:- @astrojs/telemetry@3.0.1
3.0.6
Patch Changes
-
#8276
d3a6f9f83
Thanks @FredKSchott! - Sanitize route params for leading and trailing slashes -
#8339
f21599671
Thanks @martrapp! - Respect the download attribute in links when using view transitions
3.0.5
Patch Changes
-
#8327
5f3a44aee
Thanks @natemoo-re! - Improveastro info
command formatting, allow users to copy info automatically -
#8320
b21038c19
Thanks @ematipico! - Exclude redirects from split entry points -
#8331
7a894eec3
Thanks @matthewp! - Prevent View Transition fallback from waiting on looping animations -
#8231
af41b03d0
Thanks @justinbeaty! - Fixes scroll behavior when using View Transitions by enablingmanual
scroll restoration
3.0.4
Patch Changes
-
#8324
0752cf368
Thanks @matthewp! - Prevent React hook call warnings when used with MDXWhen React and MDX are used in the same project, if the MDX integration is added before React, previously you'd get a warning about hook calls.
This makes it so that the MDX integration's JSX renderer is last in order.
3.0.3
Patch Changes
- #8300
d4a6ab733
Thanks @ematipico! - Correctly retrive middleware when using it in SSR enviroments.
3.0.2
Patch Changes
- #8293
d9bd7cf5c
Thanks @Princesseuh! - Fixtsc
errors insideastro/components/index.ts
3.0.1
Patch Changes
-
#8290
ef37f9e29
Thanks @matthewp! - Remove "experimental" text from the image config options, for docs and editor etc. text displayed. -
#8290
ef37f9e29
Thanks @matthewp! - Prevent astro check cache issuesastro check
hits cache issues in 3.0 causing it never to work on the first try. -
#8283
c32f52a62
Thanks @ematipico! - Add useful warning when deprecated options are still used.
3.0.0
Major Changes
-
#8188
d0679a666
Thanks @ematipico! - Remove support for Node 16. The lowest supported version by Astro and all integrations is now v18.14.1. As a reminder, Node 16 will be deprecated on the 11th September 2023. -
#8188
364d861bd
Thanks @ematipico! - Removed automatic flattening ofgetStaticPaths
result..flatMap
and.flat
should now be used to ensure that you're returning a flat array. -
#8113
2484dc408
Thanks @Princesseuh! - This import alias is no longer included by default with astro:assets. If you were using this alias with experimental assets, you must convert them to relative file paths, or create your own import aliases.--- // src/pages/posts/post-1.astro - import rocket from '~/assets/rocket.png' + import rocket from '../../assets/rocket.png'; ---
-
#8142
81545197a
Thanks @natemoo-re! - Fixes for theclass:list
directive- Previously,
class:list
would ocassionally not be merged theclass
prop when passed to Astro components. Now,class:list
is always converted to aclass
prop (as a string value). - Previously,
class:list
diverged fromclsx
in a few edge cases. Now,class:list
usesclsx
directly.class:list
used to deduplicate matching values, but it no longer doesclass:list
used to sort individual values, but it no longer doesclass:list
used to supportSet
and other iterables, but it no longer does
- Previously,
-
#8179
6011d52d3
Thanks @matthewp! - Astro 3.0 Release Candidate -
#8188
80f1494cd
Thanks @ematipico! - Thebuild.split
andbuild.excludeMiddleware
configuration options are deprecated and have been replaced by options in the adapter config.If your config includes the
build.excludeMiddleware
option, replace it withedgeMiddleware
in your adapter options:import { defineConfig } from "astro/config"; import netlify from "@astrojs/netlify/functions"; export default defineConfig({ build: { - excludeMiddleware: true }, adapter: netlify({ + edgeMiddleware: true }), });
If your config includes the
build.split
option, replace it withfunctionPerRoute
in your adapter options:import { defineConfig } from "astro/config"; import netlify from "@astrojs/netlify/functions"; export default defineConfig({ build: { - split: true }, adapter: netlify({ + functionPerRoute: true }), });
-
#8207
e45f30293
Thanks @natemoo-re! - Change the View Transition built-in animation options.The
transition:animate
valuemorph
has been renamed toinitial
. Also, this is no longer the default animation.If no
transition:animate
directive is specified, your animations will now default tofade
.Astro also supports a new
transition:animate
value,none
. This value can be used on a page's<html>
element to disable animated full-page transitions on an entire page. -
#8188
c0de7a7b0
Thanks @ematipico! - Sharp is now the default image service used forastro:assets
. If you would prefer to still use Squoosh, you can update your config with the following:import { defineConfig, squooshImageService } from 'astro/config'; // https://astro.build/config export default defineConfig({ image: { service: squooshImageService(), }, });
However, not only do we recommend using Sharp as it is faster and more reliable, it is also highly likely that the Squoosh service will be removed in a future release.
-
#8188
3c3100851
Thanks @ematipico! - Remove support forAstro.__renderMarkdown
which is used by@astrojs/markdown-component
.The
<Markdown />
component was deprecated in Astro v1 and is completely removed in v3. This integration must now be removed from your project.As an alternative, you can use community packages that provide a similar component like https://github.com/natemoo-re/astro-remote instead.
-
#8019
34cb20021
Thanks @bluwy! - Remove backwards-compatible kebab-case transform for camelCase CSS variable names passed to thestyle
attribute. If you were relying on the kebab-case transform in your styles, make sure to use the camelCase version to prevent missing styles. For example:--- const myValue = 'red'; --- <!-- input --> <div style={{ '--myValue': myValue }}></div> <!-- output (before) --> <div style="--my-value:var(--myValue);--myValue:red"></div> <!-- output (after) --> <div style="--myValue:red"></div>
<style> div { - color: var(--my-value); + color: var(--myValue); } </style>
-
#8170
be6bbd2c8
Thanks @bluwy! - Remove deprecated config option types, deprecated script/style attributes, and deprecatedimage
export fromastro:content
-
#8188
7511a4980
Thanks @ematipico! - When using an adapter that supports neither Squoosh or Sharp, Astro will now automatically use an image service that does not support processing, but still provides the other benefits ofastro:assets
such as enforcingalt
, no CLS etc to users -
#7979
dbc97b121
Thanks @bluwy! - Export experimentaldev
,build
,preview
, andsync
APIs fromastro
. These APIs allow you to run Astro's commands programmatically, and replaces the previous entry point that runs the Astro CLI.While these APIs are experimental, the inline config parameter is relatively stable without foreseeable changes. However, the returned results of these APIs are more likely to change in the future.
import { dev, build, preview, sync, type AstroInlineConfig } from 'astro'; // Inline Astro config object. // Provide a path to a configuration file to load or set options directly inline. const inlineConfig: AstroInlineConfig = { // Inline-specific options... configFile: './astro.config.mjs', logLevel: 'info', // Standard Astro config options... site: 'https://example.com', }; // Start the Astro dev server const devServer = await dev(inlineConfig); await devServer.stop(); // Build your Astro project await build(inlineConfig); // Preview your built project const previewServer = await preview(inlineConfig); await previewServer.stop(); // Generate types for your Astro project await sync(inlineConfig);
-
#8188
7d2f311d4
Thanks @ematipico! - Removed support for old syntax of the API routes. -
#8085
68efd4a8b
Thanks @bluwy! - Remove exports forastro/internal/*
andastro/runtime/server/*
in favour ofastro/runtime/*
. Add newastro/compiler-runtime
export for compiler-specific runtime code.These are exports for Astro's internal API and should not affect your project, but if you do use these entrypoints, you can migrate like below:
- import 'astro/internal/index.js'; + import 'astro/runtime/server/index.js'; - import 'astro/server/index.js'; + import 'astro/runtime/server/index.js';
import { transform } from '@astrojs/compiler'; const result = await transform(source, { - internalURL: 'astro/runtime/server/index.js', + internalURL: 'astro/compiler-runtime', // ... });
-
#7893
7bd1b86f8
Thanks @ematipico! - Implements a new scope style strategy called"attribute"
. When enabled, styles are applied usingdata-*
attributes.The default value of
scopedStyleStrategy
is"attribute"
.If you want to use the previous behaviour, you have to use the
"where"
option:import { defineConfig } from 'astro/config'; export default defineConfig({ + scopedStyleStrategy: 'where', });
-
#7924
519a1c4e8
Thanks @matthewp! - Astro's JSX handling has been refactored with better support for each framework.Previously, Astro automatically scanned your components to determine which framework-specific transformations should be used. In practice, supporting advanced features like Fast Refresh with this approach proved difficult.
Now, Astro determines which framework to use with
include
andexclude
config options where you can specify files and folders on a per-framework basis. When using multiple JSX frameworks in the same project, users should manually control which files belong to each framework using theinclude
andexclude
options.export default defineConfig({ // The `include` config is only needed in projects that use multiple JSX frameworks; // if only using one no extra config is needed. integrations: [ preact({ include: ['**/preact/*'], }), react({ include: ['**/react/*'], }), solid({ include: ['**/solid/*'], }), ], });
-
#8030
5208a3c8f
Thanks @natemoo-re! - Removed duplicateastro/dist/jsx
export. Please use theastro/jsx
export instead -
#8188
84af8ed9d
Thanks @ematipico! - Remove MDX plugin re-ordering hack -
#8180
f003e7364
Thanks @ematipico! - The scoped hash created by the Astro compiler is now lowercase. -
#7878
0f637c71e
Thanks @bluwy! - The value ofimport.meta.env.BASE_URL
, which is derived from thebase
option, will no longer have a trailing slash added by default or whentrailingSlash: "ignore"
is set. The existing behavior ofbase
in combination withtrailingSlash: "always"
ortrailingSlash: "never"
is unchanged.If your
base
already has a trailing slash, no change is needed.If your
base
does not have a trailing slash, add one to preserve the previous behaviour:// astro.config.mjs - base: 'my-base', + base: 'my-base/',
-
#8118
8a5b0c1f3
Thanks @lilnasy! - Astro is smarter about CSS! Small stylesheets are now inlined by default, and no longer incur the cost of additional requests to your server. Your visitors will have to wait less before they see your pages, especially those in remote locations or in a subway.This may not be news to you if you had opted-in via the
build.inlineStylesheets
configuration. Stabilized in Astro 2.6 and set to "auto" by default for Starlight, this configuration allows you to reduce the number of requests for stylesheets by inlining them into