Node.js 25: was wirklich neu ist, was im Ökosystem kaputtging und ob sich ein Upgrade lohnt
Ein praxisnaher Blick auf Node.js 25 (Current): V8 14.1 und Performance, Web Storage standardmäßig aktiv (und dadurch Tests/Tools kaputt), Permission Model mit --allow-net, portabler Module Compile Cache (jetzt stable), require(esm) als stable markiert, http.setGlobalProxyFromEnv(), fs.watch mit ignore, und SEA in einem Schritt per node --build-sea. Entwickler-Perspektiven mit Links + klares Fazit: jetzt upgraden oder auf LTS warten?

Es gibt zwei Arten von Node-Upgrades. Die erste: „Version hoch, alles läuft“. Die zweite: „Version hoch, und plötzlich kommen browserartige Fehler im Backend“. Node.js 25 hat viele Teams in die zweite Kategorie geschubst.
Bei Docusaurus wirkt das absurd: DOMException [SecurityError]: Cannot initialize local storage without a --localstorage-file path beim docusaurus build.[1] Ähnliche Symptome tauchen auch bei CLIs (Shopify) und Test-Runnern (Jest/Vitest) auf.[2][3][4]
Wichtig: Das ist nicht einfach „ein zufälliger Bug in eurem Repo“. Es ist eine Folge davon, dass Node 25 Web Storage per Default aktiviert — und Node-localStorage ist eben kein 1:1 Browser-Storage (file-backed, Quota, shared, unencrypted).[7][5]
Und trotzdem: Node 25 ist mehr als die Web-Storage-Saga. 25.4.0 und 25.5.0 bringen reife Verbesserungen (require(esm) stable, Compile Cache stable, --build-sea), die Migrationen spürbar vereinfachen — wenn man sie bewusst einführt.[9][10][12]
Echter Fall: docusaurus build scheitert auf Node 25.x wegen localStorage SecurityError.[1]
Node 25 ist eine Current-Line (odd). Sie entwickelt sich schnell: neue Defaults, dann Edge-Cases, dann Stabilisierung.[6]
• 25.0.0: V8 14.1, Performance-Fokus, Web APIs, Permission Model, Web Storage per Default.[8]
• 25.2.0: die
localStorage-Regression ohne--localstorage-filetaucht auf (nodejs/node #60704) und trifft Toolchains.[5]• 25.4.0: require(esm) wird stable, Module Compile Cache wird stable, Ops-Features wie
http.setGlobalProxyFromEnv()kommen dazu.[9]• 25.5.0:
node --build-seakommt — SEA „in einem Schritt aus dem Core“, plus kleine, aber wichtige Ops/Monorepo-Änderungen.[12]
Genug Vokabular, damit Node 25 als Text Sinn ergibt.
• Current vs LTS: odd major = Current, even major = LTS-Line. Node empfiehlt Production auf Active/Maintenance LTS.[6]
• Web Storage in Node:
localStorageist file-backed (--localstorage-file), unencrypted, hat 10MB Quota, und ist im Serverprozess shared.[7]• Permission Model: Prozess-Permissions (
--permission,--allow-net,--allow-fs-read) als „Gurt“. Kein Sandbox, keine Garantien gegen malicious code.[11]• require(esm): Brücke zwischen CJS und ESM. 25.4.0 markiert das als stable (relevant für Migrationsstrategien).[9]
• Module Compile Cache: on-disk Code Cache für schnellere Modul-Compilation, inkl.
portableMode.[10]• SEA: Single Executable Applications. 25.5.0 macht es einfacher via
--build-sea.[12][13]• Ops QoL: Proxy aus env (
http.setGlobalProxyFromEnv()), Watcher ignore (fs.watch({ ignore: ... })).[14][15]
25.0.0 ist das Fundament: V8 14.1, Performance, Web APIs und Legacy-Cleanup. Die „Reife“ der Line zeigt sich in 25.4/25.5.[8][9][12]
14.1
Die 25.0.0 Notes heben Performance-Arbeit hervor, u. a. bei JSON.stringify.[8]
permissions
Permissions als secure-by-default, aber mit klaren Grenzen (kein Sandbox).[11]
deprecations
Major-Releases tun oft weh durch Entfernen deprecated APIs (SlowBuffer).[16]
Visueller Startpunkt der Linie: Node.js 25.0.0 (Current).[8]
Screenshot des Abschnitts node-25-0Das Problem ist nicht, dass Web Storage „schlecht“ wäre. Das Problem ist, dass der Default geändert wurde, und Tooling auf einmal Codepfade ausführt, die nie serverseitig getestet wurden.
nodejs/node #60704 beschreibt die 25.2.0 Regression: “Cannot initialize local storage without a --localstorage-file path” und verweist auf kaputte Toolchains (webpack/jest/html-webpack-plugin).[5]
Vitest #8757 zeigt einen anderen Failure Mode: In Node 25 ist localStorage nicht mehr undefined, was Mocks in Test-Umgebungen brechen kann.[4] Jest #15888 ist ein weiterer Beleg: der Runner scheitert mit SecurityError auf Node 25.2.0.[3]
Schneller Incident-Workaround (wenn Storage nicht gebraucht wird): Web Storage temporär per Flag deaktivieren (steht in den globals docs).[7]
Team-Lektion: Auch wenn ihr „kein localStorage nutzt“, eure Dependencies könnten. Deshalb ist Current in CI als Frühwarnsystem sinnvoll.[6]
nodejs/node #60704: 25.2.0 Regression — localStorage ohne --localstorage-file kann Builds killen.[5]
Vitest #8757: Web Storage Default kann Tests brechen, weil Erwartungen an localStorage sich ändern.[4]
Jest #15888: Runner scheitert mit SecurityError auf Node 25.2.0.[3]
Eine dieser Änderungen, die nicht laut ist, aber in großen Repos wochenlang Arbeit spart.
1) Warum es zählt
2) Praktisches Pattern: Adapter für default export
const pkg = require('some-esm-only-package');
const api = pkg?.default ?? pkg;
module.exports = api;Das ist ein übliches Pattern für den namespace object, wenn ESM default export liefert.[22]
3) Was es für Teams signalisiert
Stabilisierung in Current bereitet den Weg fürs Ökosystem. LTS+Current in CI bringt Nutzen ohne Prod-Risiko.[6]
Visueller Marker eines Stabilisierungspunkts: Node.js 25.4.0 (Current).[9]
Screenshot des Abschnitts require-esmCompile Cache ist eine Optimierung. Sie hilft besonders bei vielen Cold Starts oder großen Modulgraphen (Tools, CLI, Worker).
Die node:module Docs erklären Portabilität sehr konkret: Wenn absolute Pfade sich ändern, verliert der Cache an Effektivität; portable hilft beim Reuse.[10]
Minimaler Versuch:
import module from 'node:module';
module.enableCompileCache({ directory: '.node-compile-cache', portable: true });In CI lohnt es sich, das Cache-Verzeichnis explizit zu managen, damit es nicht “verdampft”.
Docs: „Portability of the compile cache“ + portable Mode mit API/env Beispielen.[10]
Eine der produktivsten Änderungen in der Line: Single Executable bauen sieht nicht mehr wie ein externes Injector-Ritual aus.
1) Kerngedanke
2) Praxis-Fazit
Für CLI/Agents: weniger Dependencies und weniger fragile Release-Schritte. Aber testet auf Ziel-OS/Shells (es gibt Berichte zu Windows Command Prompt).[21]
3) Team-Hinweis
SEA ist Distribution, nicht Security. Pflege weiterhin Dependencies und Supply Chain. Current in CI bleibt dein Frühwarnsystem.[6]
25.5.0: --build-sea Abschnitt plus Command-Beispiel in den offiziellen Notes.[12]
Keine „Headline“, aber ein DX-Gewinn: weniger kleine Proxy-Wrapper in Projekten mit Enterprise-CI.
Minimal:
import http from 'node:http';
const restore = http.setGlobalProxyFromEnv();
// restore();http.setGlobalProxyFromEnv()
Hilfreich, wenn Proxy via env gesteuert wird (CI/Enterprise Networks).[14]
beim Start aufrufen
Nicht mitten in Requests; im Bootstrap von Service/CLI.[14]
konsistenter
Weniger unterschiedliche Konfigurationen pro HTTP-Client.
Docs: http.setGlobalProxyFromEnv([proxyEnv]) + built-in proxy support.[14]
In großen Repos sind Watcher ein eigener Schmerz (node_modules, .git, Generated Output). Die Docs beschreiben ignore als Option (glob/RegExp/function/array).[15]
Minimalbeispiel:
import { watch } from 'node:fs';
watch('.', {
recursive: true,
ignore: ['**/node_modules/**', '**/.git/**'],
}, () => {});Major-Releases tun oft weh durch Deprication-Finalisierung. SlowBuffer ist das Paradebeispiel.[16]
1) Was passierte mit SlowBuffer?
Die Deprecations Docs sagen: SlowBuffer wurde entfernt; nutze Buffer.allocUnsafeSlow(size).[16]
2) Wie es in der Praxis aussieht
Ein reales Beispiel: Backend crash auf Node 25.x durch eine Dependency Chain, die SlowBuffer.prototype nutzt.[17]
3) Schneller Pre-Upgrade Scan
rg -n "\bSlowBuffer\b" .Dann pnpm why / npm ls, um die Legacy-Kette zu finden.
Kurze, praxisnahe Checkliste.
• 1) Prod auf LTS, Node 25 in CI (LTS + Current Matrix).[6]
• 2) Tests mit deaktiviertem Web Storage laufen lassen, um schnell zu isolieren:
NODE_OPTIONS="--no-experimental-webstorage".[7]• 3) Wenn es bricht: schau, wo es schon bricht: nodejs/node #60704, Vitest #8757, Jest #15888.[5][4][3]
• 4) Features aus 25.4/25.5 zuerst isoliert testen (CLI/Worker), nicht „Prod Runtime umstellen und hoffen“.[9][12]
• 5) Monorepo: Watcher tunen:
fs.watch({ ignore })reduziert Last.[15]• 6) Corporate CI:
http.setGlobalProxyFromEnv()testen als globaler Proxy-Weg.[14]
Ohne Religion: Node 25 ist super als CI-Frühwarnsystem und für bestimmte Produkte (CLI/Agents). Für Production Backends gewinnt meist LTS durch Stabilität.
Eher warten / LTS
Node empfiehlt Production auf Active/Maintenance LTS.[6]
Jetzt hinzufügen
Node 25 zeigt Regressionen (Web Storage) und Legacy Cleanup (SlowBuffer) früh, ohne Prod-Incident.[5][16]
Upgrade ist sinnvoll
--build-sea (25.5.0) + Reife in 25.4.0 sind echte DX-Wins. Teste Ziel-OS/Shells.[12][21]
Current darf “beißen”
Current existiert, damit das Ökosystem adaptiert. Wenn es nervt: in CI behalten, Prod auf LTS lassen.[6]
Nein. Es ist Current (odd major). Node sagt explizit: Production soll auf Active oder Maintenance LTS laufen.[6]
Weil der Default geändert wurde. `localStorage` ist ohne Experimental-Flag verfügbar, aber die Node-Semantik unterscheidet sich (file, 10MB, shared). Tooling-Annahmen brechen.[7][5][4]
Web Storage temporär per `NODE_OPTIONS="--no-experimental-webstorage"` deaktivieren (oder per Flag). Das ist in den globals docs dokumentiert und wird als Workaround referenziert.[7][5]
Ja, aber teste Ziel-OS/Shells. Es gibt ein Windows Command Prompt spezifisches Issue.[21] Details siehe SEA Docs.[13]
Quellen in Erscheinungsreihenfolge (Position = [n]).
• Docusaurus issue #11545: build broken on Node 25.2.0 due to localStorage SecurityError
• Shopify community: shopify-cli fails on Node 25.2.0 due to localStorage SecurityError
• Jest issue #15888: Jest fails with localStorage error on Node 25.2.0
• Vitest issue #8757: Node v25 breaks tests with Web Storage API
• Node.js Releases: Current vs LTS policy (production guidance)
• Node.js Globals docs: Web Storage semantics + disable flag
• Node.js 25.0.0 release notes (V8 14.1, Web Storage default, performance highlights)
• Node.js 25.4.0 release notes (require(esm) stable, compile cache stable, ops improvements)
• Node.js node:module docs: module compile cache + portability
• Node.js Permissions docs: seat belt approach (not a sandbox)
• Node.js 25.5.0 release notes (--build-sea, other notable changes)
• Node.js Single Executable Applications docs (--build-sea flow and config)
• Node.js Deprecations docs: SlowBuffer removed + migration note
• twentyhq/twenty issue: crash on Node 25 due to SlowBuffer removal via dependency chain
• nodejs/Release issue #1113: cadence discussion (annual majors / LTS duration)
• nodejs/node issue: --build-sea fails in Windows Command Prompt (shell-specific behavior)
• Joyee Cheung: require(esm) in Node.js — from experiment to stability
• Joyee Cheung: Improving SEA building (why build moved into Node.js core)
Für die meisten Teams: Prod auf LTS, Node 25 in CI als Frühwarnsystem, und 25.4/25.5 Features (require(esm), Compile Cache, build-sea) zuerst in isolierten Experimenten (CLI/Worker). DX hoch, Risiko runter.
Verwandte Artikel
AI Assistant Entwicklung Kosten 2026: RAG, Knowledge Base, Integrationen und Support
Praktischer Leitfaden zu Kosten fuer AI Assistants: RAG, Knowledge Base, Channels, Tool Use, Guardrails, Evaluations, Monitoring und Support.
AI-assisted Attacks und Prompt Injection 2026: neue Angriffsfläche für AI-Produkte
AI-assisted Attacks und Prompt Injection 2026: neue Angriffsfläche für AI-Produkte. Ein praktischer PAS7-Studio-Sicherheitsleitfaden mit Threat Model, Kontrollen, Rollout-Checklist, Fehlern und Quellen.
KI fur Landingpage-Entwicklung: wo sie Launches beschleunigt und wo sie Conversion schadet
Eine praxisnahe Analyse zur Nutzung von KI fur Landingpages: v0, Webflow AI, Builder.io, Framer-ahnliche Builder, UX-Generierung, Copy, SEO, Personalisierung, A/B-Tests, Template-Risiken, Accessibility, Security und technischer Schuldenaufbau.
AI SEO / GEO im Jahr 2026: Ihre nächsten Kunden sind nicht Menschen — sondern Agents
Suche verschiebt sich von Klicks zu Antworten. Bots und AI-Agents crawlen, zitieren, empfehlen — und kaufen zunehmend. Erfahren Sie, was AI SEO / GEO bedeutet, warum klassisches SEO nicht mehr reicht und wie PAS7 Studio Marken im agentischen Web sichtbar macht.
Professionelle Entwicklung für Ihr Geschäft
Wir erstellen moderne Web-Lösungen und Bots für Unternehmen. Erfahren Sie, wie wir Ihnen helfen können, Ihre Ziele zu erreichen.