Repository navigation
chore(deps): update dependency @astrojs/node to v11 [security] - #380
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
September 14, 2025 23:15
fd328b5 to
327215d
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
October 20, 2025 07:37
327215d to
2bd912a
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
November 21, 2025 20:14
2bd912a to
0ea5988
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
December 16, 2025 06:55
0ea5988 to
bc59db8
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
December 28, 2025 07:50
bc59db8 to
a8c3517
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
January 20, 2026 03:39
a8c3517 to
0069060
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
February 4, 2026 07:43
0069060 to
9f3c988
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
March 1, 2026 23:38
9f3c988 to
e892ec7
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
March 31, 2026 09:46
e892ec7 to
12dcfbf
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
May 12, 2026 17:45
12dcfbf to
ce1842e
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
May 15, 2026 00:52
ce1842e to
4890d4b
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
May 28, 2026 18:35
4890d4b to
3588967
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
June 1, 2026 19:59
3588967 to
442b5b8
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
June 11, 2026 12:11
442b5b8 to
f37f872
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
July 12, 2026 16:14
f37f872 to
25d8382
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
July 30, 2026 16:32
25d8382 to
e5f11a2
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
July 30, 2026 23:31
e5f11a2 to
e100a44
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
August 26, 2026 17:17
e100a44 to
e19bdc1
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
September 2, 2026 19:16
e19bdc1 to
ca0606c
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
September 16, 2026 21:52
ca0606c to
b446b6e
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
September 25, 2026 03:56
b446b6e to
d26be36
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
October 6, 2026 08:46
d26be36 to
d101e17
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
October 13, 2026 11:57
d101e17 to
12ffd5f
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-node-vulnerability
branch
from
October 20, 2026 12:26
12ffd5f to
b9c1b97
Compare
This branch had an error being deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
^9.0.0→^11.0.0@astrojs/node's trailing slash handling causes open redirect issue
CVE-2025-55207 / GHSA-9x9c-ghc5-jhw9
More information
Details
Summary
Following GHSA-cq8c-xv66-36gw, there's still an Open Redirect vulnerability in a subset of Astro deployment scenarios.
Details
Astro 5.12.8 fixed a case where
https://example.com//astro.build/presswould redirect to the external origin//astro.build/press. However, with the Node deployment adapter in standalone mode andtrailingSlashset to"always"in the Astro configuration,https://example.com//astro.build/pressstill redirects to//astro.build/press.Proof of Concept
astro@5.12.8)@astrojs/node@9.4.0) and force trailing slashes:astro build.astro preview.//astro.build/pressto the preview URL, e.g. http://localhost:4321//astro.build/pressExample reproduction
//astro.build/pressto the preview URL, e.g.https://x.local-corp.webcontainer.io//astro.build/press.Impact
This is classified as an Open Redirection vulnerability (CWE-601). It affects any user who clicks on a specially crafted link pointing to the affected domain. Since the domain appears legitimate, victims may be tricked into trusting the redirected page, leading to possible credential theft, malware distribution, or other phishing-related attacks.
No authentication is required to exploit this vulnerability. Any unauthenticated user can trigger the redirect by clicking a malicious link.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:PReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Astro allows unauthorized third-party images in _image endpoint
CVE-2025-55303 / GHSA-xf8x-j4p2-f749
More information
Details
Summary
In affected versions of
astro, the image optimization endpoint in projects deployed with on-demand rendering allows images from unauthorized third-party domains to be served.Details
On-demand rendered sites built with Astro include an
/_imageendpoint which returns optimized versions of images.The
/_imageendpoint is restricted to processing local images bundled with the site and also supports remote images from domains the site developer has manually authorized (using theimage.domainsorimage.remotePatternsoptions).However, a bug in impacted versions of
astroallows an attacker to bypass the third-party domain restrictions by using a protocol-relative URL as the image source, e.g./_image?href=//example.com/image.png.Proof of Concept
Create a new minimal Astro project (
astro@5.13.0).Configure it to use the Node adapter (
@astrojs/node@9.1.0— newer versions are not impacted):Build the site by running
astro build.Run the server, e.g. with
astro preview.Append
/_image?href=//placehold.co/600x400to the preview URL, e.g. http://localhost:4321/_image?href=//placehold.co/600x400The site will serve the image from the unauthorized
placehold.coorigin.Impact
Allows a non-authorized third-party to create URLs on an impacted site’s origin that serve unauthorized image content.
In the case of SVG images, this could include the risk of cross-site scripting (XSS) if a user followed a link to a maliciously crafted SVG.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Astro has Full-Read SSRF in error rendering via Host: header injection
CVE-2026-25545 / GHSA-qq67-mvv5-fw3g
More information
Details
Summary
Server-Side Rendered pages that return an error with a prerendered custom error page (eg.
404.astroor500.astro) are vulnerable to SSRF. If theHost:header is changed to an attacker's server, it will be fetched on/500.htmland they can redirect this to any internal URL to read the response body through the first request.Details
The following line of code fetches
statusURLand returns the response back to the client:https://github.com/withastro/astro/blob/bf0b4bfc7439ddc565f61a62037880e4e701eb05/packages/astro/src/core/app/base.ts#L534
statusURLcomes fromthis.baseWithoutTrailingSlash, which is built from theHost:header.prerenderedErrorPageFetch()is justfetch(), and follows redirects. This makes it possible for an attacker to set theHost:header to their server (eg.Host: attacker.tld), and if the server still receives the request without normalization, Astro will now fetchhttp://attacker.tld/500.html.The attacker can then redirect this request to http://localhost:8000/ssrf.txt, for example, to fetch any locally listening service. The response code is not checked, because as the comment in the code explains, this fetch may give a 200 OK. The body and headers are returned back to the attacker.
Looking at the vulnerable code, the way to reach this is if the
renderError()function is called (error response during SSR) and the error page is prerendered (custom500.astroerror page). The PoC below shows how a basic project with these requirements can be set up.Note: Another common vulnerable pattern for
404.astrowe saw is:Also, it does not matter what
allowedDomainsis set to, since it only checks theX-Forwarded-Host:header.https://github.com/withastro/astro/blob/9e16d63cdd2537c406e50d005b389ac115755e8e/packages/astro/src/core/app/base.ts#L146
PoC
poc/src/pages/error.astrowhich throws an error with SSR:poc/src/pages/500.astrowith any content like:ssrf.txtand host it locally on http://localhost:8000:$ curl -i http://localhost:4321/error -H 'Host: localhost:5000' HTTP/1.1 500 OK content-type: text/plain date: Tue, 03 Feb 2026 09:51:28 GMT last-modified: Tue, 03 Feb 2026 09:51:09 GMT server: SimpleHTTP/0.6 Python/3.12.3 Connection: keep-alive Keep-Alive: timeout=5 Transfer-Encoding: chunked SECRET CONTENTImpact
An attacker who can access the application without
Host:header validation (eg. through finding the origin IP behind a proxy, or just by default) can fetch their own server to redirect to any internal IP. With this they can fetch cloud metadata IPs and interact with services in the internal network or localhost.For this to be vulnerable, a common feature needs to be used, with direct access to the server (no proxies).
Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:L/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Astro is vulnerable to SSRF due to missing allowlist enforcement in remote image inferSize
CVE-2026-27829 / GHSA-cj9f-h6r6-4cx2
More information
Details
Summary
A bug in Astro's image pipeline allows bypassing
image.domains/image.remotePatternsrestrictions, enabling the server to fetch content from unauthorized remote hosts.Details
Astro provides an
inferSizeoption that fetches remote images at render time to determine their dimensions. Remote image fetches are intended to be restricted to domains the site developer has manually authorized (using theimage.domainsorimage.remotePatternsoptions).However, when
inferSizeis used, no domain validation is performed — the image is fetched from any host regardless of the configured restrictions. An attacker who can influence the image URL (e.g., via CMS content or user-supplied data) can cause the server to fetch from arbitrary hosts.PoC
Details
Setup
Create a new Astro project with the following files:
package.json:{ "name": "poc-ssrf-infersize", "private": true, "scripts": { "dev": "astro dev --port 4322", "build": "astro build" }, "dependencies": { "astro": "5.17.2", "@astrojs/node": "9.5.3" } }astro.config.mjs— onlylocalhost:9000is authorized:internal-service.mjs— simulates an internal service on a non-allowlisted host (127.0.0.1:8888):src/pages/test.astro:Steps to reproduce
npm installand start the internal service:internal-service.mjslogsReceived: GET /internal-api— the request was sent to127.0.0.1:8888despite onlylocalhost:9000being in the allowlist.Impact
Allows bypassing
image.domains/image.remotePatternsrestrictions to make server-side requests to unauthorized hosts. This includes the risk of server-side request forgery (SSRF) against internal network services and cloud metadata endpoints.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Astro has memory exhaustion DoS due to missing request body size limit in Server Actions
CVE-2026-27729 / GHSA-jm64-8m5q-4qh8
More information
Details
Summary
Astro server actions have no default request body size limit, which can lead to memory exhaustion DoS. A single large POST to a valid action endpoint can crash the server process on memory-constrained deployments.
Details
On-demand rendered sites built with Astro can define server actions, which automatically parse incoming request bodies (JSON or FormData). The body is buffered entirely into memory with no size limit — a single oversized request is sufficient to exhaust the process heap and crash the server.
Astro's Node adapter (
mode: 'standalone') creates an HTTP server with no body size protection. In containerized environments, the crashed process is automatically restarted, and repeated requests cause a persistent crash-restart loop.Action names are discoverable from HTML form attributes on any public page, so no authentication is required.
PoC
Details
Setup
Create a new Astro project with the following files:
package.json:{ "name": "poc-dos", "private": true, "scripts": { "build": "astro build", "start:128mb": "node --max-old-space-size=128 dist/server/entry.mjs" }, "dependencies": { "astro": "5.17.2", "@astrojs/node": "9.5.3" } }astro.config.mjs:src/actions/index.ts:src/pages/index.astro:crash-test.mjs:Reproduction
The server process crashes with
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory. The payload is buffered entirely into memory before any validation, exceeding the 128 MB heap limit.Impact
Allows unauthenticated denial of service against SSR standalone deployments using server actions. A single oversized request crashes the server process, and repeated requests cause a persistent crash-restart loop in containerized environments.
Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Astro: Memory exhaustion DoS due to missing request body size limit in Server Islands
CVE-2026-29772 / GHSA-3rmj-9m5h-8fpv
More information
Details
Summary
Astro's Server Islands POST handler buffers and parses the full request body as JSON without enforcing a size limit. Because
JSON.parse()allocates a V8 heap object for every element in the input, a crafted payload of many small JSON objects achieves ~15x memory amplification (wire bytes to heap bytes), allowing a single unauthenticated request to exhaust the process heap and crash the server. The/_server-islands/[name]route is registered on all Astro SSR apps regardless of whether any component usesserver:defer, and the body is parsed before the island name is validated, so any Astro SSR app with the Node standalone adapter is affected.Details
Astro automatically registers a Server Islands route at
/_server-islands/[name]on all SSR apps, regardless of whether any component usesserver:defer. The POST handler inpackages/astro/src/core/server-islands/endpoint.tsbuffers the entire request body into memory and parses it as JSON with no size or depth limit:The request body is parsed before the island name is validated, so the attacker does not need to know any valid island name —
/_server-islands/anythingtriggers the vulnerable code path. No authentication is required.Additionally,
JSON.parse()allocates a heap object for every array/object in the input, so a payload consisting of many empty JSON objects (e.g.,[{},{},{},...]) achieves ~15x memory amplification (wire bytes to heap bytes). The entire object graph is held as a single live reference until parsing completes, preventing garbage collection. An 8.6 MB request is sufficient to crash a server with a 128 MB heap limit.PoC
Environment: Astro 5.18.0,
@astrojs/node9.5.4, Node.js 22 with--max-old-space-size=128.The app does not use
server:defer— this is a minimal SSR setup with no server island components. The route is still registered and exploitable.Setup files:
package.json:{ "name": "poc-server-islands-dos", "scripts": { "build": "astro build", "start": "node --max-old-space-size=128 dist/server/entry.mjs" }, "dependencies": { "astro": "5.18.0", "@astrojs/node": "9.5.4" } }astro.config.mjs:src/pages/index.astro:Dockerfile:docker-compose.yml:Reproduction:
crash.py:The server process is killed and does not recover. Repeated requests in a containerized environment with restart policies cause a persistent crash-restart loop.
Impact
Any Astro SSR app with the Node standalone adapter is affected — the
/_server-islands/[name]route is registered by default regardless of whether any component usesserver:defer. Unauthenticated attackers can crash the server process with a single crafted HTTP request under 9 MB. In containerized environments with memory limits, repeated requests cause a persistent crash-restart loop, denying service to all users. The attack requires no authentication and no knowledge of valid island names — any value in the[name]parameter works because the body is parsed before the name is validated.Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Astro: Cache Poisoning due to incorrect error handling when if-match header is malformed
CVE-2026-41322 / GHSA-c57f-mm3j-27q9
More information
Details
Summary
Requesting a static JS/CSS resource from the
_astropath with an incorrect or malformedif-matchheader returns a500error with a one-year cache lifetime instead of412in some cases. As a result, all subsequent requests to that file — regardless of theif-matchheader — will be served a 5xx error instead of the file until the cache expires.Sending an incorrect or malformed
if-matchheader should always return a412error without any cache headers, which is not the current behavior.Affected Versions
astro@5.14.1@astrojs/node@9.4.4Proof of Concept
Run the following command:
If a 5xx error is not returned, inspect the resources via the browser's web inspector and select another CSS/JS file to request until a 5xx error is returned. The behavior generally defaults to a 5xx response. Note that all static files are immutable, so the cache must be purged or disabled to reproduce reliably.
A response similar to the following is expected from CloudFront:
The above is not the real server output but the AWS error response triggered when the pods return a 5xx. Below is the output of the same
curlcommand issued directly against a pod in Kubernetes:This demonstrates that the pod itself returns a
5xxerror instead of412. In addition, the response includes aCache-Control: public, max-age=31536000, immutableheader.Because the testing setup configures
if-matchas part of the cache key, the exploit no longer affects the production application. Prior to that change, the CDN Point of Presence would become cache-poisoned, and any client visiting the affected pages without cached files through the same PoP would receive broken pages. This was reproduced by creating test URLs and visiting them in a browser only after triggering the exploit. The exploited resources returned5xxerrors instead of the original CSS/JS content, breaking the application.Details
The findings were analyzed with an LLM, which identified the following file as the likely source: serve-static.ts
LLM analysis:
Impact
Cache Poisoning — An attacker can force edge servers to cache an error page instead of the actual content, rendering one or more assets unavailable to legitimate users until the cache expires.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
@astrojs/node: Backslash-prefixed paths not recognized as internal by trailing-slash redirect
CVE-2026-59730 / GHSA-r557-wffq-wvrc
More information
Details
Impact
With
trailingSlash: 'always'configured, the@astrojs/nodestandalone server's static file handler appends a trailing slash to request paths and issues a301redirect. Paths beginning with/\(slash-backslash) were not recognized as internal paths, so the handler would echo the raw path back in theLocationheader. Because browsers treat\as/per the WHATWG URL specification, the resulting redirect could resolve to an external host.Preconditions:
trailingSlash: 'always'must be set (non-default; the default is'ignore')Patches
Fixed by treating backslash-prefixed paths the same as
//-prefixed paths inisInternalPath(), so they are no longer rewritten with a trailing slash.Workarounds
Use the default
trailingSlash: 'ignore'setting, which does not issue trailing-slash redirects in the static file handler.References
Severity
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:N/SI:L/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Astro: Malformed port in the Host header can crash the Node adapter
CVE-2026-102984 / GHSA-qh8j-hqjv-7m4x
More information
Details
Summary
In the Astro Node adapter, a request whose
Hostheader contains a malformed port (for exampleexample.com:65536orexample.com:8080:8080) produced an invalid request URL. The fallback intended to recover from an unparseable URL reused the same malformed host, so it failed again and raised an uncaughtTypeError: Invalid URLwhile the request was being built, before any route ran.Impact
The effect depends on the adapter configuration:
standalone): the request returns500 Internal Server Errorand the server continues running.staticHeaders: trueoption: the throw reaches a synchronous HTTP handler that does not catch it, becoming anuncaughtExceptionthat terminates the process.This is an availability-only issue. It does not expose data or allow code execution. Triggering it requires sending a hand-crafted
Hostheader, and many proxies and CDNs reject malformed hosts before they reach the origin.Affected versions
@astrojs/node<= 11.1.2.Patches
Fixed in
@astrojs/node11.1.3. When the incoming host cannot be parsed, the request URL now degrades to a host the server controls, so the request is handled instead of throwing. Hosts carrying more than a singlehostname:portpair are also rejected during host validation.Workarounds
Upgrade to
@astrojs/node11.1.3 or later. Deployments that terminate malformedHostheaders at a reverse proxy or CDN are not reachable through this path.Credits
Reported by @Celggar.
Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
withastro/astro (@astrojs/node)
v11.1.3Compare Source
Patch Changes
#17636
51723b1Thanks @matthewp! - Updates the adapter to wait for the configured log destination through Astro's newapp.getLogger()API. This release requires Astro 7.2.1 or later.Updated dependencies [
8c193f6]:v11.1.2Compare Source
Patch Changes
c1cf110Thanks @tianrking! - Return a 404 instead of a 500 for unknown parameters that match a prerendered dynamic endpoint.v11.1.1Compare Source
Patch Changes
8b211a5Thanks @astrobot-houston! - Fixes an EventEmitter memory leak when serving static pages over keep-alive connections withstaticHeadersenabled and CSP (security.csp) activev11.1.0Compare Source
Minor Changes
90c98aeThanks @adamchal! - Whensession: falseis set inastro.config, the adapter no longer auto-wires the filesystem session driver. Combined with the matchingastrochange, this lets the session runtime tree-shake out of the server bundle.Patch Changes
004fb0aThanks @dmgawel! - Fixes middleware mode routing when a prerendered dynamic route sorts before an on-demand fallbackv11.0.3Compare Source
Patch Changes
c895b12]:v11.0.2Compare Source
Patch Changes
#17252
eb6f97eThanks @matthewp! - Fixes trailing-slash handling for request paths that begin with a backslashWith
trailingSlash: 'always', the standalone Node server could append a trailing slash to a request path that begins with a backslash (for example/\example.com/foo) and echo that path back in theLocationheader of a301response. Because browsers resolve a leading\the same way as/, the resultingLocationcould point off-site.Such paths are now recognized as internal paths, matching the existing handling for paths that begin with
//, so they are no longer rewritten with a trailing slash.Updated dependencies [
eb6f97e]:v11.0.1Compare Source
Patch Changes
02b73b0Thanks @ematipico! - Fixes an issue where thepeerDependenciesfield used incorrect dependencies.v11.0.0Compare Source
Patch Changes
#17054
d426b67Thanks @astrobot-houston! - Fixes an issue where Astro files with non-ASCII characters in their name weren't correctly served after the build.#17027
241250bThanks @ocavue! - Triggers beta prereleases for packages that are still on alphav10.1.4Compare Source
Patch Changes
4ecff32Thanks @maximslo! - Fixes theexperimental.loggerdestination not being used for the "Server listening on..." startup message. The logger is now resolved before the server starts listening, andadapterLoggerre-creates itself when the underlying logger changes so the startup message uses the correct destination.v10.1.3Compare Source
Patch Changes
#16922
7dce185Thanks @astrobot-houston! - Fixes prerendered pages returning 404 when usingbuild.format: 'file'orbuild.format: 'preserve'with the Node adapter in standalone mode.Previously, clean URLs like
/aboutwould fail to resolve toabout.htmlon disk, because the static file handler only supported the defaultdirectoryformat (about/index.html). Now the handler correctly resolves clean URLs to.htmlfiles when the build format produces them.v10.1.2Compare Source
Patch Changes
f732f3c]:v10.1.1Compare Source
Patch Changes
d365c97]:v10.1.0Compare Source
Minor Changes
4d72482Thanks @ematipico! - The adapter now depends on Astro 6.3.0.v10.0.6Compare Source
Patch Changes
99464ed,f3485c3]:v10.0.5Compare Source
Patch Changes
940afd5Thanks @matthewp! - Fixes static asset error responses incorrectly including immutable cache headers. Conditional request failures (e.g.If-Matchmismatch) now return the correct status code without far-future cache directives.v10.0.4Compare Source
Patch Changes
#16002
846f27fThanks @buley! - Fixes file descriptor leaks from read streams that were not destroyed on client disconnect or read errors#15941
f41584aThanks @ematipico! - Fixes an infinite loop inresolveClientDir()when the server entry point is bundled with esbuild or similar tools. The function now throws a descriptive error instead of hanging indefinitely when the expected server directory segment is not found in the file path.v10.0.3Compare Source
Patch Changes
#15735
9685e2dThanks @fa-sharp! - Fixes an EventEmitter memory leak when serving static pages from Node.js middleware.When using the middleware handler, requests that were being passed on to Express / Fastify (e.g. static files / pre-rendered pages / etc.) weren't cleaning up socket listeners before calling
next(), causing a memory leak warning. This fix makes sure to run the cleanup before callingnext().v10.0.2Compare Source
Patch Changes
6f8f0bcThanks @ematipico! - Updates the AstropeerDependencies#astroto be6.0.0.v10.0.1Compare Source
Patch Changes
bb2b8f5Thanks @ematipico! - Fixes an issue where the adapter would cause a series of warnings during the build.v10.0.0Compare Source
Major Changes
#15654
a32aee6Thanks @florian-lefebvre! - Removes theexperimentalErrorPageHostoptionThis option allowed fetching a prerendered error page from a different host than the server is currently running on.
However, there can be security implications with prefetching from other hosts, and often more customization was required to do this safely. This has now been removed as a built-in option so that you can implement your own secure solution as needed and appropriate for your project via middleware.
What should I do?
If you were previously using this feature, you must remove the option from your adapter configuration as it no longer exists:
// astro.config.mjs import { defineConfig } from 'astro/config' import node from '@astrojs/node' export default defineConfig({ adapter: node({ mode: 'standalone', - experimentalErrorPageHost: 'http://localhost:4321' }) })You can replicate the previous behavior by checking the response status in a middleware and fetching the prerendered page yourself:
Minor Changes
#15258
d339a18Thanks @ematipico! - Stabilizes the adapter featureexperimentalStatiHeaders. If you were using this feature in any of the supported adapters, you'll need to change the name of the flag:export default defineConfig({ adapter: netlify({ - experimentalStaticHeaders: true + staticHeaders: true }) })#15759
39ff2a5Thanks @matthewp! - Adds a newbodySizeLimitoption to the@astrojs/nodeadapterYou can now configure a maximum allowed request body size for your Node.js standalone server. The default limit is 1 GB. Set the value in bytes, or pass
0to disable the limit entirely:impoConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.