terminal
Weekly Digest // JS_FRAMEWORKS — Week 4-2026
codeWeekly Report

JavaScript — 2026 Week 4

JS frameworks, React/Vue/Svelte, and runtime updates

calendar_todaysummarizeWeek 4-2026
BUNDLER

Announcing Rolldown 1.0 RC

VoidZero has released Rolldown 1.0 RC, signaling API stability for this Rust-based JavaScript/TypeScript bundler that is 10–30x faster than Rollup. The RC reflects over 3,400 commits since beta.1, covering 749 features, 682 bug fixes, and 109 performance optimizations including SIMD JSON escaping and parallel chunk generation. Rolldown is Rollup plugin-compatible, ships built-in TypeScript/JSX transforms via Oxc, native CJS/ESM interop, and a new output.codeSplitting API providing webpack-like granular chunking control unavailable in Rollup. It now passes 900+ Rollup tests and 670+ esbuild tests. Vite 8 beta already ships Rolldown as its default bundler, unifying the current two-bundler (esbuild + Rollup) pipeline into one.

Announcing Rolldown 1.0 RC
Read Articlearrow_forward
Article · LINTINGREAD TIME: 2m

ESLint v10.0.0-rc.1 Released

ESLint v10.0.0-rc.1 is now available for community testing ahead of the final v10 stable release. The headline change is that Espree v11.1.0 and ESLint Scope v9.1.0 now ship built-in TypeScript type definitions, replacing the previously required @types/espree and @types/eslint-scope DefinitelyTyped packages. The new types include several bug-fix differences from the old community-maintained ones, so projects relying on those types should audit for required updates. Additional fixes include corrected handling of function and class expression names in the no-shadow rule and improved RuleTester stack-trace location estimation. Install via eslint@next or eslint@10.0.0-rc.1; a detailed migration guide covers all breaking changes.

READ_FULL_LOGarrow_forward
Article · FRAMEWORKREAD TIME: 6m

Nuxt 4.3

Nuxt 4.3 ships several developer-experience and performance improvements. Route rules now support an appLayout property for declarative, centralised layout management without scattering definePageMeta calls. Payload extraction is extended to ISR and SWR routes, enabling CDN-cached _payload.json files and reducing client-side API calls during navigation. The setPageLayout composable gains a second argument for passing props directly to layouts. A new #server alias provides clean, protected imports within the server directory. Route rules compilation now uses rou3, dropping the radix3 client bundle dependency and eliminating app manifest fetches. Additional highlights include layer module disabling, async plugin constructors for lazy build-plugin loading, and inlineStyles support for webpack/rspack. Nuxt v3.21.0 is released in parallel with most features backported.

READ_FULL_LOGarrow_forward
Article · FRAMEWORKREAD TIME: 6m

Signal Forms in Angular 21

Angular 21 beta introduced experimental Signal Forms, a model-driven approach that eliminates much of the boilerplate required by Template and Reactive Forms. Forms are created with a signal model passed to a new form() function, producing a FieldTree/FieldState hierarchy that directly mutates the original model rather than maintaining a copy. Binding uses the new [field] directive (renamed from [control] in v21.0.0-next.8). Validation accepts built-in validators (Required, MinLength, Pattern, etc.) or custom functions, supports reusable schema objects via apply(), and conditional validation via a when option. Form submission is handled by a new submit() function that surfaces server-side errors per field. Custom controls no longer require implementing the four-method ControlValueAccessor interface; instead, a single value property typed as modelSignal satisfies the new FormValueControl<> interface.

READ_FULL_LOGarrow_forward
Article · TOOLINGREAD TIME: 5m

Biome Roadmap 2026

The Biome core team has published its 2026 roadmap following a strong 2025 that surpassed 15 million monthly downloads and shipped Biome v2 with type-aware lint rules (not requiring tsc), GritQL plugins, and experimental Vue/Svelte/Astro support. For 2026, top priorities include SCSS support, cross-language lint rules (e.g. detecting unused CSS classes in JSX), improved HTML formatting to match Prettier, embedded-language DX for CSS and GraphQL inside JavaScript, better LSP features (cross-file reference navigation), opt-in monorepo workspace configuration to fix memory-leak issues, and YAML stabilization. The team also acknowledged past mistakes around monorepo memory leaks, poor debugging ergonomics for complex configs, and the framing of the Svelte experimental announcement.

READ_FULL_LOGarrow_forward
Article · BUNDLERREAD TIME: 6m

Inside Turbopack: Building Faster by Building Less

The Next.js team details the incremental computation architecture at the core of Turbopack, the default bundler for Next.js. Rather than rebuilding everything on each change, Turbopack uses "value cells" (Vc<…>) — fine-grained cache units that automatically track which functions read them, inspired by Salsa (powering Rust-Analyzer and Ruff) and SolidJS signals. When a source file changes, only cells actually read by dependent functions are marked dirty and recomputed demand-driven, meaning work is deferred until an active query (an open dev page or a production build request) pulls it. An additional "aggregation graph" sits atop the dependency graph to cheaply answer large sub-graph queries (error collection, dirty-node discovery) without traversing millions of fine-grained nodes. As of Next.js 16.1, the persistent file-system cache for next dev is now stable and on by default, allowing warm restarts without full recomputation.

READ_FULL_LOGarrow_forward
Article · FRAMEWORKREAD TIME: 5m

Adapting Library Logic for React Compiler

Corbin Crutchley, lead maintainer of TanStack Form, describes how React Compiler's automatic memoization silently broke a pattern common in class-based library code. When a useState-backed ref object is passed as a prop to a child component, the compiler memoizes the child on the object's referential identity rather than the mutated inner value, causing stale reads. The bug escapes React's ESLint rules when mutation is indirected through a class instance (the pattern TanStack Form uses). The fix is to set panicThreshold: 'all_errors' in the Babel compiler plugin to surface silent optimization bailouts, and to replace mutation with a useMemo-created new object so the compiler can correctly track dependencies. Using babel.exclude in the Vite config can also simulate how node_modules code is skipped by Babel to reproduce the issue locally.

READ_FULL_LOGarrow_forward
summarizeDigest_Summary

This week's JavaScript tooling story is defined by a Rust-powered generational shift. VoidZero's Rolldown 1.0 RC lands as the headline item: 3,400+ commits since beta, 10–30× faster than Rollup, built-in TypeScript/JSX transforms via Oxc, and a new output.codeSplitting API for webpack-style chunk control — all while remaining Rollup-plugin-compatible. Most significantly, Vite 8 beta already ships Rolldown as its default bundler, collapsing the old esbuild + Rollup dual pipeline into a single tool. The Next.js team's deep-dive into Turbopack's incremental computation architecture — demand-driven "value cells" (Vc<…>) inspired by Salsa and SolidJS signals, plus a persistent file-system cache now stable in Next.js 16.1 — rounds out the bundler renaissance.

Linting is equally in motion. ESLint v10.0.0-rc.1 ships built-in TypeScript types for Espree and ESLint Scope, retiring the DefinitelyTyped packages; projects relying on the old community types should audit for breaking differences. Biome published its ambitious 2026 roadmap: SCSS support, cross-language lint rules that span JSX and CSS, improved HTML formatting, and opt-in monorepo workspace configuration to address past memory-leak issues — all after crossing 15 million monthly downloads with Biome v2.

On the framework side, Nuxt 4.3 brings declarative layout management via appLayout in route rules, CDN-cacheable payload extraction extended to ISR/SWR routes, and a #server alias for protected server imports. Angular 21's experimental Signal Forms rethink form ergonomics entirely — a signal model feeds a form() function producing a FieldTree hierarchy, and custom controls drop the four-method ControlValueAccessor in favour of a single modelSignal-typed value property. Meanwhile, Corbin Crutchley's analysis of React Compiler's silent memoization pitfall — where class-based ref mutations fool the compiler's dependency tracker — is required reading for library authors adopting the compiler.

Key Takeaways
  • Rolldown 1.0 RC achieves API stability and is already the default bundler in Vite 8 beta, making the Rust-based single-bundler future a present reality.
  • ESLint v10 and Biome's 2026 roadmap both converge on eliminating external type dependencies and expanding cross-language tooling coverage.
  • Angular's Signal Forms and React Compiler's memoization pitfalls illustrate that framework ergonomics are being rebuilt from first principles around reactivity signals.