v0.1.0-next.29
v0.1.0-next.29
Released: 2026-06-05
Features
Islands code-splitting: consumer dynamic
import()boundaries now become separate, esbuild-self-hashed chunks (islands-chunk-<hash>.js) instead of being inlined into the page-blockingislands.js. The shared-bundle esbuild invocation runs with--splittinginto a staging outdir; the stableislands.jsentry keeps the existing hashed-URL contract and HTML rewriting is unchanged. Zero-dynamic-import projects behave exactly as before. (ee13d0d, 8e6b064)zfb buildships dynamic-import chunks verbatim todist/assets/next to the hashed entry via a newEmittedAsset.companionscontract — chunk files are never renamed, so esbuild's relative inter-chunk imports stay valid. (fbaf651)zfb devwrites and prunes code-split chunks alongsideislands.json each rebundle generation, served through the existing/mount; stale chunks from a previous generation are dropped before the reload event fires. (04519af)assets/ * zfb dev: SSR-only projects (every pageprerender = false) now reload the embedded V8 host on source edits, and the SSR route set is live after boot — adding or removing aprerender = falseroute mid-session is dispatchable immediately via a sharedSsrRoutesHandle. (f6c07ae)zfb dev: stale HTML and page-cache entries are pruned when a route disappears or renames via content edit — route-table rebuilds diff the global live output-path set, vanished URLs lose theirdev-pagesHTML andPageCacheentries (newPageCache::removeAPI), and deleted content files drop their dependency-graph nodes. (f36c730, 48d534b, 85c4e6a, 6b18943)zfb buildwipes the outdir's contents at build start sodist/reflects exactly the current build — no more stale hashed assets or orphan HTML accumulating across rebuilds. The wipe is symlink-safe (outdir-as-symlink survives; child symlinks are unlinked, not traversed), refuses to run when outdir is the project root or an ancestor of it, and runs before thepreBuildplugin hook so plugin-emitted artifacts survive. (1c8c353)
Bug Fixes
zfb dev: the→ ready on …banner prints only after the TCP listener actually binds — starting on an occupied port now shows the bind error with no misleading ready banner, and the watcher task aborts on bind failure. (09e0a82, 7ec3ab2)Deletion-only watcher ticks preserve rebuild classification flags (css/islands/full-rebuild/ssr-reload), so deleting a stylesheet, client module, or SSR-only source no longer leaves stale output until an unrelated edit; discovery refreshes also rewrite the live SSR route handle; the per-island bundling path keeps splitting disabled so dynamic imports inline there instead of referencing unshipped chunks. (5e22897)
Prod companion-chunk writes go through symlink-aware output-path validation. (a45a463)
Route-prune hardening:
reload_rendererfires on deletion-only ticks, and discovery-hook refreshes thread vanished output paths into the prune step. (2249920)Windows: outdir wipe removes directory symlinks via
remove_dirinstead of failing. (703541e)zfb devrefreshes the bundle on edit ticks and watches configured collection paths outsidesrc/content/; the content-root override is gated to content-shaped files. (a61745a, c38ac34)
Other Changes
Integration tests for route pruning and dependency-graph edge removal. (a08cdb3)
Clippy style fix: struct-init for test config. (074dc16)