-
#341
a430ab1
Thanks @alexanderniebuhr! - Fixes an issue if environment variables where used inside the middleware and a prerendering occured. -
#335
237f332
Thanks @alexanderniebuhr! - Fixes an issue displaying images which are optimized duringastro build
- #340
45d0abb
Thanks @alexanderniebuhr! - Fixes an issue if environment variables where used inside the middleware and a prerendering occured.
- #302
dc0039f
Thanks @alexanderniebuhr! - Fixes an issue where projects break when nowrangler.toml
file was present
-
#290
1c4145e
Thanks @alexanderniebuhr! - Cloudflare v11This release drops support for Astro versions
<= 4.10.2
. The new supported and required Astro versions are>= 4.10.3
. This allowed us to remove additional workarounds related to projects with many prerendered pages. This should fix all bundling issues that are not caused by an upstream package.If you still observe an issue, please check current open issues or create a new one in the repository.
To upgrade an existing project, use the automated
@astrojs/upgrade
CLI tool. Alternatively, upgrade manually by running the upgrade command from your package manager:# Recommended: npx @astrojs/upgrade # Manual: npm install astro@latest pnpm upgrade astro --latest yarn upgrade astro --latest
This release adds experimental support for
astro:env
, which helps to streamline the usage of environment variables for Astro projects. You can read more about it in Astro Docs. IMPORTANT: Cloudflare Bindings are not supported byastro:env
, and still should be accessed by usingAstro.locals.runtime.env
orcontext.locals.runtime.env
.astro:env
supports environment variables only.If you observe any issues, please check current open issues or create a new one in the repository.
To add environment variables to your project, you still need to make sure they are available in three places. You're setup might require different steps to achieve this, so we can't give you a complete step-by-step guide, on how to achieve the requirements, but here are some guidance to get you started:
process.env
during build in your node process (astro build
)wrangler.toml
for local development (astro dev
)Cloudflare Pages Dashboard
for production deployments
Add "public" environment variables to your
wrangler.toml
. (If you addpages_build_output_dir = "./dist"
to yourwrangler.toml
, these will be synced to your Cloudflare Pages Dashboard, and you don't have to add them there manually):# wrangler.toml name = "test" +[vars] +API_URL = "https://google.de" +PORT = 4322 # ...
If you also need "secret" environment variables (e.g. API Keys, etc.), you add them to your
.dev.vars
file. (These won't be synced automatically, and you need to add them manually as encrypted variables to the Cloudflare Pages Dashboard or usewrangler
CLI to push them):# .dev.vars + API_SECRET=123456789
With your environment variables added to those two files and synced to the Cloudflare Pages Dashboard, you should be able to use them with
astro:env
when runningastro dev
&astro build
, but you need to use Cloudflare's Build Pipeline and Cloudflare's GitHub App connection.However if you build your project locally or inside a custom GitHub Action and deploy with direct upload to Cloudflare, you need to ensure that the environment variables are also available for your build process. The simplest but not safest is to use your shell, e.g.
API_URL=https://google.de PORT=4322 API_SECRET=123456789 astro build
. For more complex setups, you should find out the way for your specific setup to provide environment variables to the build process.Additionally, you need to define your schema inside your
astro.config.mjs
file:import { defineConfig, envField } from "astro/config" export default defineConfig({ + experimental: { + env: { + schema: { + API_URL: envField.string({ context: "client", access: "public", optional: true }), + PORT: envField.number({ context: "server", access: "public", default: 4321 }), + API_SECRET: envField.string({ context: "server", access: "secret" }), + } + } + } })
Finally, you should be able to access your environment variables in your Astro project, according to the Astro Docs, e.g.
import { API_URL } from "astro:env/client"
orimport { PORT, API_SECRET } from "astro:env/server"
.NOTE: If you want to use environment variables in other files that are not
.astro
ormiddleware
files, you still need to make sure you don't access the variable in a global scope. We recommend wrapping your logic with a function, which you then call from your.astro
ormiddleware
files inside the request scope.// foo.ts import { MY_SECRET } from 'astro:env/server'; // DOESN'T WORK const client = myLib(MY_SECRET); // WORKS export const bar = () => { const client = myLib(MY_SECRET); return client; };
This release starts monitoring your
wrangler.toml
and.dev.vars
files for changes and restarting the dev server if you update them.If you observe any issues, please check current open issues or create a new one in the repository.
This release changes the default behavior of
imageService
. In the past the default behavior was falling back to anoop
service, which disabled image optimization for your project, because Cloudflare doesn's support it. The new default iscompile
, which enables image optimization for prerendered pages during build, but disallows the usage of anyastro:assets
feature inside of on-demand pages.If you experience issues with the new setting, you can revert back to the old setting by setting
imageService
topassthrough
. Furthermore if you observe any issues, please check current open issues or create a new one in the repository.// astro.config.mjs // ... adapter: cloudflare({ - imageService: 'compile', }), // ...
This release enables
platformProxy
by default. While most projects shouldn't be affected, this is a breaking change on paper.If you experience issues with the new default, you can deactivate it by setting
platformProxy.enabled
tofalse
. Furthermore if you observe any issues, please check current open issues or create a new one in the repository.// astro.config.mjs // ... adapter: cloudflare({ - platformProxy: { - enabled: true, - }, }), // ...
This release throws an error if you use Cloudflare's
passThroughOnException
function because, as stated in Cloudflare docs, the function doesn't work with Cloudflare Pages.If you observe any issues, please check current open issues or create a new one in the repository.
This release removes the previous deprecated
wasmModuleImports
adapter option and replaces it with thecloudflareModules
option, which offers flexibility and support for more file types.If you observe any issues, please check current open issues or create a new one in the repository.
// astro.config.mjs // ... adapter: cloudflare({ - wasmModuleImports: true, }), // ...
- #292
8972d60
Thanks @florian-lefebvre! - Removes experimental support forastro:env
- #282
65337f3
Thanks @alexanderniebuhr! - Fixes backwards compatibility with Astro <= 4.9
- #258
033847d
Thanks @alexanderniebuhr! - Adds support for experimentalastro:env
released in Astro 4.10
- #251
b826675
Thanks @adrianlyjak! - Adds support for.bin
and.txt
files
- #226
de6f3eb
Thanks @alexanderniebuhr! - Fixes chunk issues when bundling node_modules dependencies
- #249
72fc8ac
Thanks @adrianlyjak! - Fixes build errors when wasm modules are imported from a file that is shared in both prerendered static pages and server side rendered pages
- #247
e08cd4c
Thanks @alexanderniebuhr! - Fixes an issue where redirect rules where not excluded from routing due to ordering issues
- #243
71ba51d
Thanks @alexanderniebuhr! - Fixes an issue where the bundle was not cleaned up correctly
- #241
82d81d9
Thanks @alexanderniebuhr! - Removes a debug log
- #238
1927f94
Thanks @alexanderniebuhr! - Fixesastro build
which throws an error if it can't clean up dynamic imports for prerendered pages.
- #222
8f312da
Thanks @Fryuni! - Fixes an issue, where unused code was not removed from the output, which led to issues with large projects with a lot of prerendered pages.
- #229
1f4e40b
Thanks @FlorianFlatscher! - Adds a new option for the Image service to the Cloudflare adapter.imageService: 'custom'
does use the user defined settings, without applying any modification to it. You need to make sure that the configured settings are compatible with Cloudflare'sworkerd
runtime yourself.
- #225
9e7d0ea
Thanks @alexanderniebuhr! - Fixeslocals.runtime
API to match betweenastro dev
andastro build
-
#217
0349bd4
Thanks @alexanderniebuhr! - fixes an issue where the automatic_routes.json
generation was not working as expected for some projects, which had a dynamic route as the first segment -
#217
0349bd4
Thanks @alexanderniebuhr! - fixes an issue where the automatic_routes.json
generation was not limited correctly, which had manual extend patterns
-
#212
c22bb21
Thanks @alexanderniebuhr! - fixes an issue where projects using@astrojs/solid-js
were unusable, due to wrong vite config -
#210
317bd95
Thanks @alexanderniebuhr! - fixes an issue where projects using@astrojs/vue
were unusable, due to marking dependencies as external
-
#159
adb8bf2a4caeead9a1a255740c7abe8666a6f852
Thanks @alexanderniebuhr! - Updates and prepares the adapter to be more flexibile, stable and composable for the future. Includes several breaking changes.We are commited to provide a smooth upgrade path for our users. This guide will describe what has changed from v9.x to v10 to help you to migrate your existing projects to the latest version of the adapter. For complete documentation of all v10 configuration settings and usage, please see the current, updated Cloudflare adapter documentation.
We will provide at least 4 weeks of limited maintanance support for the previous version 9 of the adapter. Please plan to upgrade your project within this time frame, using the instructions below.
The
mode
option has been removed from the adapter. The adapter now defaults to the previousadvanced
mode and this is the only official supported option moving forward.If you are already using
mode: 'advanced'
in yourastro.config.mjs
file, you can safely remove it.import cloudflare from '@astrojs/cloudflare'; import { defineConfig } from 'astro/config'; export default defineConfig({ adapter: cloudflare({ - mode: 'advanced', }), });
If you are using
mode: 'directory'
, and don't have any custom Cloudflare functions in the/function
folder, you should be able to remove themode
option, without any issues.import cloudflare from '@astrojs/cloudflare'; import { defineConfig } from 'astro/config'; export default defineConfig({ adapter: cloudflare({ - mode: 'directory', }), });
If you are using
mode: 'directory'
, and you have custom Cloudflare functions in the/function
folder, you will need to manually migrate them to Astro Server Endpoints (API Routes). If you need to access Cloudflare Bindings, you can usectx.locals
. For further reference, please check the Adapters Documentation on Cloudflare Runtime Usage.The
functionPerRoute
option has been removed from the adapter. The adapter now defaults to the previousfalse
value. If you are usingfunctionPerRoute: true
in yourastro.config.mjs
file, you can safely remove it. This change will not break any existing projects, but you will no longer be generating a single function for each route.import cloudflare from '@astrojs/cloudflare'; import { defineConfig } from 'astro/config'; export default defineConfig({ adapter: cloudflare({ - functionPerRoute: true, }), });
The adapter replaces the
runtime
options with a new set ofplatformProxy
options to enable local runtime support when usingastro dev
.If you are already using a
wrangler.toml
file, you can safely replace your existingruntime
options with the appropriateplatformProxy
options.import cloudflare from '@astrojs/cloudflare'; import { defineConfig } from 'astro/config'; export default defineConfig({ adapter: cloudflare({ - runtime: { - mode: 'local', - type: 'workers', - }, + platformProxy: { + enabled: true, + }, }), });
If you define your bindings in the
astro.config.mjs
file, you need to first migrate your project to use awrangler.toml
configuration file for defining your bindings. You can find more information on how to do this in the Cloudflare docs about wrangler. Then, replaceruntime
options with the new correspondingplatformProxy
options as above.import cloudflare from '@astrojs/cloudflare'; import { defineConfig } from 'astro/config'; export default defineConfig({ adapter: cloudflare({ - runtime: { - mode: 'local', - type: 'pages', - bindings: { - // ... - }, - }, + platformProxy: { + enabled: true, + }, }), });
If you have typed
locals
in your./src/env.d.ts
file, you need to runwrangler types
in your project and update the file./// <reference types="astro/client" /> - type KVNamespace = import('@cloudflare/workers-types/experimental').KVNamespace; - type ENV = { - SERVER_URL: string; - KV_BINDING: KVNamespace; - }; - type Runtime = import('@astrojs/cloudflare').AdvancedRuntime<ENV>; + type Runtime = import('@astrojs/cloudflare').Runtime<Env>; declare namespace App { interface Locals extends Runtime { name: string; surname: string; }; } }
The
routes.strategy
option has been removed as you will no longer have the option to choose a strategy in v10 of this adpater.If you are using
routes.strategy
, you can remove it. You might observe a differentdist/_routes.json
file, but it should not affect your project's behavior.import cloudflare from '@astrojs/cloudflare'; import { defineConfig } from 'astro/config'; export default defineConfig({ adapter: cloudflare({ - routes: { - strategy: 'include', - }, }), });
Additionally the
routes.include
&routes.exclude
options have changed their name and type. If you were previously using them, move these to the newroutes.extend
property and update their types:import cloudflare from '@astrojs/cloudflare'; import { defineConfig } from 'astro/config'; export default defineConfig({ adapter: cloudflare({ routes: { - include: ['/api/*'], - exclude: ['/fonts/*'], + extend: { + include: [{ pattern: '/api/*' }], + exclude: [{ pattern: '/fonts/*' }], + }, }, }), });
In the old version of the adapter we used to expose all the environment variables to
process.env
. This is no longer the case, as it was unsafe. If you need to use environment variables, you need to use eitherAstro.locals.runtime.env
orcontext.locals.runtime.env
. There is no way to access the environment variables directly fromprocess.env
or in the global scope.If you need to access the environment variables in global scope, you should refactor your code to pass the environment variables as arguments to your function or file.
If you rely on any third library that uses
process.env
, please open an issue and we can investigate what the best way to handle this is.The adapter still supports the same Node.js APIs as Cloudflare does, but you need to adapt your vite configuration and enable the Cloudflare
nodejs_compat
flag.import {defineConfig} from "astro/config"; import cloudflare from '@astrojs/cloudflare'; export default defineConfig({ adapter: cloudflare({}), output: 'server', + vite: { + ssr: { + external: ['node:buffer'], + }, + }, })
- #204
826bb4fe1fa2a95a38397f927210cdf37079c38a
Thanks @dario-piotrowicz! - Fixes a typo for a Cloudflare runtime .dev.vars warning
-
#192
256b7024624ab45d5087d774cb4c30b117f1636a
Thanks @alexanderniebuhr! - Prepares for major breaking changes to adapter configuration in the upcoming v10 release.(Full documentation to help you migrate your project to the upgraded Cloudflare adapter will be provided with the release of v10.0.)
Deprecates the following adapter configuration options (to be removed entirely in v10):
mode
: All projects will deploy to Cloudflare pages using advanced mode (the previous default setting). This is no longer a configurable option. Cloudflare Functions will no longer be supported. If you were usingmode: 'directory'
, please migrate to Astro Endpoints.functionPerRoute
: Discontinued due to Cloudflare's single execution context approach. You will no longer have the option to compile a separate bundle for each page.routes.strategy
: Projects will use the auto-generated_route.json
for route management unless you provide your ownpublic/_routes.json
. This change aims to eliminate confusion and promote consistency.routes.include
: Will be replaced by a newroutes.extend.include
option to allow you to include additional routes.routes.exclude
: Will be replaced by a newroutes.extend.exclude
option to allow you to exclude additional routes.runtime
: Local runtime bindings will be configured inwrangler.toml
at the root of your project as described in the adapters documentation. You will no longer configure these directly in the adapter configuration. A newplatformProxy
setting will be introduced to enable and configure the platformProxy (local runtime) provided by wrangler.
These changes are part of ongoing efforts to streamline functionality, improve performance, and align with best practices and platform capabilities.
We strongly recommend upgrading to v10 upon its release. To ensure a smooth migration, we commit to at least 4 weeks of additional maintenance for v9 following the release of v10. During this period, we will actively assist with migration efforts to ensure that all users can transition without major issues.
- #179
6ad25929ce37344d9de7063643434ca0b01df306
Thanks @F0rce! - Adds Service bindings to the runtime bindings.
- #171
0463483141c2a09ed983fd8053e6bee6d4b0567d
Thanks @alexanderniebuhr! - Fixes an error with automatic deduplication of_routes.json
for more complex project structures
- #168
25908149cd5b9e82d6746529e44473ae93be6e32
Thanks @alexanderniebuhr! - Fixes an error where theastro dev
command would fail if the cache directory already existed
- #130
2b5aaa4cfeda4bc7f1bf8db6210162c495866a95
Thanks @asdfjkalsdfla! - Updates the internals of the integration to support Astro 4.0. See this upstream pull request for additional details. Warning: Make sure to upgrade your Astro version to>4.2
as previous versions are no longer supported.
- #137
d67df0e24ad0d9fca317f01e877f3dc650831488
Thanks @alexanderniebuhr! - Fixes an issue with_routes.json
generation, where duplicates where not removed correctly and an explicit user strategy setting was ignored.
-
#58
ecdb8f5bc21b19cc86e581711a1c360fc723a007
Thanks @alexanderniebuhr! - Adds the option to only run image optimization on images during build-time. Warning: This mode does not work with on-demand (SSR) image optimization.import {defineConfig} from "astro/config"; import cloudflare from '@astrojs/cloudflare'; export default defineConfig({ output: 'server' adapter: cloudflare({ + imageService: 'compile' }), })
- #125
200dea9
Thanks @alexanderniebuhr! - Updates miniflare version
- #108
63fa4e6
Thanks @sarah11918! - Updates Cloudflare README.md
-
#94
13ddae8
Thanks @alexanderniebuhr! - Removes deprecated optionbuild.split
. UsefunctionPerRoute
instead. -
#94
13ddae8
Thanks @alexanderniebuhr! - Changes the way that bindings are configured for the local runtime usingastro dev
. This change is developed in cooperation with Cloudflare and aligns Astro more closely to the behavior of Wrangler.⚠️ This is a breaking change for anyone deploying to Cloudflare Pages. You need to update your astro config file to set new the bindings. Follow the updated docs for configuring@astrojs/cloudflare
-
#94
13ddae8
Thanks @alexanderniebuhr! - Improves compatibility with Astro 4.0. using WASM modules -
#94
13ddae8
Thanks @alexanderniebuhr! - UpdatespeerDependency
ofastro
to be less strict
-
#69
473e9fa
Thanks @alexanderniebuhr! - Fixes a regression which caused the adapter to falsely generate_routes.json
for on-demand rendered 404 pages, which causes unexpected behavior in Cloudflare's SPA routing. -
#66
5b62509
Thanks @ToxiWoxi! - Fixes a regression which caused the adapter to falsely return an empty 404 response, caused by an upstream change withastro/astro#7754.
-
#34
4e1060b
Thanks @alexanderniebuhr! - Adds animageService
adapter option to configure which image service is used. Read more in the Cloudflare adapter docs. -
#34
4e1060b
Thanks @alexanderniebuhr! - Adds support for using Cloudflare's Image Resizing service as an external image service in Astro. See Cloudflare's image docs for more information about pricing and features.
- #51
acf4c82
Thanks @alexanderniebuhr! - Updates dependencies
- #46
1611ff7
Thanks @alexanderniebuhr! - Fixes a regression introduced in 7.6.2, which breaks building
- #33
78baf24
Thanks @alexanderniebuhr! - Fixes override of a validastro:assets
image service configuration. Now overrides are only applied when the configuration is known to be incompatible with Cloudflare.
-
#28
1665a39
Thanks @alexanderniebuhr! - Fixes missing persistence setting forcache
-
#30
625c41b
Thanks @alexanderniebuhr! - Fixes a regression introduced in 7.6.0, which breaks when no argument is set
-
#23
4a03af2
Thanks @alexanderniebuhr! - Adds a new propertypersistTo
which allows setting the directory for local state files when using Cloudflare runtime withastro dev
. This is useful when you want to persist state between restarts of the dev server, for example when using KV, D1, R2 to store data.Additionally, updates the format of the
runtime
configuration and adds a warning when the deprecated format is used. The current format is nowruntime: { mode: 'off' | 'local', persistTo: string }
. See runtime documentation for more information.
- #21
09d2504
Thanks @alexanderniebuhr! - Updates repository information
-
#8782
75781643a
Thanks @helloimalastair! - fixesAdvancedRuntime
&DirectoryRuntime
types to work woth Cloudflare caches -
Updated dependencies [
2993055be
,c4270e476
,bd5aa1cd3
,f369fa250
,391729686
,f999365b8
,b2ae9ee0c
,0abff97fe
,3bef32f81
]:- astro@3.3.0
- @astrojs/underscore-redirects@0.3.1
-
#8766
054c5c644
Thanks @jadbox! - Addscloudflare:sockets
compile support -
#8788
0ab6bad7d
Thanks @alexanderniebuhr! - Adds support fornode:crypto
-
Updated dependencies [
160d1cd75
,30de32436
,c4a7ec425
,c24f70d91
,93b092266
,29cdfa024
,eaed844ea
]:- astro@3.2.4
- @astrojs/underscore-redirects@0.3.1
-
#8737
6f60da805
Thanks @ematipico! - Add provenance statement when publishing the library from CI -
Updated dependencies [
6f60da805
,d78806dfe
,d1c75fe15
,aa265d730
,78adbc443
,21e0757ea
,357270f2a
]:- @astrojs/underscore-redirects@0.3.1
- astro@3.2.3
-
#8655
3dd65bf88
Thanks @alexanderniebuhr! - Introduces support for local KV bindings. Enhances development experience by allowing direct integration withastro dev
. -
#8655
3dd65bf88
Thanks @alexanderniebuhr! - Introduces support for local Durable Objects bindings. Enhances development experience by allowing direct integration withastro dev
. -
#8655
3dd65bf88
Thanks @alexanderniebuhr! - Introduces support for local D1 bindings. Enhances development experience by allowing direct integration withastro dev
. -
#8655
3dd65bf88
Thanks @alexanderniebuhr! - Introduces support for local R2 bindings. Enhances development experience by allowing direct integration withastro dev
. -
#8655
3dd65bf88
Thanks @alexanderniebuhr! - Introduces support for local Caches bindings. Enhances development experience by allowing direct integration withastro dev
.
- #8682
c3572fd5e
Thanks @dario-piotrowicz! - Change build target fromes2020
toes2022
, for better support
- Updated dependencies [
31c59ad8b
,47ea310f0
,345808170
]:- astro@3.2.1
- @astrojs/underscore-redirects@0.3.0
-
#7776
f5c617e3a
Thanks @aditsachde! - Include generated files starting with a dot in _routes.json -
#8654
f6ba533df
Thanks @alexanderniebuhr! - Refactor codebase to enhance code readability and structure, to prioritize maintainability for long-term. -
Updated dependencies [
2167ffd72
,408b50c5e
,2167ffd72
,2167ffd72
,2167ffd72
,e797b6816
,824dd4670
,2167ffd72
,cfd895d87
]:- astro@3.2.0
- @astrojs/underscore-redirects@0.3.0
-
#8459
2365c1246
Thanks @schummar! - Adds three new config options for_routes.json
generation:routes.strategy
,routes.include
, androutes.exclude
. -
#8542
faeead423
Thanks @adrianlyjak! - Add support for loading wasm modules in the cloudflare adapter
- Updated dependencies [
863f5171e
,63141f3f3
,974d5117a
,cb838b84b
,f36c4295b
,4c4ad9d16
]:- astro@3.1.3
- @astrojs/underscore-redirects@0.3.0
-
#8595
5b0b3c9a8
Thanks @alexanderniebuhr! - Add support for the following Node.js Runtime APIs, which are availabe in Cloudflare using thenode:
syntax.- assert
- AsyncLocalStorage
- Buffer
- Diagnostics Channel
- EventEmitter
- path
- process
- Streams
- StringDecoder
- util
import { Buffer } from 'node:buffer';
- Updated dependencies [
bcad715ce
,bdd267d08
,e522a5eb4
,ed54d4644
,70f2a8003
,4398e9298
,8f8b9069d
,5a988eaf6
]:- astro@3.1.2
- @astrojs/underscore-redirects@0.3.0
-
#8560
3da5d8404
Thanks @alexanderniebuhr! - add the option to type environment variables using a generic -
Updated dependencies [
8d361169b
,95b5f6280
,0586e20e8
]:- astro@3.1.1
- @astrojs/underscore-redirects@0.3.0
- #8426
2c9614469
Thanks @alexanderniebuhr! - Add support for Cloudflare Runtime (env vars, caches and req object), usingastro dev
- Updated dependencies [
78b82bb39
,5e1099f68
,644825845
,fa77fa63d
,23f9536de
,2db9762eb
,435b10549
,a6a516d94
,43bc5f2a5
,0ca332ba4
]:- astro@3.0.13
- @astrojs/underscore-redirects@0.3.0
-
#8429
bd8aa9a99
Thanks @sarah11918! - Update code sample in the README to use uppercaseGET
. -
Updated dependencies [
7d95bd9ba
,1947ef7a9
,61ad70fdc
,d2f2a11cd
,5126c6a40
,48ff7855b
,923a443cb
,8935b3b46
]:- astro@3.0.9
- @astrojs/underscore-redirects@0.3.0
-
Updated dependencies [
c5633434f
,405ad9501
,6b1e79814
]:- astro@3.0.7
- @astrojs/underscore-redirects@0.3.0
-
#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. -
#8179
6011d52d3
Thanks @matthewp! - Astro 3.0 Release Candidate -
#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 -
#8078
2540feedb
Thanks @alexanderniebuhr! - The configurationbuild.split
andbuild.excludeMiddleware
are deprecated.You can now configure this behavior using
functionPerRoute
in your Cloudflare integration config:import {defineConfig} from "astro/config"; import cloudflare from '@astrojs/cloudflare'; export default defineConfig({ - build: { - split: true - }, - adapter: cloudflare() + adapter: cloudflare({ + mode: 'directory', + functionPerRoute: true + }) })
-
#8188
cd2d7e769
Thanks @ematipico! - Introduced the concept of feature map. A feature map is a list of features that are built-in in Astro, and an Adapter can tell Astro if it can support it.import { AstroIntegration } from './astro'; function myIntegration(): AstroIntegration { return { name: 'astro-awesome-list', // new feature map supportedAstroFeatures: { hybridOutput: 'experimental', staticOutput: 'stable', serverOutput: 'stable', assets: { supportKind: 'stable', isSharpCompatible: false, isSquooshCompatible: false, }, }, }; }
-
#8079
7b77b34ce
Thanks @alexanderniebuhr! - Sync Astro Asset support across both modes -
Updated dependencies [
d0679a666
,db39206cb
,adf9fccfd
,0c7b42dc6
,46c4c0e05
,364d861bd
,2484dc408
,81545197a
,6011d52d3
,c2c71d90c
,cd2d7e769
,80f1494cd
,e45f30293
,c0de7a7b0
,65c354969
,3c3100851
,34cb20021
,a824863ab
,44f7a2872
,1048aca55
,be6bbd2c8
,9e021a91c
,7511a4980
,c37632a20
,acf652fc1
,42785c7b7
,8450379db
,dbc97b121
,7d2f311d4
,2540feedb
,ea7ff5177
,68efd4a8b
,7bd1b86f8
,036388f66
,519a1c4e8
,1f58a7a1b
,2ae9d37f0
,a8f35777e
,70f34f5a3
,5208a3c8f
,84af8ed9d
,f003e7364
,ffc9e2d3d
,732111cdc
,0f637c71e
,33b8910cf
,8a5b0c1f3
,148e61d24
,e79e3779d
,632579dc2
,3674584e0
,1db4e92c1
,e7f872e91
,16f09dfff
,4477bb41c
,55c10d1d5
,3e834293d
,96beb883a
,997a0db8a
,80f1494cd
,0f0625504
,e1ae56e72
,f32d093a2
,f01eb585e
,b76c166bd
,a87cbe400
,866ed4098
,767eb6866
,32669cd47
]:- astro@3.0.0
- @astrojs/underscore-redirects@0.3.0
- Updated dependencies [
adf9fccfd
,582132328
,81545197a
,6011d52d3
,be6bbd2c8
,42785c7b7
,95120efbe
,2ae9d37f0
,f003e7364
,732111cdc
,33b8910cf
,e79e3779d
,179796405
,a87cbe400
,767eb6866
]:- astro@3.0.0-rc.5
- @astrojs/underscore-redirects@0.3.0-rc.1
-
#8078
2540feedb
Thanks @alexanderniebuhr! - The configurationbuild.split
andbuild.excludeMiddleware
are deprecated.You can now configure this behavior using
functionPerRoute
in your Cloudflare integration config:import {defineConfig} from "astro/config"; import cloudflare from '@astrojs/cloudflare'; export default defineConfig({ - build: { - split: true - }, - adapter: cloudflare() + adapter: cloudflare({ + mode: 'directory', + functionPerRoute: true + }) })
-
#8079
7b77b34ce
Thanks @alexanderniebuhr! - Sync Astro Asset support across both modes -
Updated dependencies [
2484dc408
,c2c71d90c
,7177f7579
,097a8e4e9
,dbc97b121
,2540feedb
,ea7ff5177
,68efd4a8b
,0e0fa605d
,5208a3c8f
,8a5b0c1f3
,d6b494376
,4477bb41c
,3e834293d
,b76c166bd
]:- astro@3.0.0-beta.3
- @astrojs/underscore-redirects@0.3.0-beta.0
- Updated dependencies [
65c354969
,3c3100851
,34cb20021
,7bd1b86f8
,519a1c4e8
,70f34f5a3
,0f637c71e
,866ed4098
,5b1e39ef6
]:- astro@3.0.0-beta.1
- @astrojs/underscore-redirects@0.3.0-beta.0
-
1eae2e3f7
Thanks @Princesseuh! - 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. -
c022a4217
Thanks @Princesseuh! - 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
-
9b4f70a62
Thanks @ematipico! - Introduced the concept of feature map. A feature map is a list of features that are built-in in Astro, and an Adapter can tell Astro if it can support it.import { AstroIntegration } from './astro'; function myIntegration(): AstroIntegration { return { name: 'astro-awesome-list', // new feature map supportedAstroFeatures: { hybridOutput: 'experimental', staticOutput: 'stable', serverOutput: 'stable', assets: { supportKind: 'stable', isSharpCompatible: false, isSquooshCompatible: false, }, }, }; }
- Updated dependencies [
1eae2e3f7
,76ddef19c
,9b4f70a62
,3fdf509b2
,2f951cd40
,c022a4217
,67becaa58
,bc37331d8
,dfc2d93e3
,3dc1ca2fa
,1be84dfee
,35f01df79
,3fdf509b2
,78de801f2
,59d6e569f
,7723c4cc9
,fb5cd6b56
,631b9c410
]:- astro@3.0.0-beta.0
- @astrojs/underscore-redirects@0.3.0-beta.0
-
#8190
0be8d9bfa
Thanks @ematipico! - Improve documentation and export the types needed to type theruntime
object. -
Updated dependencies [
52606a390
]:- astro@2.10.14
-
#7541
ffcfcddb7
Thanks @alexanderniebuhr! - ThegetRuntime
utility has been deprecated and should be updated to the newAstro.locals
API.- import { getRuntime } from '@astrojs/cloudflare/runtime'; - getRuntime(Astro.request); + const runtime = Astro.locals.runtime;
- Updated dependencies [
5b1e39ef6
]:- astro@2.10.5
-
#7568
6ec040761
Thanks @alexanderniebuhr! - Fix a bug where asset redirects caused Cloudflare error -
#7679
1a6f833c4
Thanks @bluwy! - Fix runtime env var handling -
#7568
6ec040761
Thanks @alexanderniebuhr! - Fix bug where.ts
files are not renamed to.js
-
Updated dependencies [
cc8e9de88
,1a6f833c4
,cc0f81c04
]:- astro@2.8.4
-
#7464
1a59185dd
Thanks @alexanderniebuhr! - Split Support in CloudflareAdds support for configuring
build.split
when using the Cloudflare adapter
-
#7419
94afaa3e5
Thanks @TorbjornHoltmon! - Fixed issue with cloudflare runtimewaitUntil
not working as intended. -
Updated dependencies [
2b34fc492
,89a483520
]:- astro@2.6.6
- #7386
6d8aa4b61
Thanks @beynar! - Expose cf metadata and Cloudflare Worker Cache API throughcaches
in runtime.
-
#7067
57f8d14c0
Thanks @matthewp! - Support for experimental redirectsThis adds support for the redirects RFC in the Cloudflare adapter. No changes are necessary, simply use configured redirects and the adapter will update your
_redirects
file.
-
#7260
39403c32f
Thanks @natemoo-re! - Unflags support foroutput: 'hybrid'
mode, which enables pre-rendering by default. The additionalexperimental.hybridOutput
flag can be safely removed from your configuration. -
Updated dependencies [
57f8d14c0
,414eb19d2
,a7e2b37ff
,dd1a6b6c9
,d72cfa7ca
,144813f73
,b5213654b
,e3b8c6296
,890a2bc98
,39403c32f
,101f03209
]:- astro@2.6.0
- #7092
2a1fa09b3
Thanks @johannesspohr! - Addworked
andworker
import condition for worker bundling
-
#6991
719002ca5
Thanks @MoustaphaDev! - Enable experimental support for hybrid SSR with pre-rendering enabled by defaultastro.config.mjs
import { defineConfig } from 'astro/config'; export defaultdefineConfig({ output: 'hybrid', experimental: { hybridOutput: true, }, })
Then add
export const prerender = false
to any page or endpoint you want to opt-out of pre-rendering.src/pages/contact.astro
--- export const prerender = false; if (Astro.request.method === 'POST') { // handle form submission } --- <form method="POST"> <input type="text" name="name" /> <input type="email" name="email" /> <button type="submit">Submit</button> </form>
-
#7101
2994bc52d
Thanks @bluwy! - Always build edge/worker runtime with Vitewebworker
SSR target -
#7104
826e02890
Thanks @bluwy! - Specify"files"
field to only publish necessary files -
Updated dependencies [
4516d7b22
,e186ecc5e
,c6d7ebefd
,914c439bc
,e9fc2c221
,075eee08f
,719002ca5
,fc52681ba
,fb84622af
,cada10a46
,cd410c5eb
,73ec6f6c1
,410428672
,763ff2d1e
,c1669c001
,3d525efc9
]:- astro@2.5.0
-
#6925
d11d18595
Thanks @Yan-Thomas! - Fix missing code language in Cloudflare README -
Updated dependencies [
a98df9374
,50975f2ea
,ebae1eaf8
,dc062f669
]:- astro@2.3.3
-
#6222
081b2402c
Thanks @AirBorne04! - add option to compile unminified code -
Updated dependencies [
b89042553
]:- astro@2.3.2
-
#6550
2c829fdf6
Thanks @RichiCoder1! - fixconfig.base
trimming logic for cloudflare integration_routes.json
generation -
Updated dependencies [
04dddd783
,ea9b3dd72
,bf024cb34
,22955b895
,f413446a8
,90e5f87d0
,388190102
,035c0c4df
,f112c12b1
,689884251
,fa132e35c
,f5fddafc2
,283734525
,66858f1f2
,6c465e958
]:- astro@2.1.4
-
#6531
4ddf34893
Thanks @matthewp! - Remove false-positive warnings from Cloudflare's build.Cloudflare includes warnings when it bundles the already-built output from astro.build. Those warnings are mostly due to
"sideEffects": false
packages that are included in the Vite built output because they are marked as external. Rollup will remove unused imports from these packages but will not remove the actual import, causing the false-positive warning. -
#6473
1c3e8f6c3
Thanks @RichiCoder1! - fix automatic routes generation not respecting config.base -
#6494
a13e9d7e3
Thanks @Yan-Thomas! - Consistency improvements to several package descriptions -
Updated dependencies [
acf78c5e2
,04e624d06
,cc90d7219
,a9a6ae298
,6a7cf0712
,bfd67ea74
,f6eddffa0
,c63874090
,d637d1ea5
,637f9bc72
,77a046e88
]:- astro@2.1.3
- #6213
afbbc4d5b
Thanks @Princesseuh! - Updated compilation settings to disable downlevelling for Node 14
- Updated dependencies [
fec583909
,b087b83fe
,694918a56
,a20610609
,a4a74ab70
,75921b3cd
,afbbc4d5b
]:- astro@2.1.0
-
#6208
79f49acbe
Thanks @mfrachet! - Fix path file that was generated outside the functions folder -
Updated dependencies [
79783fc01
,baa2dbb3b
,8b7cb64da
]:- astro@2.0.11
-
#6075
45b41d98f
Thanks @NachoVazquez! - Uses config root path as location for Cloudflare Pages Functions -
Updated dependencies [
f6fc662c3
,592386b75
,1b591a143
,bf8d7366a
,ec38a8921
,f20a85b64
,9f22ac3d0
,cee70f5c6
,ac7fb04d6
,d1f5611fe
,2189170be
,32abe49bd
]:- astro@2.0.7
-
#6046
df3201165
Thanks @matthewp! - Cloudflare fix for building to directory mode -
Updated dependencies [
41e97158b
,e779c6242
]:- astro@2.0.4
- #5914
088f5194c
Thanks @AngusMorton! - Re-enable streaming in Cloudflare Pages.
-
#5993
9855db676
Thanks @matthewp! - Support for prerendering in the Cloudflare integrationThis fixes prerendering in the Cloudflare adapter. Now any prerendered routes are added to the
_routes.json
config so that the worker script is skipped for those routes. -
Updated dependencies [
b53e0717b
,60b32d585
,883e0cc29
,dabce6b8c
,aedf23f85
]:- astro@2.0.2
-
#5707
5eba34fcc
Thanks @bluwy! - Removeastro:build:start
backwards compatibility code -
#5806
7572f7402
Thanks @matthewp! - Make astro apeerDependency
of integrationsThis marks
astro
as apeerDependency
of several packages that are already gettingmajor
version bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
- Updated dependencies [
93e633922
,16dc36a87
,01f3f463b
,e2019be6f
,05caf445d
,49ab4f231
,a342a486c
,8fb28648f
,1f92d64ea
,c2180746b
,ae8a012a7
,cf2de5422
,ce5c5dbd4
,ec09bb664
,665a2c222
,259a539d7
,f7aa1ec25
,4987d6f44
,304823811
,302e0ef8f
,55cea0a9d
,dd56c1941
,9963c6e4d
,be901dc98
,f6cf92b48
,e818cc046
,8c100a6fe
,116d8835c
,840412128
,1f49cddf9
,7325df412
,16c7d0bfd
,a9c292026
,2a5786419
,4a1cabfe6
,a8d3e7924
,fa8c131f8
,64b8082e7
,c4b0cb8bf
,23dc9ea96
,63a6ceb38
,a3a7fc929
,52209ca2a
,5fd9208d4
,5eba34fcc
,899214298
,3a00ecb3e
,5eba34fcc
,2303f9514
,1ca81c16b
,b66d7195c
]:- astro@2.0.0
See changes in 6.0.0-beta.1
-
#5806
7572f7402
Thanks @matthewp! - Make astro apeerDependency
of integrationsThis marks
astro
as apeerDependency
of several packages that are already gettingmajor
version bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
See changes in 6.0.0-beta.0
- Updated dependencies [
d85ec7484
,d2960984c
,31ec84797
,5ec0f6ed5
,dced4a8a2
,6b156dd3b
]:- astro@1.7.0
-
Updated dependencies [
9082a850e
,4f7f20616
,05915fec0
,1aeabe417
,795f00f73
,2c836b9d1
,8f3f67c96
]:- astro@1.6.14
- #5347
743000cc7
Thanks @AirBorne04! - Now building for Cloudflare directory mode takes advantage of the standard asset handling from Cloudflare Pages, and therefore does not call a function script to deliver static assets anymore. Also supports the use of_routes.json
,_redirects
and_headers
files when placed into thepublic
folder.
-
#5301
a79a37cad
Thanks @bluwy! - Fix environment variables usage in worker output and warn if environment variables are accessedd too early -
Updated dependencies [
88c1bbe3a
,a79a37cad
]:- astro@1.6.5
-
#5290
b2b291d29
Thanks @matthewp! - Handle base configuration in adaptersThis allows adapters to correctly handle
base
configuration. Internally Astro now matches routes when the URL includes thebase
.Adapters now also have access to the
removeBase
method which will remove thebase
from a pathname. This is useful to look up files for static assets.
- #5103
d151d9f3f
Thanks @AirBorne04! - enable access to Cloudflare runtime [KV, R2, Durable Objects]- access native Cloudflare runtime through
import { getRuntime } from "@astrojs/cloudflare/runtime"
; now you can callgetRuntime(Astro.request)
and get access to the runtime environment.
- access native Cloudflare runtime through
-
#5056
e55af8a23
Thanks @matthewp! - # New build configurationThe ability to customize SSR build configuration more granularly is now available in Astro. You can now customize the output folder for
server
(the server code for SSR),client
(your client-side JavaScript and assets), andserverEntry
(the name of the entrypoint server module). Here are the defaults:import { defineConfig } from 'astro/config'; export default defineConfig({ output: 'server', build: { server: './dist/server/', client: './dist/client/', serverEntry: 'entry.mjs', }, });
These new configuration options are only supported in SSR mode and are ignored when building to SSG (a static site).
The integration hook
astro:build:start
includes a parambuildConfig
which includes all of these same options. You can continue to use this param in Astro 1.x, but it is deprecated in favor of the newbuild.config
options. All of the built-in adapters have been updated to the new format. If you have an integration that depends on this param we suggest upgrading to do this instead:export default function myIntegration() { return { name: 'my-integration', hooks: { 'astro:config:setup': ({ updateConfig }) => { updateConfig({ build: { server: '...', }, }); }, }, }; }
- #4888
2dc582ac5
Thanks @AirBorne04! - adjusting the build settings for cloudflare (reverting back to platform browser over neutral) adjusting the ssr settings for solidjs (to build for node)
-
#4876
d3091f89e
Thanks @matthewp! - Adds the Astro.cookies APIAstro.cookies
is a new API for manipulating cookies in Astro components and API routes.In Astro components, the new
Astro.cookies
object is a map-like object that allows you to get, set, delete, and check for a cookie's existence (has
):--- type Prefs = { darkMode: boolean; }; Astro.cookies.set<Prefs>( 'prefs', { darkMode: true }, { expires: '1 month', } ); const prefs = Astro.cookies.get<Prefs>('prefs').json(); --- <body data-theme={prefs.darkMode ? 'dark' : 'light'}></body>
Once you've set a cookie with Astro.cookies it will automatically be included in the outgoing response.
This API is also available with the same functionality in API routes:
export function post({ cookies }) { cookies.set('loggedIn', false); return new Response(null, { status: 302, headers: { Location: '/login', }, }); }
See the RFC to learn more.
- #4815
ce0b92ba7
Thanks @AirBorne04! - adjusted esbuild config to work with worker environment (fixing solid js ssr)
- #4558
742966456
Thanks @tony-sull! - Adding thewithastro
keyword to include the adapters on the Integrations Catalog
-
04ad44563
- > Astro v1.0 is out! Read the official announcement post.No breaking changes. This package is now officially stable and compatible with
astro@1.0.0
!
- #3806
f4c571bdb
Thanks @nrgnrg! - add support for compiling functions to a functions directory rather than_worker.js
-
#4015
6fd161d76
Thanks @matthewp! - Newoutput
configuration optionThis change introduces a new "output target" configuration option (
output
). Setting the output target lets you decide the format of your final build, either:"static"
(default): A static site. Your final build will be a collection of static assets (HTML, CSS, JS) that you can deploy to any static site host."server"
: A dynamic server application. Your final build will be an application that will run in a hosted server environment, generating HTML dynamically for different requests.
If
output
is omitted from your config, the default value"static"
will be used.When using the
"server"
output target, you must also include a runtime adapter via theadapter
configuration. An adapter will adapt your final build to run on the deployed platform of your choice (Netlify, Vercel, Node.js, Deno, etc).To migrate: No action is required for most users. If you currently define an
adapter
, you will need to also addoutput: 'server'
to your config file to make it explicit that you are building a server. Here is an example of what that change would look like for someone deploying to Netlify:import { defineConfig } from 'astro/config'; import netlify from '@astrojs/netlify/functions'; export default defineConfig({ adapter: netlify(), + output: 'server', });
-
#3973
5a23483ef
Thanks @matthewp! - Adds support for Astro.clientAddressThe new
Astro.clientAddress
property allows you to get the IP address of the requested user.This property is only available when building for SSR, and only if the adapter you are using supports providing the IP address. If you attempt to access the property in a SSG app it will throw an error.
- #3854
b012ee55
Thanks @bholmesdev! - [astro add] Support adapters and third party packages
- #3777
976e1f17
Thanks @tony-sull! - Disables HTTP streaming in Cloudflare Pages deployments