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 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.
Der leistungsstärkste Chip von Apple? M5 Pro und M5 Max brechen Rekorde
Eine Analyse zu Apple M5 Pro und M5 Max im März 2026. Wir zeigen, warum diese Chips als die stärksten professionellen Laptop-SoCs von Apple gelten können, wie sie sich gegen M4 Pro, M4 Max, M1 Pro, M1 Max schlagen und was der Vergleich mit aktuellen Intel- und AMD-Chips zeigt.
Artemis II und der Code, der Menschen zum Mond trägt
Dieser Beitrag erklärt die NASA-Mission Artemis II, die am 1. April 2026 gestartet ist, und zeigt, was sie wirklich über moderne Technik erzählt: Flugsoftware, Backup-Logik, Simulationen, Telemetrie, menschliche Kontrolle und die vorsichtige Rolle von KI in Raumfahrtsystemen.
Automatisches Tagging und Suche für gespeicherte Links
Integration mit GDrive/S3/Notion für automatisches Tagging und schnelle Suche über Such-APIs
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.