JS frameworks, React/Vue/Svelte, and runtime updates Compiled for immediate developer deployment.
calendar_todaysummarizeWeek 17-2026
article
What's Actually New in JavaScript (and What's Coming Next)
TAG: ES2025/2026
ES2025 was ratified in June 2025 and ES2026 is candidate-approved, bringing a wave of long-awaited language improvements. Iterator helpers — lazy .map(), .filter(), .take(), and .toArray() on Iterator.prototype — are the headline addition, enabling infinite-sequence processing without Array.from overhead. ES2025 also ships native Set methods (union, intersection, difference), Promise.try for uniform sync/async error handling, RegExp.escape, Float16Array, and JSON import attributes. ES2026 adds Math.sumPrecise using Shewchuk's algorithm for accurate float summation, Uint8Array.toBase64/toHex, Error.isError for cross-realm checks, Iterator.concat, Map.getOrInsert, Array.fromAsync, and JSON.parse source-text reviving. Temporal reached Stage 4 in March 2026 and targets ES2027; the using keyword and import defer are Stage 3 with mature browser implementations today. The article also provides a ready-to-paste modern-JS preferences prompt for AI coding assistants to prefer these new APIs over outdated patterns.
Bun v1.3.13 delivers significant test runner improvements alongside a broad performance and compatibility sweep. The new bun test --isolate flag runs each test file in a fresh global environment within a single process (draining microtasks and cancelling timers between files), while --parallel distributes files across N worker processes with work-stealing scheduling — both flags compose with --bail, --randomize, and JUnit reporting. A new --shard=M/N flag splits test files round-robin across CI jobs, matching Jest and Playwright syntax. Source map memory drops from roughly 20 bytes per mapping to 2.4 bytes via a new bit-packed binary format, shrinking compiled binaries by about 1.8 MB. gzip compression speed improves up to 5.5x after upgrading to zlib-ng 2.3.3. Bun.serve() gains Range request support (RFC 9110 partial content / 206 responses) and streaming file responses for SSL/Windows paths. The JavaScriptCore engine merges 1,316 upstream WebKit commits. SHA3-224/256/384/512 and X25519deriveBits are added to WebCrypto and node:crypto.
Fresh 2.3: Zero JS by Default, View Transitions, and Temporal Support
TAG: FRAMEWORK
Fresh 2.3, built from over 100 commits by 20 contributors, delivers on the framework's zero-JavaScript promise more precisely: pages that use no islands or partials now ship 0 KB of JavaScript (down from 14-22 KB raw / 5-9 KB gzip in 2.2), with no script tags and no module preload headers. The release adds View Transitions API support via a single f-view-transition attribute on the body element, wiring into the existing partials system with CSS-customizable animations and a graceful fallback for unsupported browsers. First-class WebSocket support arrives through app.ws() and ctx.upgrade() APIs. The Vite integration drops two Babel passes and fixes CJS-to-ESM handling, React compat aliasing, and Radix UI compatibility. Security additions include CSP nonce injection middleware and an IP filter middleware with CIDR support. All eight Temporal types (Instant, ZonedDateTime, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, Duration) can now be passed as island props. Pre-compiled middleware chains and OpenTelemetry W3C traceparent propagation round out the release.
Rspack 2.0 marks a major evolution beyond being a webpack-compatible fast bundler, now targeting modern JavaScript defaults. Build performance improves roughly 10%over 1.7 (and up to 100%over 1.0), with persistent-cache hits cutting build time by around 50% and cache-enabled memory usage dropping more than 20%. The @rspack/dev-server dependency count falls from 192 to 1, shrinking install size from 15 MB to 1.4 MB. Output optimization gains include CommonJS destructuring-aware tree shaking, #__NO_SIDE_EFFECTS__ compiler annotations, and Module Federation shared-dependency tree shaking. ESM support is overhauled: core packages are now pure ESM, import.meta properties are preserved in ESM output, import defer via import.defer() is expanded, and a new modern-module library output type produces cleaner ESM for downstream tools. New features include experimental React Server Components support (directive handling, compile-time RSC rule checks, HMR), #/ subpath alias imports, simplified swc-loaderdetectSyntax: auto option, and hashed module IDs.
How React Streams UI Out of Order and Still Manages to Keep Order
TAG: REACT INTERNALS
This article by Sankalpa Acharya dissects the internal mechanics of React's out-of-order streaming introduced with React 18's renderToPipeableStream. Traditional SSR blocks the entire HTML response until the slowest data fetch completes; React's Suspense-based streaming instead sends ready components immediately and inserts HTML comment markers (<!--$?--> / <!--/$-->) with a template placeholder for each pending Suspense boundary. When server data resolves, React streams a hidden div with the real content and a small inline script calling $RC(boundaryId, contentId). The $RC function finds the template and resolved div, marks the boundary as queued ($~), and schedules the DOM swap via requestAnimationFrame using the $RV function, which removes the fallback nodes and inserts resolved children in place. The full boundary lifecycle progresses through $? (pending) → $~ (queued) → $ (complete). The author also demonstrates a quirk: manually inserting a template element with a matching ID in the page will intercept the $RC lookup, causing React to swap the wrong element.
The React Compiler at Eighteen Months: The Arc, the Debates, and What's Next
TAG: REACT COMPILER
Sascha Becker reviews eighteen months of the React Compiler — from its public beta alongside React 19 in late 2024 through its 1.0 release in October 2025. The compiler's biggest impact has been retiring entire bug categories (missed useCallback dependencies, unnecessary re-renders in lists) rather than posting benchmark headline numbers. The greenfield story is settled; brownfield adoption is a project, because the compiler made the Rules of React enforceable at build time, exposing quiet violations in older state libraries and hooks. Key failure patterns include mutations during render, reading refs in render, class components (not compiled at all), and silent bail-outs on unsupported syntax — all surfaceable via the react-hooks/unsupported-syntax ESLint rule (now in eslint-plugin-react-hooksv6+). Looking ahead, the React team is signaling finer-grained compilation control, tighter RSC serialization to reduce hydration payload, convergence of the long-stalled useEvent primitive, compiler support in React Native, and a DevTools visualizer showing per-component compiler decisions.
Jack Herrington walks through five distinct data-loading and rendering strategies available in TanStack Start, all demonstrated against the PokeAPI. The five modes are: (1) CSR — ssr: false, loader fires on the client; (2) SSR — ssr: true (the default), data and HTML both rendered on the server, then hydrated; (3) Data-only SSR — data fetched server-side but HTML rendered only on the client, useful for dashboard pages that avoid CDN caching; (4) RSC via renderServerComponent — uses an async server component and the low-level RSC API, returning a renderable from the route loader; (5) RSC via createCompositeComponent — a TanStack-specific API that returns a component shell with named slots, letting client-side interactive elements slot into a server-rendered layout without requiring use client. RSC support is enabled by adding the ViteJS RSC plugin and a flag on the TanStack Start Vite plugin. Loaders are the integration point for all five strategies.
What's Actually New in JavaScript (and What's Coming Next)
ES2025 was ratified in June 2025 and ES2026 is candidate-approved, bringing a wave of long-awaited language improvements. Iterator helpers — lazy .map(), .filter(), .take(), and .toArray() on Iterator.prototype — are the headline addition, enabling infinite-sequence processing without Array.from overhead. ES2025 also ships native Set methods (union, intersection, difference), Promise.try for uniform sync/async error handling, RegExp.escape, Float16Array, and JSON import attributes. ES2026 adds Math.sumPrecise using Shewchuk's algorithm for accurate float summation, Uint8Array.toBase64/toHex, Error.isError for cross-realm checks, Iterator.concat, Map.getOrInsert, Array.fromAsync, and JSON.parse source-text reviving. Temporal reached Stage 4 in March 2026 and targets ES2027; the using keyword and import defer are Stage 3 with mature browser implementations today. The article also provides a ready-to-paste modern-JS preferences prompt for AI coding assistants to prefer these new APIs over outdated patterns.
Jack Herrington walks through five distinct data-loading and rendering strategies available in TanStack Start, all demonstrated against the PokeAPI. The five modes are: (1) CSR — ssr: false, loader fires on the client; (2) SSR — ssr: true (the default), data and HTML both rendered on the server, then hydrated; (3) Data-only SSR — data fetched server-side but HTML rendered only on the client, useful for dashboard pages that avoid CDN caching; (4) RSC via renderServerComponent — uses an async server component and the low-level RSC API, returning a renderable from the route loader; (5) RSC via createCompositeComponent — a TanStack-specific API that returns a component shell with named slots, letting client-side interactive elements slot into a server-rendered layout without requiring use client. RSC support is enabled by adding the ViteJS RSC plugin and a flag on the TanStack Start Vite plugin. Loaders are the integration point for all five strategies.
Bun v1.3.13 delivers significant test runner improvements alongside a broad performance and compatibility sweep. The new bun test --isolate flag runs each test file in a fresh global environment within a single process (draining microtasks and cancelling timers between files), while --parallel distributes files across N worker processes with work-stealing scheduling — both flags compose with --bail, --randomize, and JUnit reporting. A new --shard=M/N flag splits test files round-robin across CI jobs, matching Jest and Playwright syntax. Source map memory drops from roughly 20 bytes per mapping to 2.4 bytes via a new bit-packed binary format, shrinking compiled binaries by about 1.8 MB. gzip compression speed improves up to 5.5x after upgrading to zlib-ng 2.3.3. Bun.serve() gains Range request support (RFC 9110 partial content / 206 responses) and streaming file responses for SSL/Windows paths. The JavaScriptCore engine merges 1,316 upstream WebKit commits. SHA3-224/256/384/512 and X25519deriveBits are added to WebCrypto and node:crypto.
Fresh 2.3: Zero JS by Default, View Transitions, and Temporal Support
Fresh 2.3, built from over 100 commits by 20 contributors, delivers on the framework's zero-JavaScript promise more precisely: pages that use no islands or partials now ship 0 KB of JavaScript (down from 14-22 KB raw / 5-9 KB gzip in 2.2), with no script tags and no module preload headers. The release adds View Transitions API support via a single f-view-transition attribute on the body element, wiring into the existing partials system with CSS-customizable animations and a graceful fallback for unsupported browsers. First-class WebSocket support arrives through app.ws() and ctx.upgrade() APIs. The Vite integration drops two Babel passes and fixes CJS-to-ESM handling, React compat aliasing, and Radix UI compatibility. Security additions include CSP nonce injection middleware and an IP filter middleware with CIDR support. All eight Temporal types (Instant, ZonedDateTime, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, Duration) can now be passed as island props. Pre-compiled middleware chains and OpenTelemetry W3C traceparent propagation round out the release.
Rspack 2.0 marks a major evolution beyond being a webpack-compatible fast bundler, now targeting modern JavaScript defaults. Build performance improves roughly 10%over 1.7 (and up to 100%over 1.0), with persistent-cache hits cutting build time by around 50% and cache-enabled memory usage dropping more than 20%. The @rspack/dev-server dependency count falls from 192 to 1, shrinking install size from 15 MB to 1.4 MB. Output optimization gains include CommonJS destructuring-aware tree shaking, #__NO_SIDE_EFFECTS__ compiler annotations, and Module Federation shared-dependency tree shaking. ESM support is overhauled: core packages are now pure ESM, import.meta properties are preserved in ESM output, import defer via import.defer() is expanded, and a new modern-module library output type produces cleaner ESM for downstream tools. New features include experimental React Server Components support (directive handling, compile-time RSC rule checks, HMR), #/ subpath alias imports, simplified swc-loaderdetectSyntax: auto option, and hashed module IDs.
How React Streams UI Out of Order and Still Manages to Keep Order
This article by Sankalpa Acharya dissects the internal mechanics of React's out-of-order streaming introduced with React 18's renderToPipeableStream. Traditional SSR blocks the entire HTML response until the slowest data fetch completes; React's Suspense-based streaming instead sends ready components immediately and inserts HTML comment markers (<!--$?--> / <!--/$-->) with a template placeholder for each pending Suspense boundary. When server data resolves, React streams a hidden div with the real content and a small inline script calling $RC(boundaryId, contentId). The $RC function finds the template and resolved div, marks the boundary as queued ($~), and schedules the DOM swap via requestAnimationFrame using the $RV function, which removes the fallback nodes and inserts resolved children in place. The full boundary lifecycle progresses through $? (pending) → $~ (queued) → $ (complete). The author also demonstrates a quirk: manually inserting a template element with a matching ID in the page will intercept the $RC lookup, causing React to swap the wrong element.
The React Compiler at Eighteen Months: The Arc, the Debates, and What's Next
Sascha Becker reviews eighteen months of the React Compiler — from its public beta alongside React 19 in late 2024 through its 1.0 release in October 2025. The compiler's biggest impact has been retiring entire bug categories (missed useCallback dependencies, unnecessary re-renders in lists) rather than posting benchmark headline numbers. The greenfield story is settled; brownfield adoption is a project, because the compiler made the Rules of React enforceable at build time, exposing quiet violations in older state libraries and hooks. Key failure patterns include mutations during render, reading refs in render, class components (not compiled at all), and silent bail-outs on unsupported syntax — all surfaceable via the react-hooks/unsupported-syntax ESLint rule (now in eslint-plugin-react-hooksv6+). Looking ahead, the React team is signaling finer-grained compilation control, tighter RSC serialization to reduce hydration payload, convergence of the long-stalled useEvent primitive, compiler support in React Native, and a DevTools visualizer showing per-component compiler decisions.
Week 17 brought a wave of JavaScript ecosystem releases and spec news. ES2025 is ratified and ES2026 is candidate-approved, delivering Iterator helpers with lazy .map(), .filter(), .take(), and .toArray() on Iterator.prototype, native Set methods (union, intersection, difference), Promise.try, RegExp.escape, Float16Array, and JSON import attributes. ES2026 adds Math.sumPrecise, Uint8Array.toBase64/toHex, Error.isError, Map.getOrInsert, Array.fromAsync, and JSON.parse source-text reviving. Temporal hit Stage 4 in March 2026 targeting ES2027.
On the tooling side, Rspack 2.0 declared itself a modern-JS-first bundler rather than a webpack shim: build performance is up roughly 10%over 1.7 (up to 100%over 1.0), persistent-cache cuts build time by around 50%, and the dev-server install size shrank from 15 MB to 1.4 MB. ESM is now the core output format, and experimental React Server Components support landed. Bun v1.3.13 improved its test runner with --isolate and --parallel flags, a new --shard=M/N flag for CI distribution, and a bit-packed source-map format that trims compiled binary size by roughly 1.8 MB. gzip compression sped up to 5.5x via zlib-ng 2.3.3, and WebCrypto gained SHA3 and X25519deriveBits.
Deno's Fresh 2.3 achieved true zero-JS pages (down from 14-22 KB), added View Transitions via a single f-view-transition body attribute, first-class WebSocket support via app.ws() and ctx.upgrade(), and full Temporal type support as island props. React Compiler reached 1.0 in October 2025; Sascha Becker's retrospective highlights that brownfield adoption exposes quiet Rules-of-React violations, and TanStack Start now supports five distinct SSR/RSC rendering strategies including a createCompositeComponent API for slot-based server/client composition.
Key Takeaways
ES2025 Iterator helpers enable lazy infinite-sequence processing without Array.from overhead, and ES2026 adds Math.sumPrecise for float-accurate summation — both are shipping in browsers now.
Rspack 2.0 drops its webpack-compatibility identity in favor of modern ESM defaults, cutting dev-server install size from 15 MB to 1.4 MB and adding experimental React Server Components support.
Fresh 2.3 reaches true zero-JS by default, and Bun v1.3.13 introduces --shard=M/N CI test splitting and a bit-packed source-map format that cuts binary size by ~1.8 MB.