AstroEco is Releasing…
Display your GitHub releases using astro-loader-github-releases
Major Changes
- #15049
beddfebThanks @Ntale3! - Removes the ability to render Astro components in Vitest client environments - (v6 upgrade guidance)
Patch Changes
Major Changes
-
#15006
f361730Thanks @florian-lefebvre! - Removes sessiontestdriver - (v6 upgrade guidance) -
#15006
f361730Thanks @florian-lefebvre! - Deprecates session driver string signature - (v6 upgrade guidance)
Minor Changes
-
#15006
f361730Thanks @florian-lefebvre! - Adds new session driver object shapeFor greater flexibility and improved consistency with other Astro code, session drivers are now specified as an object:
-import { defineConfig } from 'astro/config' +import { defineConfig, sessionDrivers } from 'astro/config' export default defineConfig({ session: { - driver: 'redis', - options: { - url: process.env.REDIS_URL - }, + driver: sessionDrivers.redis({ + url: process.env.REDIS_URL + }), } })
Specifying the session driver as a string has been deprecated, but will continue to work until this feature is removed completely in a future major version. The object shape is the current recommended and documented way to configure a session driver.
Patch Changes
-
#15044
7cac71bThanks @florian-lefebvre! - Removes an exposed internal API of the preview server -
#15047
5580372Thanks @matthewp! - Fixes wrangler config template inastro add cloudflareto use correct entrypoint and compatibility date -
#15053
674b63fThanks @matthewp! - Excludesastro:*andvirtual:astro:*from client optimizeDeps in core. Needed for prefetch users since virtual modules are now in the dependency graph.
Minor Changes
-
#15006
f361730Thanks @florian-lefebvre! - Adds new session driver object shapeFor greater flexibility and improved consistency with other Astro code, session drivers are now specified as an object:
-import { defineConfig } from 'astro/config' +import { defineConfig, sessionDrivers } from 'astro/config' export default defineConfig({ session: { - driver: 'redis', - options: { - url: process.env.REDIS_URL - }, + driver: sessionDrivers.redis({ + url: process.env.REDIS_URL + }), } })
Specifying the session driver as a string has been deprecated, but will continue to work until this feature is removed completely in a future major version. The object shape is the current recommended and documented way to configure a session driver.
Patch Changes
- #15045
31074fcThanks @ematipico! - Fixes an issue where using the Vue integration with the Cloudflare adapter resulted in some runtime errors.
Minor Changes
-
#15006
f361730Thanks @florian-lefebvre! - Adds new session driver object shapeFor greater flexibility and improved consistency with other Astro code, session drivers are now specified as an object:
-import { defineConfig } from 'astro/config' +import { defineConfig, sessionDrivers } from 'astro/config' export default defineConfig({ session: { - driver: 'redis', - options: { - url: process.env.REDIS_URL - }, + driver: sessionDrivers.redis({ + url: process.env.REDIS_URL + }), } })
Specifying the session driver as a string has been deprecated, but will continue to work until this feature is removed completely in a future major version. The object shape is the current recommended and documented way to configure a session driver.
Patch Changes
- Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
Minor Changes
-
#15006
f361730Thanks @florian-lefebvre! - Adds new session driver object shapeFor greater flexibility and improved consistency with other Astro code, session drivers are now specified as an object:
-import { defineConfig } from 'astro/config' +import { defineConfig, sessionDrivers } from 'astro/config' export default defineConfig({ session: { - driver: 'redis', - options: { - url: process.env.REDIS_URL - }, + driver: sessionDrivers.redis({ + url: process.env.REDIS_URL + }), } })
Specifying the session driver as a string has been deprecated, but will continue to work until this feature is removed completely in a future major version. The object shape is the current recommended and documented way to configure a session driver.
Patch Changes
-
#15044
7cac71bThanks @florian-lefebvre! - Removes an exposed internal API of the preview server -
#15039
6cc96e7Thanks @matthewp! - Fixes static content deployment by moving it to another folder, so Wrangler can tell the static and worker content apart -
#15045
31074fcThanks @ematipico! - Fixes an issue where using the Vue integration with the Cloudflare adapter resulted in some runtime errors. -
#15053
674b63fThanks @matthewp! - Excludesastro:*andvirtual:astro:*from client optimizeDeps in core. Needed for prefetch users since virtual modules are now in the dependency graph. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
Patch Changes
-
#15024
22c48baThanks @florian-lefebvre! - Fixes a case where JSON schema generation would fail for unrepresentable types -
#15036
f125a73Thanks @florian-lefebvre! - Fixes certain aliases not working when using images in JSON files with the content layer -
#15036
f125a73Thanks @florian-lefebvre! - Fixes a vite warning log during builds when using npm
Major Changes
-
#15037
8641805Thanks @matthewp! - Updates the Wrangler entrypointPreviously, the
mainfield inwrangler.jsoncpointed to the built output, since Wrangler only ran in production after the build completed:Now that Wrangler runs in both development (via workerd) and production, Astro provides a default entrypoint that works for both scenarios.
What should I do?
Update your
wrangler.jsoncto use the new entrypoint:{ "main": "@astrojs/cloudflare/entrypoints/server", }This single entrypoint handles both
astro devand production deployments.
Minor Changes
-
#15037
8641805Thanks @matthewp! - The Wrangler configuration file is now optional. If you don't have custom Cloudflare bindings (KV, D1, Durable Objects, etc.), Astro will automatically generate a default configuration for you.What should I do?
If your
wrangler.jsonconly contains basic configuration like this:{ "main": "@astrojs/cloudflare/entrypoints/server", "compatibility_date": "2025-05-21", "assets": { "directory": "./dist", "binding": "ASSETS", }, }You can safely delete the file. Astro will handle this configuration automatically.
You only need a wrangler config file if you're using:
- KV namespaces
- D1 databases
- Durable Objects
- R2 buckets
- Environment variables
- Custom compatibility flags
- Other Cloudflare-specific features
Patch Changes
-
#15026
90c608cThanks @matthewp! - Improves prebundling of internal Astro modules -
#15030
b5aa52bThanks @ematipico! - Fixed an issue where the featureexperimental.chromeDevtoolsWorkspacewasn't supported by the new version of the adapter. -
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
Patch Changes
- #15036
f125a73Thanks @florian-lefebvre! - Updates how routes are retrieved to avoid relying on a deprecated API
Patch Changes
-
#14982
6849e38Thanks @Princesseuh! - Fixes images outside the project directory not working when using astro:assets in development mode -
#14987
9dd9fcaThanks @Princesseuh! - Fixes SVGs not working in dev mode when using the passthrough image service -
#15014
a178422Thanks @delucis! - Adds support for extending the type of the props accepted by Astro’s<Image>component,<Picture>component, andgetImage()API.
Patch Changes
- #15004
16f3994Thanks @antonyfaris! - Fixes an issue where Svelte components used in Astro files would incorrectly report type errors when usingclient:*directives.
Minor Changes
- #14946
95c40f7Thanks @ematipico! - Removes theexperimental.cspflag and replaces it with a new configuration optionsecurity.csp- (v6 upgrade guidance)
Minor Changes
- #14946
95c40f7Thanks @ematipico! - Removes theexperimental.cspflag and replaces it with a new configuration optionsecurity.csp- (v6 upgrade guidance)
Patch Changes
- Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
Minor Changes
- #14946
95c40f7Thanks @ematipico! - Removes theexperimental.cspflag and replaces it with a new configuration optionsecurity.csp- (v6 upgrade guidance)
Major Changes
-
#14956
0ff51dfThanks @matthewp! - Astro v6.0 upgrades to Zod v4 for schema validation - (v6 upgrade guidance) -
#14759
d7889f7Thanks @florian-lefebvre! - Updates how schema types are inferred for content loaders with schemas (Loader API) - (v6 upgrade guidance) -
#14306
141c4a2Thanks @ematipico! - Removes support for routes with percent-encoded percent signs (e.g.%25) - (v6 upgrade guidance) -
#14759
d7889f7Thanks @florian-lefebvre! - Removes the option to define dynamic schemas in content loaders as functions and adds a new equivalentcreateSchema()property (Loader API) - (v6 upgrade guidance) -
#14306
141c4a2Thanks @ematipico! - RemovesRouteData.generatefrom the Integration API - (v6 upgrade guidance) -
#14989
73e8232Thanks @florian-lefebvre! - Deprecates exposedastro:transitionsinternals - (v6 upgrade guidance) -
#14758
010f773Thanks @florian-lefebvre! - Removes thesetManifestDatamethod fromAppandNodeApp(Adapter API) - (v6 upgrade guidance) -
#14826
170f64eThanks @florian-lefebvre! - Removes theexperimental.failOnPrerenderConflictflag and replaces it with a new configuration optionprerenderConflictBehavior- (v6 upgrade guidance) -
#14923
95a1969Thanks @florian-lefebvre! - Deprecatesastro:schemaandzfromastro:contentin favor ofastro/zod- (v6 upgrade guidance) -
#14844
8d43b1dThanks @trueberryless! - Removes exposedastro:actionsinternals - (v6 upgrade guidance) -
#14306
141c4a2Thanks @ematipico! - Changes the shape ofSSRManifestproperties and adds several new required properties in the Adapter API - (v6 upgrade guidance) -
#14306
141c4a2Thanks @ematipico! - Changes integration hooks and HMR access patterns in the Integration API - (v6 upgrade guidance) -
#14306
141c4a2Thanks @ematipico! - Removes the unusedastro:ssr-manifestvirtual module - (v6 upgrade guidance)
Minor Changes
-
#14306
141c4a2Thanks @ematipico! - Adds new optional properties tosetAdapter()for adapter entrypoint handling in the Adapter APIChanges:
- New optional properties:
devEntrypoint?: string | URL- specifies custom dev server entrypointentryType?: 'self' | 'legacy-dynamic'- determines if the adapter provides its own entrypoint ('self') or if Astro constructs one ('legacy-dynamic', default)
Migration: Adapter authors can optionally add these properties to support custom dev entrypoints. If not specified, adapters will use the legacy behavior.
- New optional properties:
-
#14826
170f64eThanks @florian-lefebvre! - Adds an optionprerenderConflictBehaviorto configure the behavior of conflicting prerendered routesBy default, Astro warns you during the build about any conflicts between multiple dynamic routes that can result in the same output path. For example
/blog/[slug]and/blog/[...all]both could try to prerender the/blog/post-1path. In such cases, Astro renders only the highest priority route for the conflicting path. This allows your site to build successfully, although you may discover that some pages are rendered by unexpected routes.With the new
prerenderConflictBehaviorconfiguration option, you can now configure this further:prerenderConflictBehavior: 'error'fails the buildprerenderConflictBehavior: 'warn'(default) logs a warning and the highest-priority route winsprerenderConflictBehavior: 'ignore'silently picks the highest-priority route when conflicts occur
import { defineConfig } from 'astro/config'; export default defineConfig({ + prerenderConflictBehavior: 'error', }); -
#14946
95c40f7Thanks @ematipico! - Removes theexperimental.cspflag and replaces it with a new configuration optionsecurity.csp- (v6 upgrade guidance)
Patch Changes
- #14982
6849e38Thanks @Princesseuh! - Fixes images outside the project directory not working when using astro:assets in development mode
Major Changes
-
#14306
141c4a2Thanks @ematipico! - Changes the API for creating a customentrypoint, replacing thecreateExports()function with a direct export pattern.What should I do?
If you're using a custom
entryPointin your Cloudflare adapter config, update your existing worker file that usescreateExports()to reflect the new, simplified pattern:my-entry.ts
import type { SSRManifest } from 'astro'; import { App } from 'astro/app'; import { handle } from '@astrojs/cloudflare/handler'; import { DurableObject } from 'cloudflare:workers'; class MyDurableObject extends DurableObject<Env> { constructor(ctx: DurableObjectState, env: Env) { super(ctx, env); } } export function createExports(manifest: SSRManifest) { const app = new App(manifest); return { default: { async fetch(request, env, ctx) { await env.MY_QUEUE.send('log'); return handle(manifest, app, request, env, ctx); }, async queue(batch, _env) { let messages = JSON.stringify(batch.messages); console.log(`consumed from our queue: ${messages}`); }, } satisfies ExportedHandler<Env>, MyDurableObject: MyDurableObject, }; }
To create the same custom
entrypointusing the updated API, export the following function instead:my-entry.ts
import { handle } from '@astrojs/cloudflare/utils/handler'; export default { async fetch(request, env, ctx) { await env.MY_QUEUE.send("log"); return handle(manifest, app, request, env, ctx); }, async queue(batch, _env) { let messages = JSON.stringify(batch.messages); console.log(`consumed from our queue: ${messages}`); } } satisfies ExportedHandler<Env>,
The manifest is now created internally by the adapter.
-
#14306
141c4a2Thanks @ematipico! - Development server now runs in workerdastro devnow runs your Cloudflare application using Cloudflare's workerd runtime instead of Node.js. This means your development environment is now a near-exact replica of your production environment—the same JavaScript engine, the same APIs, the same behavior. You'll catch issues during development that would have only appeared in production, and features like Durable Objects, Workers Analytics Engine, and R2 bindings work exactly as they do on Cloudflare's platform.To accommodate this major change to your development environment, this update includes breaking changes to
Astro.locals.runtime, removing some of its properties.What should I do?
Update occurrences of
Astro.locals.runtimeas shown below:Astro.locals.runtimeno longer contains theenvobject. Instead, import it directly:import { env } from 'cloudflare:workers';
Astro.locals.runtimeno longer contains thecfobject. Instead, access it directly from the request:Astro.request.cf;
Astro.locals.runtimeno longer contains thecachesobject. Instead, use the globalcachesobject directly:caches.default.put(request, response);
Astro.locals.runtimeobject is replaced withAstro.locals.cfContextwhich contains the CloudflareExecutionContext:const cfContext = Astro.locals.cfContext;
Minor Changes
-
#14306
141c4a2Thanks @ematipico! - Adds support forastro previewcommandDevelopers can now use
astro previewto test their Cloudflare Workers application locally before deploying. The preview runs using Cloudflare's workerd runtime, giving you a staging environment that matches production exactly—including support for KV namespaces, environment variables, and other Cloudflare-specific features.
Patch Changes
- Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0
Patch Changes
- #14934
4264a36Thanks @antonyfaris! - Fixes an issue where Svelte 5 components used in Astro files would not have proper type checking and IntelliSense.
Patch Changes
- #14988
a3a20d8Thanks @Princesseuh! - Retries failed deploy
Patch Changes
- #14902
d8305f8Thanks @tuyuritio! - Prevents HAST-only props from being directly converted into HTML attributes
Patch Changes
- Updated dependencies [
d8305f8]:- @astrojs/markdown-remark@6.3.10
Patch Changes
- Updated dependencies [
d8305f8]:- @astrojs/markdown-remark@6.3.10
Patch Changes
- #14950
385be1bThanks @dvelasquez! - Fixes an issue with the volar-service-emmet that was pointing to a github username/repository instead of a npm package. This type of dependencies are not supported for Deno installations and it can break in enterprise environments that use private registries or don't have access to public github.
Minor Changes
-
#3491
28810f0Thanks @JusticeMatthew! - Changes text overflow styling in Markdown content⚠️ Potentially breaking change: This release switches theoverflow-wrapCSS style for common elements tobreak-word. In most cases, there should be little visual impact, but this change can impact how layouts with implicit sizing (such as tables) look, improving legibility in how words wrap.If you want to preserve the previous styling, you can add the following custom CSS to your site:
p, h1, h2, h3, h4, h5, h6, code { overflow-wrap: anywhere; }
-
#3351
239698cThanks @HiDeoo! - Ensures that Starlight CSS layer order is predictable in custom pages using the<StarlightPage>component.Previously, due to how import order works in Astro, the
<StarlightPage>component had to be the first import in custom pages to set up cascade layers used internally by Starlight to manage the order of its styles.With this change, this restriction no longer applies and Starlight’s styles will be applied correctly regardless of the import order of the
<StarlightPage>component. -
#3521
ca7b771Thanks @shubham-padia! - Fixes an issue where a vertical scrollbar could be displayed on the Starlight<Tabs>component when zooming the page⚠️ Potentially breaking change: The<Tabs>component no longer usesmargin-bottomandborder-bottomto highlight the current tab. This is now done with abox-shadow. If you have custom styling for your tabs, you may need to update it.If you want to preserve the previous styling, you can add the following custom CSS to your site:
starlight-tabs .tab { margin-bottom: -2px; } starlight-tabs .tab > [role='tab'] { border-bottom: 2px solid var(--sl-color-gray-5); box-shadow: none; } starlight-tabs .tab [role='tab'][aria-selected='true'] { border-color: var(--sl-color-text-accent); }
-
#3549
1cf50ebThanks @jacobdalamb! - Updates the default sans-serif system font stack, dropping support for the-apple-systemandBlinkMacSystemFontfont names used in older browsers. These are no longer needed in browsers officially supported by Starlight.If you still need to support older browsers, you can add the following custom CSS to your site:
:root { --sl-font-system: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; }
-
#3332
f61f99dThanks @HiDeoo! - Adds a newmarkdown.processedDirsconfiguration option to specify additional directories where files should be processed by Starlight’s Markdown pipeline.By default, Starlight’s processing only applies to Markdown and MDX content loaded using Starlight’s
docsLoader(). This new option allows to extend this processing to other directories, which can be useful if you are rendering content from a custom content collection using the<StarlightPage>component and expect Starlight’s Markdown processing to be applied to that content as well.
Patch Changes
- Update
README.md(7deec94)
Patch Changes
- Update
README.md(7deec94)
Patch Changes
- #14916
f00aa2bThanks @Princesseuh! - Retry failed publish (again)
Patch Changes
- #14911
fcdf52fThanks @Princesseuh! - Retry failed publish
Patch Changes
- #14909
629d86bThanks @Princesseuh! - Fixes borked publish
Patch Changes
- #14740
abfed97Thanks @ArmandPhilippot! - Fixes link targets in documentation following repository relocation.
Patch Changes
- #14740
abfed97Thanks @ArmandPhilippot! - Fixes link targets in documentation following repository relocation.
Patch Changes
-
#14740
abfed97Thanks @ArmandPhilippot! - Fixes link targets in documentation following repository relocation. -
Updated dependencies [
abfed97]:- @astrojs/language-server@2.16.1
Patch Changes
-
#14740
abfed97Thanks @ArmandPhilippot! - Fixes link targets in documentation following repository relocation. -
#14710
c6903cdThanks @RomanHauksson! - Fixes the displayed description for the Content-intellisense setting to refer to the correct configuration file option
Patch Changes
-
#3555
547dc30Thanks @Its-Just-Nans! - Improves the error message thrown when using a file in thepublic/directory with Starlight’scustomCssconfiguration option -
#3496
b78fda4Thanks @delucis! - Fixes invalid<head>output when configuration is missing:- Omits
<meta property="og:description" />if Starlight’sdescriptionoption is unset - Omits
<link rel="canonical" />and<meta property="og:url" />if Astro’ssiteoption is unset
- Omits
-
#3511
8727df1Thanks @astrobot-houston! - Updates theseti:gitlabicon to match latest version from Seti UI Icons
Patch Changes
- #14813
e1dd377Thanks @ematipico! - Removespicocolorsas dependency in favor of the forkpiccolore.
Patch Changes
- #14813
e1dd377Thanks @ematipico! - Removespicocolorsas dependency in favor of the forkpiccolore.
Patch Changes
- #14813
e1dd377Thanks @ematipico! - Removespicocolorsas dependency in favor of the forkpiccolore.
Patch Changes
- Updated dependencies []:
- @astrojs/markdown-remark@6.3.9
Patch Changes
-
#14791
9e9c528Thanks @Princesseuh! - Changes the remote protocol checks for images to require explicit authorization in order to use data URIs.In order to allow data URIs for remote images, you will need to update your
astro.config.mjsfile to include the following configuration:// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ images: { remotePatterns: [ { protocol: 'data', }, ], }, });
-
#14787
0f75f6bThanks @matthewp! - Fixes wildcard hostname pattern matching to correctly reject hostnames without dotsPreviously, hostnames like
localhostor other single-part names would incorrectly match patterns like*.example.com. The wildcard matching logic has been corrected to ensure that only valid subdomains matching the pattern are accepted.
Patch Changes
- Update schema (
29a885d)
Major Changes
- #14427
e131261Thanks @florian-lefebvre! - Increases minimum Node.js version to 22.12.0 - (v6 upgrade guidance)
Patch Changes
-
#14715
3d55c5dThanks @ascorbic! - Adds support for client hydration ingetContainerRenderer()The
getContainerRenderer()function is exported by Astro framework integrations to simplify the process of rendering framework components when using the experimental Container API inside a Vite or Vitest environment. This update adds the client hydration entrypoint to the returned object, enabling client-side interactivity for components rendered using this function. Previously this required users to manually callcontainer.addClientRenderer()with the appropriate client renderer entrypoint.See the
container-with-vitestdemo for a usage example, and the Container API documentation for more information on using framework components with the experimental Container API.
Patch Changes
-
#14715
3d55c5dThanks @ascorbic! - Adds support for client hydration ingetContainerRenderer()The
getContainerRenderer()function is exported by Astro framework integrations to simplify the process of rendering framework components when using the experimental Container API inside a Vite or Vitest environment. This update adds the client hydration entrypoint to the returned object, enabling client-side interactivity for components rendered using this function. Previously this required users to manually callcontainer.addClientRenderer()with the appropriate client renderer entrypoint.See the
container-with-vitestdemo for a usage example, and the Container API documentation for more information on using framework components with the experimental Container API.
Patch Changes
-
#14715
3d55c5dThanks @ascorbic! - Adds support for client hydration ingetContainerRenderer()The
getContainerRenderer()function is exported by Astro framework integrations to simplify the process of rendering framework components when using the experimental Container API inside a Vite or Vitest environment. This update adds the client hydration entrypoint to the returned object, enabling client-side interactivity for components rendered using this function. Previously this required users to manually callcontainer.addClientRenderer()with the appropriate client renderer entrypoint.See the
container-with-vitestdemo for a usage example, and the Container API documentation for more information on using framework components with the experimental Container API.
Patch Changes
-
#14715
3d55c5dThanks @ascorbic! - Adds support for client hydration ingetContainerRenderer()The
getContainerRenderer()function is exported by Astro framework integrations to simplify the process of rendering framework components when using the experimental Container API inside a Vite or Vitest environment. This update adds the client hydration entrypoint to the returned object, enabling client-side interactivity for components rendered using this function. Previously this required users to manually callcontainer.addClientRenderer()with the appropriate client renderer entrypoint.See the
container-with-vitestdemo for a usage example, and the Container API documentation for more information on using framework components with the experimental Container API.
Patch Changes
-
#14715
3d55c5dThanks @ascorbic! - Adds support for client hydration ingetContainerRenderer()The
getContainerRenderer()function is exported by Astro framework integrations to simplify the process of rendering framework components when using the experimental Container API inside a Vite or Vitest environment. This update adds the client hydration entrypoint to the returned object, enabling client-side interactivity for components rendered using this function. Previously this required users to manually callcontainer.addClientRenderer()with the appropriate client renderer entrypoint.See the
container-with-vitestdemo for a usage example, and the Container API documentation for more information on using framework components with the experimental Container API.
Patch Changes
-
#14715
3d55c5dThanks @ascorbic! - Adds support for client hydration ingetContainerRenderer()The
getContainerRenderer()function is exported by Astro framework integrations to simplify the process of rendering framework components when using the experimental Container API inside a Vite or Vitest environment. This update adds the client hydration entrypoint to the returned object, enabling client-side interactivity for components rendered using this function. Previously this required users to manually callcontainer.addClientRenderer()with the appropriate client renderer entrypoint.See the
container-with-vitestdemo for a usage example, and the Container API documentation for more information on using framework components with the experimental Container API.
Last fetched: | Scheduled refresh: Every Saturday
See Customizing GitHub Activity Pages to configure your own
Inspired by releases.antfu.me
{ "main": "dist/_worker.js/index.js", }