Astro 7.0.0-beta.4 macht Sätteri zum Standard-Markdown-Prozessor und führt erweitertes Routing, benutzerdefinierten Logger und gestreamtes Rendering als stabil

Astro 7.0.0-beta.4 macht Sätteri zum Standard-Markdown-Prozessor und führt erweitertes Routing, benutzerdefinierten Logger und gestreamtes Rendering als stabil

lschvn

Astro 7.0.0-beta.4 wurde am 15. Juni 2026 veröffentlicht, die vierte Beta der 7.0-Linie und die erste, in der die bisher optionale Rust-basierte Markdown-Pipeline Sätteri zum Standard wird. Das Release baut auf zwei vorherigen Betas auf (7.0.0-beta.3 am 9. Juni und 7.0.0-beta.2 Anfang Juni), die den Großteil der Arbeit zur Stabilisierung von erweitertem Routing, benutzerdefiniertem Logger und der neuen Streaming-Rendering-Engine geleistet haben, sowie auf zwei Alphas (7.0.0-alpha.2 und 7.0.0-alpha.0), die das Vite-8-Upgrade und den astro dev --background-Modus für KI-Code-Agenten brachten. Die 7.0-Linie folgt auf den Astro-6-Launch im März und auf Astro 6.4 mit Sätteri als Opt-in; der rote Faden von 7.0 ist, dass fast alle experimentellen Funktionen, die 6.x hinter einem Flag ausgeliefert hat, nun graduieren, der Standard-Markdown-Prozessor nun in Rust läuft und eine Reihe lange veralteter APIs endlich gelöscht werden.

Sätteri wird zum Standard-Markdown-Prozessor

Das Ereignis von 7.0.0-beta.4 ist PR #16966, die den Standard-.md-Prozessor von der Legacy-unified/remark/rehype-Pipeline auf Sätteri umstellt, den nativen Rust-Markdown-Prozessor, den Astro 6.4 als Opt-in ausgeliefert hat. Die Motivation ist Build-Performance: der Astro-6.4-Launch-Post maß Gewinne von etwa 50 bis 80 Prozent bei den Build-Zeiten inhaltslastiger Sites, und das Team behandelt Sätteri als die Zukunft von Astro-Markdown, seit der Rust-Markdown-Optimizer eingeführt wurde. Beta.4 macht diese Zukunft zum Standard für jedes neue und jedes aktualisierte Astro-Projekt.

Die Änderung ist mechanisch für Projekte, die markdown.remarkPlugins oder markdown.rehypePlugins nicht anfassen. Die in Astro 6.4 eingeführten Deprecation-Warnungen für diese Konfigurationsschlüssel werden nun standardmäßig ausgelöst; die Schlüssel funktionieren weiterhin, sofern @astrojs/markdown-remark installiert ist und markdown.processor auf unified() gesetzt ist:

// astro.config.mjs
import { defineConfig } from 'astro/config';
import { unified } from '@astrojs/markdown-remark';

export default defineConfig({
  markdown: {
    processor: unified(),
  },
});

Wenn das Projekt Markdown nur über die Defaults verwendet (keine remark/rehype-Plugins, kein GFM, keine Syntaxhervorhebung über unified), ist das Upgrade ein No-op. Sätteri ist API-kompatibel mit dem Standardumfang der Markdown-Funktionen, den Astros .md-Dateien out of the box nutzen, und Astro 6.4 hat in Sätteri bereits Syntaxhervorhebung über Shiki und GFM-Tabellen unterstützt. Die wesentlichen Migrationskosten betreffen Projekte, die auf remark-mermaid, rehype-slug oder andere benutzerdefinierte Plugins gesetzt haben; diese müssen entweder auf Sätteris Erweiterungs-API portiert werden oder auf der Legacy-Pipeline bleiben.

Ein weiterer praktischer Effekt ist die Bundle-Größe: @astrojs/markdown-remark und sein transitive unified-Ökosystem werden nicht mehr standardmäßig installiert, was sich in einem kleineren node_modules und einem schnelleren Cold-Install für Projekte niederschlägt, die darauf verzichten können. Die Deprecation-Warnung wird zur harten Anforderung: setzt eine Konfiguration markdown.remarkPlugins oder markdown.rehypePlugins, weigert sich Astro 7.0 zu starten, sofern @astrojs/markdown-remark nicht als direkte Abhängigkeit vorhanden ist.

Erweitertes Routing wird stabil, fetchFile rückt auf die Top-Level-Ebene

Die größte Funktion, die 7.0 aus dem experimentellen Status befördert, ist das erweiterte Routing, eingeführt hinter experimental.advancedRouting in Astro 6.3. Die Funktion gibt die volle Kontrolle darüber, wie Anfragen durch eine Astro-Anwendung fließen, mit erstklassiger Unterstützung für Nicht-Astro-Router wie Hono. Die 7.0-Beförderung macht es zum Standardverhalten, entfernt das experimentelle Flag und verschiebt die Entry-Point-Konfiguration auf eine neue Top-Level-Option fetchFile.

Der Standard-Entry-Point ist nun src/fetch.ts statt src/app.ts. Projekte, die den Entry-Point nicht anpassen, müssen nichts tun; die neue Datei wird beim ersten Lauf automatisch erzeugt. Projekte, die ein benutzerdefiniertes src/app.ts geschrieben haben und sich auf das experimentelle Flag verlassen, haben zwei Optionen:

// astro.config.mjs
import { defineConfig } from 'astro/config';

export default defineConfig({
  fetchFile: 'app.ts', // alten Entry-Point-Pfad beibehalten
});

Oder, wenn das Projekt frisch auf 7.0 startet, benennt man den Entry-Point in src/fetch.ts um und entfernt das experimental.advancedRouting-Flag vollständig. fetchFile: null deaktiviert den Entry-Point für Projekte, die src/fetch.ts als eigene Datei behalten wollen.

Die Beförderung stabilisiert auch die astro/hono-Integration. getFetchState() ist nun eine öffentliche API von astro/hono, abrufbar aus einem Hono-Kontextobjekt, sodass Drittanbieter-Pakete Hono-Middleware bauen können, die mit Astros Per-Request-State interagiert. Die Integration gibt astro/hono die gleiche Erweiterbarkeit, die astro/fetch seit 6.0 hat.

Benutzerdefinierter Logger und neue Streaming-Rendering-Engine werden stabil

Zwei weitere experimentelle Funktionen der 6.x werden in 7.0 befördert. PR #16745 stabilisiert den benutzerdefinierten Logger, der es Projekten erlaubt, Astros Standard-Konsolenausgabe durch strukturiertes JSON oder einen benutzerdefinierten Logger-Entry-Point zu ersetzen, der mit einem Log-Aggregationsdienst spricht. Die eingebauten Handler sind logHandlers.json(), logHandlers.node() und logHandlers.console():

import { defineConfig, logHandlers } from 'astro/config';

export default defineConfig({
  logger: logHandlers.json({
    pretty: true,
    level: 'warn',
  }),
});

context.logger ist nun in API-Routen und Middleware immer verfügbar, auch ohne konfigurierten benutzerdefinierten Logger, was eine langjährige Stolperfalle beseitigt: ein Projekt, das sich nicht aktiv entschied, bekam stillschweigend einen nicht anpassbaren Default-Logger.

PR #16981 entfernt experimental.queuedRendering vollständig, da die Streaming-Rendering-Engine, die es abgelöst hat, nun stabil ist. Die alte Queue-basierte Engine verschwindet; die neue Engine streamt Komponenten, sobald sie angetroffen werden, verzichtet auf das Node-Polling (das keine konkreten Gewinne brachte) und schrumpft den Content-Cache auf einen Tag-Namens-Cache. Die Migration besteht darin, das experimental.queuedRendering: {}-Flag aus der Konfiguration zu entfernen; hatte ein Projekt es gesetzt, existiert der Schlüssel nicht mehr und Astro 7.0 gibt eine Warnung aus, bevor es auf den Default zurückfällt.

Dev-Server im Hintergrund für KI-Code-Agenten

7.0.0-alpha.2 hat eine Funktion hinzugefügt, die im Ökosystem der KI-Code-Agenten still und leise populär geworden ist: die Verwaltung des Dev-Servers im Hintergrund. Wird ein KI-Code-Agent erkannt, startet astro dev den Dev-Server automatisch als detached Hintergrundprozess und schreibt eine Lock-Datei (.astro/dev.json) mit der Server-URL, dem Port und der PID. Die neuen Subkommandos sind astro dev --background (im Hintergrund starten), astro dev stop (beenden), astro dev status (URL, PID, Uptime prüfen) und astro dev logs (mit --follow / -f, um neue Ausgaben zu streamen).

Die Motivation ist einfach: KI-Code-Agenten (Claude Code, Codex CLI, Cursor) laufen in Terminals, in denen ein im Vordergrund laufender Dev-Server die Hauptschleife des Agenten blockiert. Der Hintergrundmodus hält den Server über die Tool-Aufrufe des Agenten hinweg am Leben und schreibt strukturierte Ausgaben in eine Log-Datei, die der Agent mitlesen kann. Der Opt-out ist ASTRO_DEV_BACKGROUND=0. Die Funktion ist nun in Agentenkontexten der Standard, was Mitte 2026 den Großteil der CLI-Landschaft der KI-Code-Agenten ausmacht.

Die Lock-Datei ist auch der Ansatzpunkt für eine breitere Fähigkeit, die das Team schrittweise aufbaut: Agenten können .astro/dev.json lesen, um zu wissen, welcher Dev-Server zu einem Projekt gehört, ihn bei Bedarf neu starten und am Ende einer Session aufräumen. Dasselbe Lock-Muster bildet die Grundlage für die Lifecycle-Hooks von astro dev, die mehrere Integratoren seit 6.4 nachfragen.

Was in Astro 7.0 entfernt wird

Die 7.0-Linie ist auch ein Cleanup-Release. PR #17010 entfernt die CLI-Befehle astro db, astro login, astro logout, astro link und astro init. @astrojs/db ist veraltet; die Empfehlung des Teams ist, direkt einen Datenbank-Client (Drizzle, Kysely usw.) zu verwenden. astro init war bereits weitgehend durch npm create astro@latest ersetzt worden. Die anderen drei sind Produkte, in die Astro nicht mehr investiert.

Die veralteten Helfer aus astro:transitions und astro:transitions/client (TRANSITION_BEFORE_PREPARATION, TRANSITION_AFTER_PREPARATION, TRANSITION_BEFORE_SWAP, TRANSITION_AFTER_SWAP, TRANSITION_PAGE_LOAD, die beiden isTransition*Event()-Type-Guards und createAnimationScope()) werden ebenfalls entfernt. Der Ersatz besteht darin, die Lifecycle-Event-Namen direkt zu nutzen (event.type === 'astro:before-preparation', 'astro:after-swap' usw.). Auch die internen Erweiterungspunkte state.provide(), state.resolve(), state.finalizeAll() und App.Providers der Advanced-Routing-API werden entfernt; der öffentliche Ersatz ist locals für den Per-Request-State.

Die 7.0-Linie ist zudem die erste, die Vite 8 offiziell unterstützt; der Patch 7.0.0-alpha.1 entfernt ausdrücklich die Warnung, dass Astro Vite v8 nicht unterstützt. Die 7.0-Betas werden gegen den stabilen Vite-8-Branch gebaut und getestet, was bedeutet, dass die Funktionen der Vite-8.1-Beta (direkte .wasm-Imports, build.chunkImportMap, Umbenennung server.hmrserver.ws) Astro-7-Projekten zur Verfügung stehen, sobald der Anwender Vite auf 8.1 aktualisiert.

Wer ist betroffen

Die Migrationskosten für das durchschnittliche Astro-Projekt sind gering: die meisten werden beim Upgrade eine schnellere Markdown-Pipeline sehen, und die neuen Defaults funktionieren einfach. Die riskanteren Migrationen sind diejenigen, die experimental.advancedRouting angefasst haben (Flag entfernen, entscheiden, ob man nach src/fetch.ts umbenennt oder fetchFile setzt), diejenigen, die astro:transitions-Event-Konstanten verwendet haben (durch die Event-Namen als Strings ersetzen) und diejenigen, die von den entfernten CLI-Befehlen abhängen (astro db, astro login, astro logout, astro link, astro init).

Der stabile 7.0-Cut wird erwartet, sobald sich das aktuelle Beta-Feedback stabilisiert, wobei die Deprecation-Warnungen auf markdown.remarkPlugins, markdown.rehypePlugins und markdown.remarkRehype für einen weiteren Release-Zyklus laut bleiben, bevor sie zu harten Fehlern werden. Bis dahin ist 7.0.0-beta.4 die richtige Version, gegen die man validiert, und der richtige Zeitpunkt, um verbleibende Beschwerden über den Sätteri-Default oder die neue src/fetch.ts-Entry-Point-Konvention einzureichen.

Häufig gestellte Fragen

Deno bringt `deno desktop` mit: WEF-basierter Unterbefehl für eigenständige Desktop-Apps mit Deno.BrowserWindow, vereinten DevTools und Cross-Compile für macOS, Windows und Linux

Deno hat `deno desktop` am 16. Juni 2026 zusammengeführt (PR #33441), einen neuen Unterbefehl, der ein Deno-Projekt in eine eigenständige Desktop-Anwendung verwandelt. Das Feature liefert das WEF-Backend (standardmäßig CEF, plus WebView und rohem winit), die Deno.BrowserWindow-API für Fenster-Lebenszyklus und native Events, Framework-Auto-Erkennung für Next, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start und Vite SSR, einen CDP-Multiplexer, der beide V8-Isolate in einer einzigen DevTools-Session anzeigt, einen Auto-Updater mit bsdiff-Patches und cross-kompilierte .app/.dmg/.exe/.AppImage-Outputs. Drei kleinere Deno-PRs landeten am selben Morgen: `deno link`/`unlink`, `deno test --shard` und ein fetch `request_builder_hook` für `x-deno-fetch-token`/`cdn-loop`-Header.

pnpm 11.7 bringt `frozenStore` für Read-Only-Dateisysteme, lässt pacquet Abhängigkeiten auflösen und schließt einen Lockfile-Path-Traversal

pnpm 11.7.0 (15. Juni 2026) liefert vier Kernänderungen: einen `--frozen-store`-Install-Modus für Nix-Stores, OCI-Layer und andere Read-Only-Mounts; die Delegation der Abhängigkeitsauflösung an den pacquet-Rust-Port (nicht nur die Materialisierung); ein optionales `--batch`-Flag für `pnpm publish --recursive`; und einen Security-Fix, der Path-Traversal- und reservierte Aliasse (`.bin`, `.pnpm`, `node_modules`, `../../escape`) aus dem Lockfile zurückweist.

Verwandte Artikel

Weitere Berichterstattung zu ähnlichen Themen und Tags.

Astro 7.0.0-beta.6 stabilisiert das Routen-Caching und führt JSX-Whitespace-Kompression als Standard ein
frameworks

Astro 7.0.0-beta.6 stabilisiert das Routen-Caching und führt JSX-Whitespace-Kompression als Standard ein

Astro 7.0.0-beta.6 (19. Juni 2026) befördert die experimentelle Routen-Caching-API auf stabile Top-Level-Konfiguration. Die Flags experimental.cache und experimental.routeRules entfallen, ersetzt durch eine cache-Konfiguration der obersten Ebene und einen Cache-Helper. Beta.5 (18. Juni) hat „jsx“ zum Standardwert von compressHTML gemacht, was das gerenderte HTML jeder Site verändert, die sich auf die Whitespace-Erhaltung verlassen hat. Beta.6 zieht außerdem @astrojs/markdown-satteri 0.3.1-beta.2 nach.
Oxlint v1.72 und Oxfmt v0.57 liefern den crates-v0.138-Zyklus aus, vereinheitlichen den AstBuilder und entfernen den Prettier-Fallback für CSS/GraphQL
tooling

Oxlint v1.72 und Oxfmt v0.57 liefern den crates-v0.138-Zyklus aus, vereinheitlichen den AstBuilder und entfernen den Prettier-Fallback für CSS/GraphQL

Oxlint apps_v1.72.0 und oxfmt apps_v0.57.0, beide am 2026-06-29 veröffentlicht, schließen den v0.138-Zyklus ab, der in den [v1.71-Versionsnotizen](/articles/2026-06-23--oxlint-v1-71-oxfmt-v0-56) vorausgesagt wurde. Das crates-Release (crates_v0.138.0, ebenfalls 2026-06-29) vereinheitlicht die alten und neuen AstBuilder-APIs (#23876, #23834, #23831, mit den Legacy-Methoden als `#[deprecated]` markiert), benennt `AllocatorAccessor` in `GetAllocator` um und lässt dessen `allocator`-Methode `&self` annehmen (#23675, #23676), lässt `Str`- und `Ident`-Methoden `&GetAllocator` annehmen (#23781), fügt `transformer_plugins: Support typeof define keys` für vue-i18n und ähnliche Makros hinzu (#23605, Alexander Lichter) und liefert die herausragende Performance-Eintragung des Zyklus: `minifier: memoize value_type to remove its O(n^2) re-walk on long binary chains` (#23929, Dunqing), die eine arithmetische Additionskette mit 20 000 Gliedern von 6 118 ms auf 4,7 ms (≈1300x) bringt und das reale antd.js-Bundle von 78,1 ms auf 65,4 ms. Oxlint v1.72.0 liefert 3 Features (React-`no-unknown-property`-Vorschlag #23936, AstBuilder-Vereinheitlichung #23875, Schema für `eslint/no-restricted-import` #23642), 18 Fehlerbehebungen und 23 Performance-Eintragungen. Oxfmt v0.57.0 enthält zwei BREAKING-Änderungen, die den Prettier-Fallback für CSS/LESS/SCSS- und GraphQL-Dateien entfernen: `Format parser:css,less,scss files + css-in-js by oxc_formatter_css` (#23321, leaysgur) und `Support draft syntax with removing prettier fallback` (#23326, leaysgur), beide aufbauend auf den neuen Crates `oxc_formatter_css` (#23320) und `oxc_formatter_graphql` (#23317).
Vite 8.1.0 stable bringt Bundled Dev Mode (15x schnellerer Start bei 10k-React-Komponenten), WASM-ESM-Importe und Chunk Import Map, erweitert server.fs.deny um .npmrc und private Schlüssel
tooling

Vite 8.1.0 stable bringt Bundled Dev Mode (15x schnellerer Start bei 10k-React-Komponenten), WASM-ESM-Importe und Chunk Import Map, erweitert server.fs.deny um .npmrc und private Schlüssel

Vite 8.1.0 stable, veröffentlicht am 2026-06-23 vom Vite-Team (announcing-vite8-1), hebt Bundled Dev Mode von einem experimentellen Flag auf einen dokumentierten --experimental-bundle-Einstiegspunkt (15x schnellerer Cold Start bei einer React-App mit 10 000 Komponenten, 10x schnellere Full Reloads; Linear meldet 3x schnelleres Cold-Start-Rendering, ~40% schnellere Full Reloads), stabilisiert die WASM-ESM-Integration mit direkten .wasm-Importen und build.chunkImportMap aus der 8.1-Beta vom 2026-06-15, bringt Lightning CSS mit External-CSS-in-CSS und Plugin-Dateiabhängigkeiten einen Schritt näher an den Default-Status, aktualisiert Rolldown auf 1.1.2 (1.1.3 folgt am selben Tag), pinnt rolldown mit einem Tilde-Range, sodass Patch-Releases ohne Vite-PR durchfließen, erweitert server.fs.deny um .npmrc, .yarnrc.yml und *.{key,p12,pfx,cer,der} und gibt eine Runtime-Deprecation-Warnung für envFile: false aus.

Kommentare

Anmelden Melden Sie sich an, um an der Diskussion teilzunehmen.

Noch keine Kommentare. Seien Sie der Erste, der seine Gedanken teilt.