JS frameworks, React/Vue/Svelte, and runtime updates Compiled for immediate developer deployment.
calendar_todaysummarizeWeek 29-2026bolt2 CRITICAL
article
Nuxt 4.5 · Nuxt Blog
TAG: FRAMEWORK UPDATE
Nuxt 4.5, released July 18, 2026, simultaneously upgrades the build layer to Vite 8 (Rolldown-powered internals), Rspack 2 rebuilt on @rsbuild/core, and unheadv3 with synchronous engine and stricter useHead typing. An experimental ssrStreaming: true flag flushes the HTML shell immediately and streams the body — automatically disabled for bots via a configurable botRegex — but any setResponseStatus() or cookie write after streaming begins cannot reach the client. A stable error-code system (NUXT_E1001, NUXT_B5001) now attaches a human-readable why/fix to every build and runtime diagnostic, stripped from production bundles. Nuxt 3 reaches end-of-life on July 31, 2026; the team recommends npx nuxt upgrade --dedupe and a review of custom Vite plugins before upgrading in production.
Node.js 20 is being deprecated on October 1, 2026 - Vercel
TAG: RUNTIME
Following Node.js 20's upstream end-of-life on April 30, 2026, Vercel will disable Node.js 20 in Project Settings on October 1, 2026, causing new deployments of Serverless Functions pinned to Node 20 to error out — existing deployed functions continue working. Teams can identify affected projects today with vercel project ls --update-required after installing vercel@latest. The preferred upgrade path is setting "node": "24.x" in the engines field of package.json, which overrides Project Settings on the next deploy. Teams unable to migrate in time can containerize via a Dockerfile.vercel at the project root, but then own their own Node security patches going forward.
Astro 7.1 adds four focused improvements to the static-site framework released July 16, 2026. CSP gets new built-in directives that separate script-src-elem from script-src and style-src-attr from style-src, letting you allow unsafe inline styles without relaxing rules for external CSS. The paginate() helper gains a format function parameter so generated next/prev URLs match your actual deploy layout (e.g., appending .html for static hosts without URL rewriting). A new --ignore-lock flag on astro dev bypasses the agent-lockfile check introduced in Astro 7, enabling multiple intentional dev-server instances that run outside astro dev stop management. For large content collections, the new deferRender: true option on glob() skips eager HTML caching at sync time, and the experimental collectionStorage: "chunked" flag splits the .astro/data-store.json into 10 MB chunks, avoiding platform file-size limits.
ESLint and Codemod — an OpenJS Foundation partner whose engine (JSSG) powers migrations for React, Node.js, Nuxt.js, and pnpm — have partnered to automate v8→v9 and v9→v10 migrations, with all codemods living in the eslint/codemods repo and auto-published to the Codemod Registry via GitHub Actions. For v8-to-v9, npx codemod @eslint/v8-to-v9-config extracts eslintConfig from package.json, generates a flat eslint.config.mjs, and handles rule-option changes for no-unused-vars, camelcase, and six others; a companion @eslint/v8-to-v9-custom-rules migrates context method calls like context.getSource() to sourceCode.getText() and converts function-style rules to the object format with meta and create. The v9-to-v10 recipe (npx codemod @eslint/v9-to-v10) bundles four individual codemods covering config, custom rules, RuleTester, and the Linter/ESLint API. Complex logic such as dynamic require() and --ext CLI usage still requires manual review after running.
Preact contributor Jovi De Croock explains that Preact already supports resumed hydration — Suspense boundaries hydrate independently via renderToStringAsync on the server and pause-and-continue on the client — but the original algorithm tracked only one DOM node per suspended subtree, causing mismatches when a component returned null or a Fragment with multiple roots. Hydration 2.0, shipping as part of Preact 11, replaces that assumption with explicit opening and closing markers emitted by renderToStringAsync, so Preact can identify the complete DOM range for any suspended boundary before resuming it. One remaining open problem is useId() stability: a PR to fix id drift across async Suspense siblings (PR #5108) had to be reverted in #5135 because client-only branches shifted tree positions and reintroduced the same id-collision bug. Streaming SSR — where the server flushes the shell and fallback immediately on encountering a suspending child — is also in progress for Preact 11.
Inside TanStack Table V9 Reactivity | TanStack Blog
TAG: ARCHITECTURE
Author Riccardo Perra traces how TanStack Table V9 evolved from a proxy-based Angular adapter — where get* methods were wrapped in computed() calls via a Proxy — through notifier bridges and class-based Store and Derived APIs, to the current architecture where per-feature atoms (pagination, row selection, column sizing, filters) live in a reactive graph built on @tanstack/store0.9's signal-backed createStore/createAtom API. PR #6181 moved options into an optionsStore so that live inputs like enableRowSelection participate in the same dependency graph as state reads; PR #6234 split the monolithic state snapshot into per-feature atoms; PR #6237 made those atoms framework-swappable via a TableReactivityBindings interface (createWritableAtom, createReadonlyAtom, batch, schedule, untrack). Angular, Solid, and Vue now supply native signals; React uses @tanstack/react-store with a Subscribe component and useSelector for opt-in granular rendering. V9 ships nine framework adapters, including new Preact, Alpine, and Ember adapters.
Jack Herrington demos a monorepo where a Vercel Native desktop app — built on Zig with an XML-declarative UI (columns, rows, scroll sections) — talks to a TanStack AI chat server over SSE using the AG-UI open protocol, with zero custom glue between the Zig frontend and the Node backend. The TanStack AI server (running on port 3000) is the default output of npx create-tanstack --template ai; it auto-selects adapters for Anthropic, OpenAI, Gemini, or Ollama based on available environment-variable API keys, then streams AG-UI packets via a chat() function. On the web client, useChat (TanStack AI's React hook) consumes those AG-UI SSE packets directly; on the Zig client, a hand-written ag-ui module parses the JSON tokens and maps tool_call_end events to guitar-recommendation call-outs. The demo highlights that any server speaking AG-UI — whether a Node backend or a future platform — can be consumed by any AG-UI client without protocol negotiation.
Nuxt 4.5, released July 18, 2026, simultaneously upgrades the build layer to Vite 8 (Rolldown-powered internals), Rspack 2 rebuilt on @rsbuild/core, and unheadv3 with synchronous engine and stricter useHead typing. An experimental ssrStreaming: true flag flushes the HTML shell immediately and streams the body — automatically disabled for bots via a configurable botRegex — but any setResponseStatus() or cookie write after streaming begins cannot reach the client. A stable error-code system (NUXT_E1001, NUXT_B5001) now attaches a human-readable why/fix to every build and runtime diagnostic, stripped from production bundles. Nuxt 3 reaches end-of-life on July 31, 2026; the team recommends npx nuxt upgrade --dedupe and a review of custom Vite plugins before upgrading in production.
Jack Herrington demos a monorepo where a Vercel Native desktop app — built on Zig with an XML-declarative UI (columns, rows, scroll sections) — talks to a TanStack AI chat server over SSE using the AG-UI open protocol, with zero custom glue between the Zig frontend and the Node backend. The TanStack AI server (running on port 3000) is the default output of npx create-tanstack --template ai; it auto-selects adapters for Anthropic, OpenAI, Gemini, or Ollama based on available environment-variable API keys, then streams AG-UI packets via a chat() function. On the web client, useChat (TanStack AI's React hook) consumes those AG-UI SSE packets directly; on the Zig client, a hand-written ag-ui module parses the JSON tokens and maps tool_call_end events to guitar-recommendation call-outs. The demo highlights that any server speaking AG-UI — whether a Node backend or a future platform — can be consumed by any AG-UI client without protocol negotiation.
Node.js 20 is being deprecated on October 1, 2026 - Vercel
Following Node.js 20's upstream end-of-life on April 30, 2026, Vercel will disable Node.js 20 in Project Settings on October 1, 2026, causing new deployments of Serverless Functions pinned to Node 20 to error out — existing deployed functions continue working. Teams can identify affected projects today with vercel project ls --update-required after installing vercel@latest. The preferred upgrade path is setting "node": "24.x" in the engines field of package.json, which overrides Project Settings on the next deploy. Teams unable to migrate in time can containerize via a Dockerfile.vercel at the project root, but then own their own Node security patches going forward.
Astro 7.1 adds four focused improvements to the static-site framework released July 16, 2026. CSP gets new built-in directives that separate script-src-elem from script-src and style-src-attr from style-src, letting you allow unsafe inline styles without relaxing rules for external CSS. The paginate() helper gains a format function parameter so generated next/prev URLs match your actual deploy layout (e.g., appending .html for static hosts without URL rewriting). A new --ignore-lock flag on astro dev bypasses the agent-lockfile check introduced in Astro 7, enabling multiple intentional dev-server instances that run outside astro dev stop management. For large content collections, the new deferRender: true option on glob() skips eager HTML caching at sync time, and the experimental collectionStorage: "chunked" flag splits the .astro/data-store.json into 10 MB chunks, avoiding platform file-size limits.
ESLint and Codemod — an OpenJS Foundation partner whose engine (JSSG) powers migrations for React, Node.js, Nuxt.js, and pnpm — have partnered to automate v8→v9 and v9→v10 migrations, with all codemods living in the eslint/codemods repo and auto-published to the Codemod Registry via GitHub Actions. For v8-to-v9, npx codemod @eslint/v8-to-v9-config extracts eslintConfig from package.json, generates a flat eslint.config.mjs, and handles rule-option changes for no-unused-vars, camelcase, and six others; a companion @eslint/v8-to-v9-custom-rules migrates context method calls like context.getSource() to sourceCode.getText() and converts function-style rules to the object format with meta and create. The v9-to-v10 recipe (npx codemod @eslint/v9-to-v10) bundles four individual codemods covering config, custom rules, RuleTester, and the Linter/ESLint API. Complex logic such as dynamic require() and --ext CLI usage still requires manual review after running.
Preact contributor Jovi De Croock explains that Preact already supports resumed hydration — Suspense boundaries hydrate independently via renderToStringAsync on the server and pause-and-continue on the client — but the original algorithm tracked only one DOM node per suspended subtree, causing mismatches when a component returned null or a Fragment with multiple roots. Hydration 2.0, shipping as part of Preact 11, replaces that assumption with explicit opening and closing markers emitted by renderToStringAsync, so Preact can identify the complete DOM range for any suspended boundary before resuming it. One remaining open problem is useId() stability: a PR to fix id drift across async Suspense siblings (PR #5108) had to be reverted in #5135 because client-only branches shifted tree positions and reintroduced the same id-collision bug. Streaming SSR — where the server flushes the shell and fallback immediately on encountering a suspending child — is also in progress for Preact 11.
Inside TanStack Table V9 Reactivity | TanStack Blog
Author Riccardo Perra traces how TanStack Table V9 evolved from a proxy-based Angular adapter — where get* methods were wrapped in computed() calls via a Proxy — through notifier bridges and class-based Store and Derived APIs, to the current architecture where per-feature atoms (pagination, row selection, column sizing, filters) live in a reactive graph built on @tanstack/store0.9's signal-backed createStore/createAtom API. PR #6181 moved options into an optionsStore so that live inputs like enableRowSelection participate in the same dependency graph as state reads; PR #6234 split the monolithic state snapshot into per-feature atoms; PR #6237 made those atoms framework-swappable via a TableReactivityBindings interface (createWritableAtom, createReadonlyAtom, batch, schedule, untrack). Angular, Solid, and Vue now supply native signals; React uses @tanstack/react-store with a Subscribe component and useSelector for opt-in granular rendering. V9 ships nine framework adapters, including new Preact, Alpine, and Ember adapters.
Week 29 was dominated by major framework releases and a runtime deadline that every Vercel user needs to calendar. Nuxt 4.5 shipped three simultaneous build-layer upgrades — Vite 8, Rspack 2, and a new Rsbuild-powered pipeline — alongside experimental SSR streaming, a stable error-code system, and new composables, while also announcing Nuxt 3 end-of-life on July 31, 2026. Astro 7.1 followed with finer-grained CSP directives, a format function on paginate(), and a --ignore-lock dev-server flag, plus the experimental collectionStorage: "chunked" option for large content collections.
Under the hood, two deep-dive engineering posts unpacked reactivity redesigns. TanStack Table V9 moves its entire reactivity boundary below the Table APIs, letting each of its nine framework adapters wire feature-state atoms — pagination, row selection, column sizing — directly to native signals or @tanstack/store primitives without proxy tricks. Meanwhile, Preact contributor Jovi De Croock detailed how Hydration 2.0 in Preact 11 replaces the fragile single-node resumed-hydration assumption with explicit DOM-range markers, making Suspense boundaries reliable even when they produce zero or many nodes.
On the tooling side, ESLint and Codemod announced an official partnership shipping codemods @eslint/v8-to-v9-config, @eslint/v8-to-v9-custom-rules, and a four-part@eslint/v9-to-v10 recipe, all hosted on the Codemod Registry and auto-published via GitHub Actions. Jack Herrington demonstrated how the AG-UI open protocol lets a Vercel Native (Zig + XML) desktop app and a TanStack AI server communicate over SSE with no bespoke glue code.
The hardest deadline of the week: Vercel will disable Node.js 20 in Project Settings on October 1, 2026; new deployments on Node 20 will error, and the recommended upgrade target is Node 24. Teams that cannot migrate in time can containerize via Dockerfile.vercel, though they then own security patching themselves.
Key Takeaways
Nuxt 4.5 bundles Vite 8, Rspack 2, and Rsbuild in one release and sets Nuxt 3 EOL for July 31, 2026 — run `npx nuxt upgrade --dedupe` and audit custom Vite plugins before deploying.
TanStack Table V9 and Preact Hydration 2.0 both solve the same architectural problem from different angles: granular, boundary-aware reactivity that avoids all-or-nothing re-renders and hydration mismatches.
October 1, 2026 is a hard Node.js 20 cutoff on Vercel; teams should set `engines: { "node": "24.x" }` in package.json now, or plan a container escape hatch via Dockerfile.vercel.