- #9366
1b4e91898Thanks @lilnasy! - Updates NPM package to refer to the stable Astro version instead of a beta.
- #9199
49aa215a0Thanks @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
49aa215a0Thanks @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
8f1d50957Thanks @matthewp! - Automatically sets immutable cache headers for assets served from the/_astrodirectory.
- #9125
8f1d50957Thanks @matthewp! - Automatically sets immutable cache headers for assets served from the/_astrodirectory.
- #9071
c9487138dThanks @pilcrowOnPaper! - Fixes a bug where the response stream would not cancel when the connection closed
-
#8737
6f60da805Thanks @ematipico! - Add provenance statement when publishing the library from CI -
Updated dependencies [
6f60da805,d78806dfe,d1c75fe15,aa265d730,78adbc443,21e0757ea,357270f2a]:
-
#8698
47ea310f0Thanks @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
2e1d5f873Thanks @lilnasy! - The node adapter now logs uncaught errors encountered during rendering a page. -
Updated dependencies [
bcad715ce,bdd267d08,e522a5eb4,ed54d4644,70f2a8003,4398e9298,8f8b9069d,5a988eaf6]:
-
#8188
d0679a666Thanks @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
6011d52d3Thanks @matthewp! - Astro 3.0 Release Candidate -
#8188
148e61d24Thanks @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
cd2d7e769Thanks @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
d08c83ee3Thanks @ematipico! - Fix an issue whereexpresscouldn't use thehandlerinmiddlewaremode. -
Updated dependencies [
adf9fccfd,582132328,81545197a,6011d52d3,be6bbd2c8,42785c7b7,95120efbe,2ae9d37f0,f003e7364,732111cdc,33b8910cf,e79e3779d,179796405,a87cbe400,767eb6866]:
-
1eae2e3f7Thanks @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. -
3dc1ca2faThanks @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.
-
9b4f70a62Thanks @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
d08c83ee3Thanks @ematipico! - Fix an issue whereexpresscouldn't use thehandlerinmiddlewaremode. -
Updated dependencies [
582132328,fddd4dc71,cfc465dde,95120efbe,273335cb0,9142178b1,179796405]:
-
#8141
4c15c0696Thanks @lilnasy! - Fixed an issue where the preview mode handled 404 and 500 routes differently from running app with node directly. -
Updated dependencies [
04caa99c4]:
-
#8084
560e45924Thanks @hbgl! - Stream request body instead of buffering it in memory. -
Updated dependencies [
c19987df0,560e45924,afc45af20,d1f7143f9,3e46634fd,a12027b6a]:
-
#6928
b16cb787fThanks @JerryWu1234! - Support the--hostflag when running the standalone server (also works forastro preview --host) -
Updated dependencies [
1b8d30209,405913cdf,87d4b1843,c23377caa,86bee2812]:
-
#7708
4dd6c7900Thanks @DixCouleur! - fix issuse #7590 "res.writeHead is not a function" in Express/Node middleware -
Updated dependencies [
41afb8405,c00b6f0c4,1f0ee494a,00cb28f49,c264be349,e1e958a75]:
-
#7754
298dbb89fThanks @natemoo-re! - Improve404behavior in middleware mode -
Updated dependencies [
298dbb89f,9e2203847,5c5da8d2f,0b8375fe8,89d015db6,ebf7ebbf7]:
- #7385
8e2923cc6Thanks @ematipico! -Astro.localsis now exposed to the adapter API. Node Adapter can now pass in alocalsobject in the SSR handler middleware.
- Updated dependencies [
30bb36371,3943fa390,7877a06d8,e314a04bf,33cdc8622,76fcdb84d,8e2923cc6,459b5bd05]:
- #7227
4929332c3Thanks @alex-sherwin! - Fixes NodeJS adapter for multiple set-cookie headers and combining AstroCookies and Response.headers cookies
-
#7243
409c60028Thanks @Riki-WangJJ! - Support directory redirects and query params at the same time -
#7260
39403c32fThanks @natemoo-re! - Unflags support foroutput: 'hybrid'mode, which enables pre-rendering by default. The additionalexperimental.hybridOutputflag can be safely removed from your configuration. -
Updated dependencies [
57f8d14c0,414eb19d2,a7e2b37ff,dd1a6b6c9,d72cfa7ca,144813f73,b5213654b,e3b8c6296,890a2bc98,39403c32f,101f03209]:
-
#6991
719002ca5Thanks @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 = falseto 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
826e02890Thanks @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
c405cef64Thanks @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
4cc1bf61bThanks @Princesseuh! - Fix malformed URLs crashing the server in certain cases -
Updated dependencies [
489dd8d69,a1a4f45b5,a1108e037,8b88e4cf1,d54cbe413,4c347ab51,ff0430786,2f2e572e9,7116c021a]:
- #6213
afbbc4d5bThanks @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
5e26bc891Thanks @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
6a03649f0Thanks @QingXia-Ela! - fix incorrent encoded when path has other language characters
-
#5992
60b32d585Thanks @HiDeoo! - FixAstro.url.protocolwhen using the @astrojs/node SSR adapter with HTTPS -
Updated dependencies [
b53e0717b,60b32d585,883e0cc29,dabce6b8c,aedf23f85]:
-
#5782
1f92d64eaThanks @Princesseuh! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0 -
#5707
5eba34fccThanks @bluwy! - Removeastro:build:startbackwards compatibility code -
#5806
7572f7402Thanks @matthewp! - Make astro apeerDependencyof integrationsThis marks
astroas apeerDependencyof several packages that are already gettingmajorversion bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
- #5832
2303f9514Thanks @HiDeoo! - Add support for serving well-known URIs with the @astrojs/node SSR adapter
-
#5701
9869f2f6dThanks @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
1f92d64eaThanks @Princesseuh! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0 -
#5806
7572f7402Thanks @matthewp! - Make astro apeerDependencyof integrationsThis marks
astroas apeerDependencyof several packages that are already gettingmajorversion bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
- #5832
2303f9514Thanks @HiDeoo! - Add support for serving well-known URIs with the @astrojs/node SSR adapter
-
#5701
9869f2f6dThanks @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
281ea9fc3Thanks @natemoo-re! - Improve error message when serverEntrypoint does not exist
-
#5418
aa16b6cebThanks @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
12236dbc0Thanks @Scttpr! - Allow HOST env variable to be provided at runtime
-
#5290
b2b291d29Thanks @matthewp! - Handle base configuration in adaptersThis allows adapters to correctly handle
baseconfiguration. Internally Astro now matches routes when the URL includes thebase.Adapters now also have access to the
removeBasemethod which will remove thebasefrom a pathname. This is useful to look up files for static assets.
-
#5114
5c0c6e1acThanks @matthewp! - Fixes finding the client folder for serving assets -
#5111
df4d84610Thanks @rishi-raj-jain! - fix port in standalone mode
-
#5056
e55af8a23Thanks @matthewp! - # Standalone mode for the Node.js adapterNew in
@astrojs/nodeis 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
modeto'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
modeoption is required. Existing @astrojs/node users who are using their own HTTP server framework such as Express can upgrade by setting themodeoption 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
e55af8a23Thanks @matthewp! - # Adapter support forastro previewAdapters are now about to support the
astro previewcommand via a new integration option. The Node.js adapter@astrojs/nodeis the first of the built-in adapters to gain support for this. What this means is that if you are using@astrojs/nodeyou 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
previewEntrypointvia thesetAdapterfunction inastro:config:donehook. 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
previewEntrypointis a module in the adapter's package that is a Node.js script. This script is run whenastro previewis run and is charged with starting up the built server. See the Node.js implementation in@astrojs/nodeto see how that is implemented. -
#5056
e55af8a23Thanks @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:startincludes a parambuildConfigwhich 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.configoptions. 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
d3091f89eThanks @matthewp! - Adds the Astro.cookies APIAstro.cookiesis a new API for manipulating cookies in Astro components and API routes.In Astro components, the new
Astro.cookiesobject 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
742966456Thanks @tony-sull! - Adding thewithastrokeyword 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
6fd161d76Thanks @matthewp! - Newoutputconfiguration 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
outputis 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 theadapterconfiguration. 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
5a23483efThanks @matthewp! - Adds support for Astro.clientAddressThe new
Astro.clientAddressproperty 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
b012ee55Thanks @bholmesdev! - [astro add] Support adapters and third party packages
- Updated dependencies [
4de53ecc]:- @astrojs/[email protected]
815d62f1Thanks @FredKSchott! - no changes.
- #2979
9d7a4b59Thanks @FredKSchott! - Welcome to the Astro v1.0.0 Beta! Read the official announcement for more details.