JS frameworks, React/Vue/Svelte, and runtime updates Compiled for immediate developer deployment.
calendar_todaysummarizeWeek 28-2026
article
Rewriting Bun in Rust
TAG: RUNTIME
Bun, the JavaScript runtime with 22 million monthly downloads, has been rewritten from 535,496 lines of Zig into Rust over 11 days using 64 simultaneous Claude agents running dynamic workflows. The motivation was systematic memory safety: recurring use-after-free, double-free, and leak bugs that Zig's manual memory model couldn't prevent at scale. Rust's borrow checker and Drop trait enforce correct cleanup automatically, and the rewrite fixed 128 bugs present in v1.3.14 — including a Bun.build() leak of 3 MB per call that now levels off at ~609 MB after 2,000 builds. Binary size shrinks roughly 20% on Linux and Windows, HTTP throughput improves 2-5%, and the rewrite cost approximately $165,000 in API tokens — a fraction of the estimated year of work for three engineers. Bun v1.4.0 ships the Rust port; v1.3.14 was the last Zig release.
The React Compiler, which reached v1.0 on October 7, 2025, is a Babel plugin that rewrites components at build time with automatic memoization — eliminating the need for manual useMemo, useCallback, and React.memo in source code. Rather than inserting useMemo calls, the compiler generates a custom slot-based cache using an internal _c hook, which is cheaper than allocating closures and dependency arrays on every render. The compiler skips re-renders by caching JSX element objects themselves: when a parent's compiled output hands React an identical element reference, React bails out of the entire subtree without a memo wrapper. In production, Meta Quest Store measured up to 12% faster page loads, Sanity reported 20-30% render time reduction across 1,231 of 1,411 components, and Wakelet saw LCP drop from 2.6s to 2.4s and INP from 275ms to 240ms. Setup is a single flag in Next.js 16+ and enabled by default in Expo SDK 54+.
Ecma International approved ECMAScript 2026 on June 30, 2026, adding seven features to the language. Array.fromAsync closes the gap between synchronous Array.from and async iterators. Error.isError provides a safer alternative to instanceof Error. Math.sumPrecise eliminates floating-point accumulation errors that plagued Array.reduce sums. Uint8Array gains native toBase64, toHex, fromBase64, and fromHex methods, removing the need for third-party encoding libraries. Iterator.concat enables sequencing of multiple iterators without a custom generator. JSON.parse now passes raw source text to its reviver via a third argument, enabling lossless BigInt round-trips. Finally, Map and WeakMap gain getOrInsert, a clean upsert primitive that replaces the common has-then-set pattern.
TypeScript 7 is a native port of the TypeScript compiler to Go, delivering roughly 10x throughput improvement without changing the type system or language semantics. The team chose Go over Rust because TypeScript's internal data structures — ASTs, symbol tables, and type relationships — are full of cyclic references that Rust's ownership model is hostile to; Go's garbage collector and goroutines allowed a faithful port rather than a full redesign. Anders Hejlsberg described Go as the lowest-level language offering native output, data layout control, and cyclic data structures. Real-world numbers: VS Code type checking dropped from 17.5s to 1.3s, Slack's CI type-checking fell from 7.5 minutes to under 2 minutes, and the language server reports 80% fewer failing commands. Migration requires passing through TypeScript 6.0 first; a compatibility package @typescript/typescript6 lets monorepos migrate incrementally. The programmatic compiler API needed by Vue, Svelte, Astro, and Angular is targeted for TypeScript 7.1.
VoidZero's June 2026 recap covers the beta launch of Vite+, the unified web toolchain that integrates Vite, Vitest, Rolldown, tsdown, Oxlint, and Oxfmt under a single CLI with commands like vp dev, vp test, and vp build. Since alpha, Vite+ has shipped over a dozen versions, merged 500+ pull requests, and earned more than 1,300 public repository dependents. Vite 8.1 introduced experimental bundled dev mode for faster startup. Rolldown improved diagnostic rendering performance and added tsconfig.path alias support for .vue and .svelte files. The Oxc transformer became approximately 2.5% faster, and Oxlint gained experimental support for the Rust-based React Compiler lint rules. Community highlights include Astro 7.0 shipping with Vite 8, the first beta of Vinext (a Next.js-compatible Vite framework), and ViteConf 2026 scheduled for October 15 as a fully online event.
Unused dependencies remain in package.json after code stops importing them, while ghost (phantom) dependencies are packages imported in source but never declared — they only work because another package's transitive install hoists them into node_modules. Both issues corrupt the dependency graph, expand the supply-chain attack surface, and create fragile builds. Knip is a project-level linter that analyzes the entire repository — entry points, imports, exports, manifests, and workspace boundaries — to surface both types of issues that file-level tools like ESLint miss. Running npx knip --include unlisted catches ghost dependencies; --include dependencies finds unused ones; --fix applies removals on a feature branch. In CI, treating ghost dependencies as blocking and unused dependencies as advisory (--no-exit-code) gives a practical graduated rollout. Knip's production mode (--production) filters out test and dev-only noise to tighten production-facing analysis.
Node.js 26.5.0 ships five SEMVER-MINOR additions alongside a new releaser, Stewart X Addison. The buffer module gains blob.textStream() for streaming text from a Blob. The ESM loader adds the --experimental-import-text flag for importing text files as ES modules. The perf_hooks module can now sample event loop delay per iteration via a new API. ReadableStreamTee is exposed on the stream module, and the tls module can report negotiated TLS groups after a handshake. Other notable fixes include a crypto patch rejecting small-order EdDSA points during verification, a dgram optimization that skips dns.lookup for literal IP addresses, WHATWG stream chunk overhead reduction, and multiple VFS (virtual filesystem) bug fixes. Dependencies updated include undici 8.7.0, sqlite 3.53.3, and nghttp3 1.17.0.
This freeCodeCamp tutorial by instructor Rachel Johnson covers practical TypeScript usage inside a real React project — a hangman-style game called Assembly Endgame. The tutorial walks through scaffolding a new Vite + TypeScript project, typing useState generics (e.g., useState<string[]> for guest letters), typing functional component return values with the imported JSX.Element type, and creating custom prop types using the ComponentName + Props naming convention. It also covers more advanced patterns: typing function props with arrow-function syntax, using TypeScript's Omit utility type to derive a subset of an existing type, and importing types across files for modular typing. Each concept is reinforced with hands-on challenges on real components including GameStatus, LanguageChips, WordLetters, and Keyboard. The tutorial explicitly avoids the deprecated React.FC pattern in favor of explicit JSX.Element annotations.
Bun, the JavaScript runtime with 22 million monthly downloads, has been rewritten from 535,496 lines of Zig into Rust over 11 days using 64 simultaneous Claude agents running dynamic workflows. The motivation was systematic memory safety: recurring use-after-free, double-free, and leak bugs that Zig's manual memory model couldn't prevent at scale. Rust's borrow checker and Drop trait enforce correct cleanup automatically, and the rewrite fixed 128 bugs present in v1.3.14 — including a Bun.build() leak of 3 MB per call that now levels off at ~609 MB after 2,000 builds. Binary size shrinks roughly 20% on Linux and Windows, HTTP throughput improves 2-5%, and the rewrite cost approximately $165,000 in API tokens — a fraction of the estimated year of work for three engineers. Bun v1.4.0 ships the Rust port; v1.3.14 was the last Zig release.
This freeCodeCamp tutorial by instructor Rachel Johnson covers practical TypeScript usage inside a real React project — a hangman-style game called Assembly Endgame. The tutorial walks through scaffolding a new Vite + TypeScript project, typing useState generics (e.g., useState<string[]> for guest letters), typing functional component return values with the imported JSX.Element type, and creating custom prop types using the ComponentName + Props naming convention. It also covers more advanced patterns: typing function props with arrow-function syntax, using TypeScript's Omit utility type to derive a subset of an existing type, and importing types across files for modular typing. Each concept is reinforced with hands-on challenges on real components including GameStatus, LanguageChips, WordLetters, and Keyboard. The tutorial explicitly avoids the deprecated React.FC pattern in favor of explicit JSX.Element annotations.
The React Compiler, which reached v1.0 on October 7, 2025, is a Babel plugin that rewrites components at build time with automatic memoization — eliminating the need for manual useMemo, useCallback, and React.memo in source code. Rather than inserting useMemo calls, the compiler generates a custom slot-based cache using an internal _c hook, which is cheaper than allocating closures and dependency arrays on every render. The compiler skips re-renders by caching JSX element objects themselves: when a parent's compiled output hands React an identical element reference, React bails out of the entire subtree without a memo wrapper. In production, Meta Quest Store measured up to 12% faster page loads, Sanity reported 20-30% render time reduction across 1,231 of 1,411 components, and Wakelet saw LCP drop from 2.6s to 2.4s and INP from 275ms to 240ms. Setup is a single flag in Next.js 16+ and enabled by default in Expo SDK 54+.
Ecma International approved ECMAScript 2026 on June 30, 2026, adding seven features to the language. Array.fromAsync closes the gap between synchronous Array.from and async iterators. Error.isError provides a safer alternative to instanceof Error. Math.sumPrecise eliminates floating-point accumulation errors that plagued Array.reduce sums. Uint8Array gains native toBase64, toHex, fromBase64, and fromHex methods, removing the need for third-party encoding libraries. Iterator.concat enables sequencing of multiple iterators without a custom generator. JSON.parse now passes raw source text to its reviver via a third argument, enabling lossless BigInt round-trips. Finally, Map and WeakMap gain getOrInsert, a clean upsert primitive that replaces the common has-then-set pattern.
TypeScript 7 is a native port of the TypeScript compiler to Go, delivering roughly 10x throughput improvement without changing the type system or language semantics. The team chose Go over Rust because TypeScript's internal data structures — ASTs, symbol tables, and type relationships — are full of cyclic references that Rust's ownership model is hostile to; Go's garbage collector and goroutines allowed a faithful port rather than a full redesign. Anders Hejlsberg described Go as the lowest-level language offering native output, data layout control, and cyclic data structures. Real-world numbers: VS Code type checking dropped from 17.5s to 1.3s, Slack's CI type-checking fell from 7.5 minutes to under 2 minutes, and the language server reports 80% fewer failing commands. Migration requires passing through TypeScript 6.0 first; a compatibility package @typescript/typescript6 lets monorepos migrate incrementally. The programmatic compiler API needed by Vue, Svelte, Astro, and Angular is targeted for TypeScript 7.1.
VoidZero's June 2026 recap covers the beta launch of Vite+, the unified web toolchain that integrates Vite, Vitest, Rolldown, tsdown, Oxlint, and Oxfmt under a single CLI with commands like vp dev, vp test, and vp build. Since alpha, Vite+ has shipped over a dozen versions, merged 500+ pull requests, and earned more than 1,300 public repository dependents. Vite 8.1 introduced experimental bundled dev mode for faster startup. Rolldown improved diagnostic rendering performance and added tsconfig.path alias support for .vue and .svelte files. The Oxc transformer became approximately 2.5% faster, and Oxlint gained experimental support for the Rust-based React Compiler lint rules. Community highlights include Astro 7.0 shipping with Vite 8, the first beta of Vinext (a Next.js-compatible Vite framework), and ViteConf 2026 scheduled for October 15 as a fully online event.
Unused dependencies remain in package.json after code stops importing them, while ghost (phantom) dependencies are packages imported in source but never declared — they only work because another package's transitive install hoists them into node_modules. Both issues corrupt the dependency graph, expand the supply-chain attack surface, and create fragile builds. Knip is a project-level linter that analyzes the entire repository — entry points, imports, exports, manifests, and workspace boundaries — to surface both types of issues that file-level tools like ESLint miss. Running npx knip --include unlisted catches ghost dependencies; --include dependencies finds unused ones; --fix applies removals on a feature branch. In CI, treating ghost dependencies as blocking and unused dependencies as advisory (--no-exit-code) gives a practical graduated rollout. Knip's production mode (--production) filters out test and dev-only noise to tighten production-facing analysis.
Node.js 26.5.0 ships five SEMVER-MINOR additions alongside a new releaser, Stewart X Addison. The buffer module gains blob.textStream() for streaming text from a Blob. The ESM loader adds the --experimental-import-text flag for importing text files as ES modules. The perf_hooks module can now sample event loop delay per iteration via a new API. ReadableStreamTee is exposed on the stream module, and the tls module can report negotiated TLS groups after a handshake. Other notable fixes include a crypto patch rejecting small-order EdDSA points during verification, a dgram optimization that skips dns.lookup for literal IP addresses, WHATWG stream chunk overhead reduction, and multiple VFS (virtual filesystem) bug fixes. Dependencies updated include undici 8.7.0, sqlite 3.53.3, and nghttp3 1.17.0.
Week 28 opened with two landmark runtime announcements. Bun v1.4.0 shipped the completed rewrite from 535,496 lines of Zig into Rust — accomplished in 11 days using 64 simultaneous Claude agents — fixing 128 bugs from v1.3.14 including a 3 MB-per-call Bun.build() leak, shrinking binary size ~20%, and improving HTTP throughput 2–5%, all for roughly $165,000 in API token costs. Separately, TypeScript 7 arrived as a native Go port of the compiler, delivering ~10x throughput gains: VS Code type-checking dropped from 17.5s to 1.3s, Slack CI from 7.5 minutes to under 2 minutes, and language server failures fell 80%. Go was chosen over Rust specifically because TypeScript's AST and symbol tables are full of cyclic references that Rust's ownership model cannot handle without a full redesign.
On the language and tooling front, Ecma International ratified ECMAScript 2026 on June 30, adding seven features: Array.fromAsync, Error.isError, Math.sumPrecise, Uint8Array base64/hex methods, Iterator.concat, JSON.parse raw-source reviver, and Map/WeakMap.getOrInsert. The React Compiler v1.0, using a slot-based _c hook rather than useMemo wrappers, produced measurable production wins — Meta Quest Store saw 12% faster page loads, Sanity 20–30% render time reduction, Wakelet LCP improvement from 2.6s to 2.4s. VoidZero's Vite+ toolchain entered beta, unifying Vite, Vitest, Rolldown, Oxlint, and Oxfmt under a single CLI. Node.js 26.5.0 added blob.textStream(), an --experimental-import-text ESM flag, and a crypto patch rejecting small-order EdDSA points.
Dependency hygiene also surfaced as a theme: the Knip linter was highlighted for its ability to catch both unused and ghost (phantom) dependencies at the project level — issues that file-scoped tools like ESLint miss entirely. Its --production mode and CI-friendly --no-exit-code flag offer a graduated enforcement path.
Key Takeaways
Bun v1.4.0 completes a Zig-to-Rust rewrite that fixed 128 bugs, cut binary size ~20%, and cost ~$165K in Claude agent API tokens — a fraction of the 3-engineer-year alternative.
TypeScript 7's Go port delivers ~10x compile speed, dropping VS Code type-checking from 17.5s to 1.3s; migration requires passing through TypeScript 6.0 first, and the programmatic API for Vue/Svelte/Astro/Angular is deferred to 7.1.
ECMAScript 2026 is ratified with seven additions — including Math.sumPrecise, native Uint8Array base64/hex encoding, and Map.getOrInsert — eliminating common third-party utility patterns from standard code.