-
#11535
932bd2e
Thanks @matthewp! - Move polyfills up before awaiting the env module in the Node.js adapter.Previously the env setting was happening before the polyfills were applied. This means that if the Astro env code (or any dependencies) depended on
crypto
, it would not be polyfilled in time.Polyfills should be applied ASAP to prevent races. This moves it to the top of the Node adapter.
- #11296
5848d97
Thanks @florian-lefebvre! - Fixesastro:env
getSecret compatibility
-
#11261
f5f8ed2
Thanks @matthewp! - Fix backwards compat with Astro <= 4.9 -
#11263
7d59750
Thanks @wackbyte! - Refactor to use Astro's integration logger for logging
- #11199
2bdca27
Thanks @florian-lefebvre! - Adds support for experimentalastro:env
released in Astro 4.10
- #11202
d0248bc
Thanks @dkobierski! - Fixes suppressed logs when error occurs
- #10491
28e33a2f9c04373eae5da2e6edb0dc2981bce790
Thanks @castarco! - Fixes a bug where the preview server wrongly appends trailing slashes to subresource URLs.
- #10454
83f9105cd50e2756d02ca2be73ab84f9d582d3f8
Thanks @lilnasy! - Prevents crashes caused by rejections of offshoot promises.
- #10285
d5277df5a4d1e9a8a7b6c8d7b87912e13a163f7f
Thanks @Princesseuh! - Fixes an issue where malformed requests could cause the server to error in certain cases.
- #10282
b47dcaa25968ec85ba96fce23381c94a94e389f6
Thanks @SatanshuMishra! - Fixes theserver.host
option to properly listen on all network interfaces when set totrue
- #10208
8cd38f02456640c063552aef00b2b8a216b3935d
Thanks @log101! - Fixes custom headers are not added to the Node standalone server responses in preview mode
- #9143
041fdd5c89920f7ccf944b095f29e451f78b0e28
Thanks @ematipico! - Adds experimental support for internationalization domains
- #9080
a12196d6b59e39f5d405734ecdbf6f6b42b39a93
Thanks @msxdan! - Add trailingSlash support to NodeJS adapter
-
#9661
d6edc7540864cf5d294d7b881eb886a3804f6d05
Thanks @ematipico! - If host is unset in standalone mode, the server host will now fallback tolocalhost
instead of127.0.0.1
. Whenlocalhost
is used, the operating system can decide to use either::1
(ipv6) or127.0.0.1
(ipv4) itself. This aligns with how the Astro dev and preview server works by default.If you relied on
127.0.0.1
(ipv4) before, you can set theHOST
environment variable to127.0.0.1
to explicitly use ipv4. For example,HOST=127.0.0.1 node ./dist/server/entry.mjs
. -
#9661
d6edc7540864cf5d294d7b881eb886a3804f6d05
Thanks @ematipico! - Breaking: Minimum required Astro version is now 4.2.0. Reorganizes internals to be more maintainable.
- #9661
d6edc7540864cf5d294d7b881eb886a3804f6d05
Thanks @ematipico! - Fixes an issue where the preview server appeared to be ready to serve requests before binding to a port.
- #9533
48f47b50a0f8bc0fa51760215def36640f79050d
Thanks @lilnasy! - Fixes a bug where an error while serving response stopped the server.
- #9479
1baf0b0d3cbd0564954c2366a7278794fad6726e
Thanks @sarah11918! - Updates README
- #9471
6bf470cfb
Thanks @alexnguyennz! - Fix typo in @astrojs/node README
- #9366
1b4e91898
Thanks @lilnasy! - Updates NPM package to refer to the stable Astro version instead of a beta.
- #9199
49aa215a0
Thanks @lilnasy! - The internals of the integration have been updated to support Astro 4.0. Make sure to upgrade your Astro version as Astro 3.0 is no longer supported.
- #9199
49aa215a0
Thanks @lilnasy! - The internals of the integration have been updated to support Astro 4.0. Make sure to upgrade your Astro version as Astro 3.0 is no longer supported.
- Updated dependencies [
abf601233
,6201bbe96
,cdabf6ef0
,1c48ed286
,37697a2c5
,bd0c2e9ae
,0fe3a7ed5
,710be505c
,153a5abb9
]:
- #9125
8f1d50957
Thanks @matthewp! - Automatically sets immutable cache headers for assets served from the/_astro
directory.
- #9125
8f1d50957
Thanks @matthewp! - Automatically sets immutable cache headers for assets served from the/_astro
directory.
- #9071
c9487138d
Thanks @pilcrowOnPaper! - Fixes a bug where the response stream would not cancel when the connection closed
-
#8737
6f60da805
Thanks @ematipico! - Add provenance statement when publishing the library from CI -
Updated dependencies [
6f60da805
,d78806dfe
,d1c75fe15
,aa265d730
,78adbc443
,21e0757ea
,357270f2a
]:
-
#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
-
#8599
2e1d5f873
Thanks @lilnasy! - The node adapter now logs uncaught errors encountered during rendering a page. -
Updated dependencies [
bcad715ce
,bdd267d08
,e522a5eb4
,ed54d4644
,70f2a8003
,4398e9298
,8f8b9069d
,5a988eaf6
]:
-
#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
148e61d24
Thanks @ematipico! - Reduced the amount of polyfills provided by Astro. Astro will no longer provide (no-op) polyfills for several web apis such as HTMLElement, Image or Document. If you need access to those APIs on the server, we recommend using more proper polyfills available on npm.
-
#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, }, }, }; }
- 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
]:
-
#8176
d08c83ee3
Thanks @ematipico! - Fix an issue whereexpress
couldn't use thehandler
inmiddleware
mode. -
Updated dependencies [
adf9fccfd
,582132328
,81545197a
,6011d52d3
,be6bbd2c8
,42785c7b7
,95120efbe
,2ae9d37f0
,f003e7364
,732111cdc
,33b8910cf
,e79e3779d
,179796405
,a87cbe400
,767eb6866
]:
-
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. -
3dc1ca2fa
Thanks @Princesseuh! - Reduced the amount of polyfills provided by Astro. Astro will no longer provide (no-op) polyfills for several web apis such as HTMLElement, Image or Document. If you need access to those APIs on the server, we recommend using more proper polyfills available on npm.
-
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
]:
-
#8176
d08c83ee3
Thanks @ematipico! - Fix an issue whereexpress
couldn't use thehandler
inmiddleware
mode. -
Updated dependencies [
582132328
,fddd4dc71
,cfc465dde
,95120efbe
,273335cb0
,9142178b1
,179796405
]:
-
#8141
4c15c0696
Thanks @lilnasy! - Fixed an issue where the preview mode handled 404 and 500 routes differently from running app with node directly. -
Updated dependencies [
04caa99c4
]:
-
#8084
560e45924
Thanks @hbgl! - Stream request body instead of buffering it in memory. -
Updated dependencies [
c19987df0
,560e45924
,afc45af20
,d1f7143f9
,3e46634fd
,a12027b6a
]:
-
#6928
b16cb787f
Thanks @JerryWu1234! - Support the--host
flag when running the standalone server (also works forastro preview --host
) -
Updated dependencies [
1b8d30209
,405913cdf
,87d4b1843
,c23377caa
,86bee2812
]:
-
#7708
4dd6c7900
Thanks @DixCouleur! - fix issuse #7590 "res.writeHead is not a function" in Express/Node middleware -
Updated dependencies [
41afb8405
,c00b6f0c4
,1f0ee494a
,00cb28f49
,c264be349
,e1e958a75
]:
-
#7754
298dbb89f
Thanks @natemoo-re! - Improve404
behavior in middleware mode -
Updated dependencies [
298dbb89f
,9e2203847
,5c5da8d2f
,0b8375fe8
,89d015db6
,ebf7ebbf7
]:
- #7385
8e2923cc6
Thanks @ematipico! -Astro.locals
is now exposed to the adapter API. Node Adapter can now pass in alocals
object in the SSR handler middleware.
- Updated dependencies [
30bb36371
,3943fa390
,7877a06d8
,e314a04bf
,33cdc8622
,76fcdb84d
,8e2923cc6
,459b5bd05
]:
- #7227
4929332c3
Thanks @alex-sherwin! - Fixes NodeJS adapter for multiple set-cookie headers and combining AstroCookies and Response.headers cookies
-
#7243
409c60028
Thanks @Riki-WangJJ! - Support directory redirects and query params at the same time -
#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
]:
-
#6991
719002ca5
Thanks @MoustaphaDev! - Enable experimental support for hybrid SSR with pre-rendering enabled by defaultastro.config.mjs
import { defineConfig } from 'astro/config'; export default defineConfig({ 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>
-
#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
]:
-
#6935
c405cef64
Thanks @matthewp! - Catch errors that occur within the stream in the Node adapter -
Updated dependencies [
a98df9374
,ac57b5549
,50975f2ea
,ebae1eaf8
,dc062f669
]:- [email protected]
- @astrojs/[email protected]
-
#6746
4cc1bf61b
Thanks @Princesseuh! - Fix malformed URLs crashing the server in certain cases -
Updated dependencies [
489dd8d69
,a1a4f45b5
,a1108e037
,8b88e4cf1
,d54cbe413
,4c347ab51
,ff0430786
,2f2e572e9
,7116c021a
]:
- #6213
afbbc4d5b
Thanks @Princesseuh! - Updated compilation settings to disable downlevelling for Node 14
- Updated dependencies [
fec583909
,b087b83fe
,694918a56
,a20610609
,a4a74ab70
,75921b3cd
,afbbc4d5b
]:- [email protected]
- @astrojs/[email protected]
-
#6323
5e26bc891
Thanks @Princesseuh! - Updated Undici to 5.20.0. This fixes a security issue and handling of cookies in certain cases in dev -
Updated dependencies [
5e26bc891
,a156ecbb7
,ccd72e6bb
,504c7bacb
,63dda6ded
,f91a7f376
]:
- #6088
6a03649f0
Thanks @QingXia-Ela! - fix incorrent encoded when path has other language characters
-
#5992
60b32d585
Thanks @HiDeoo! - FixAstro.url.protocol
when using the @astrojs/node SSR adapter with HTTPS -
Updated dependencies [
b53e0717b
,60b32d585
,883e0cc29
,dabce6b8c
,aedf23f85
]:
-
#5782
1f92d64ea
Thanks @Princesseuh! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0 -
#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.
- #5832
2303f9514
Thanks @HiDeoo! - Add support for serving well-known URIs with the @astrojs/node SSR adapter
-
#5701
9869f2f6d
Thanks @wulinsheng123! - Support custom 404 page in standalone mode -
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
,46ecd5de3
,be901dc98
,f6cf92b48
,e818cc046
,8c100a6fe
,116d8835c
,840412128
,1f49cddf9
,7325df412
,16c7d0bfd
,c55fbcb8e
,a9c292026
,2a5786419
,4a1cabfe6
,a8d3e7924
,fa8c131f8
,64b8082e7
,c4b0cb8bf
,1f92d64ea
,23dc9ea96
,63a6ceb38
,a3a7fc929
,52209ca2a
,5fd9208d4
,5eba34fcc
,899214298
,3a00ecb3e
,5eba34fcc
,2303f9514
,1ca81c16b
,b66d7195c
]:- [email protected]
- @astrojs/[email protected]
See changes in 5.0.0-beta.1
-
#5782
1f92d64ea
Thanks @Princesseuh! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0 -
#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.
- #5832
2303f9514
Thanks @HiDeoo! - Add support for serving well-known URIs with the @astrojs/node SSR adapter
-
#5701
9869f2f6d
Thanks @wulinsheng123! - Support custom 404 page in standalone mode -
Updated dependencies [
01f3f463b
,1f92d64ea
,c2180746b
,ae8a012a7
,cf2de5422
,ec09bb664
,665a2c222
,f7aa1ec25
,302e0ef8f
,840412128
,1f49cddf9
,c55fbcb8e
,4a1cabfe6
,c4b0cb8bf
,1f92d64ea
,23dc9ea96
,63a6ceb38
,52209ca2a
,2303f9514
]:- [email protected]
- @astrojs/[email protected]
See changes in 5.0.0-beta.0
-
#5560
281ea9fc3
Thanks @natemoo-re! - Improve error message when serverEntrypoint does not exist
-
#5418
aa16b6ceb
Thanks @jbanety! - Sometimes Astro sends a ReadableStream as a response and it raise an error TypeError: body is not async iterable.I added a function to get a response iterator from different response types (sourced from apollo-client).
With this, node adapter can handle all the Astro response types.
-
#5421
12236dbc0
Thanks @Scttpr! - Allow HOST env variable to be provided at runtime
-
#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.
-
#5114
5c0c6e1ac
Thanks @matthewp! - Fixes finding the client folder for serving assets -
#5111
df4d84610
Thanks @rishi-raj-jain! - fix port in standalone mode
-
#5056
e55af8a23
Thanks @matthewp! - # Standalone mode for the Node.js adapterNew in
@astrojs/node
is support for standalone mode. With standalone mode you can start your production server without needing to write any server JavaScript yourself. The server starts simply by running the script like so:node ./dist/server/entry.mjs
To enable standalone mode, set the new
mode
to'standalone'
option in your Astro config:import { defineConfig } from 'astro/config'; import nodejs from '@astrojs/node'; export default defineConfig({ output: 'server', adapter: nodejs({ mode: 'standalone', }), });
See the @astrojs/node documentation to learn all of the options available in standalone mode.
This is a semver major change because the new
mode
option is required. Existing @astrojs/node users who are using their own HTTP server framework such as Express can upgrade by setting themode
option to'middleware'
in order to build to a middleware mode, which is the same behavior and API as before.import { defineConfig } from 'astro/config'; import nodejs from '@astrojs/node'; export default defineConfig({ output: 'server', adapter: nodejs({ mode: 'middleware', }), });
-
#5056
e55af8a23
Thanks @matthewp! - # Adapter support forastro preview
Adapters are now about to support the
astro preview
command via a new integration option. The Node.js adapter@astrojs/node
is the first of the built-in adapters to gain support for this. What this means is that if you are using@astrojs/node
you can new preview your SSR app by running:npm run preview
We will be updating the other first party Astro adapters to support preview over time. Adapters can opt in to this feature by providing the
previewEntrypoint
via thesetAdapter
function inastro:config:done
hook. The Node.js adapter's code looks like this:export default function() { return { name: '@astrojs/node', hooks: { 'astro:config:done': ({ setAdapter, config }) => { setAdapter({ name: '@astrojs/node', serverEntrypoint: '@astrojs/node/server.js', + previewEntrypoint: '@astrojs/node/preview.js', exports: ['handler'], }); // more here } } }; }
The
previewEntrypoint
is a module in the adapter's package that is a Node.js script. This script is run whenastro preview
is run and is charged with starting up the built server. See the Node.js implementation in@astrojs/node
to see how that is implemented. -
#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: '...', }, }); }, }, }; }
-
#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.
- #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
[email protected]
!
- Updated dependencies [
04ad44563
]:- @astrojs/[email protected]
-
#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
- Updated dependencies [
4de53ecc
]:- @astrojs/[email protected]
815d62f1
Thanks @FredKSchott! - no changes.
- #2979
9d7a4b59
Thanks @FredKSchott! - Welcome to the Astro v1.0.0 Beta! Read the official announcement for more details.