JS frameworks, React/Vue/Svelte, and runtime updates Compiled for immediate developer deployment.
calendar_todaysummarizeWeek 5-2026
article
Improving Single Executable Application Building for Node.js
TAG: DEEP DIVE
Node.js contributor Joyee Cheung details how she moved Single Executable Application (SEA) building directly into Node.js core, eliminating the dependency on the unmaintained external tool nodejs/postject. The new --build-sea flag, shipped in v25.5.0, consolidates what was previously a three-step workflow — copy the binary, generate a blob with --experimental-sea-config, inject with postject — into a single command. Under the hood, the change ports injection logic from postject into a new src/node_sea_bin.cc, integrating the LIEF binary-manipulation library as a static dependency that adds only ~5 MB to the binary size. The post covers the archaeology of SEA development since v19.7.0, the challenge of porting LIEF's breaking API changes, and the gyp build-system integration required to build LIEF without CMake.
Node.js 25.5.0 ships the new --build-sea flag contributed by Joyee Cheung (PR #61167), which consolidates Single Executable Application building into a single Node.js core command, replacing the previous multi-step postject workflow. The release also adds LIEF as a bundled dependency to power the new injection logic. Other notable additions include an ignore option for fs.watch (Matteo Collina), SQLite defensive mode enabled by default and new prepare options, test_runner support for expected-to-fail test cases, and root certificate updates to NSS 3.119. npm is upgraded to 11.8.0, ICU to 78.2, SQLite to 3.51.2, and ada to v3.4.0.
Bun v1.3.7 delivers a wide sweep of performance improvements and new APIs. Buffer.from() with arrays is up to 50% faster, Buffer.swap16()1.8x faster, and Buffer.swap64()3.6x faster via CPU intrinsics. A JavaScriptCore engine upgrade brings faster async/await, array.flat(), string.padStart/padEnd, and ARM64ccmp instruction chains. New built-in APIs include Bun.wrapAnsi() (33–88x faster than the wrap-ansi npm package), Bun.JSON5.parse/stringify, Bun.JSONL.parse/parseChunk for streaming newline-delimited JSON, and --cpu-prof-md / --heap-prof-md flags for Markdown-formatted profiling reports. The release also fixes over 60 bugs across node:http2, fetch, bun:ffi, bun install, Bun.serve(), and Windows large-file (>4 GB) handling.
ESLint v10.0.0-rc.2 released - ESLint - Pluggable JavaScript Linter
TAG: RELEASE
ESLint v10.0.0-rc.2 is the second release candidate for the upcoming major version, published to gather community feedback before the final release. This RC fixes a regression in the core strict rule's global mode report range, and fully removes the LegacyESLint and FlatESLint exports from the /use-at-your-own-risk entrypoint — previously they were exported as null in earlier v10 prereleases. An updated esquery dependency is also included. The release is installable via npm i eslint@next or by pinning eslint@10.0.0-rc.2, and a migration guide is available for teams navigating breaking changes.
You probably don't need useCallback here · Fotis Adamakis
TAG: OPINION
Fotis Adamakis argues that useCallback and useMemo are widely overused in React codebases — often added by AI tooling — without providing real performance benefit. The article explains that re-renders are cheap by default and neither hook prevents a component from re-rendering; they only memoize a value or function reference. useMemo genuinely helps only when a calculation is expensive or when reference stability is needed to let React.memo skip renders. useCallback is only justified when passing callbacks to truly expensive memoized children, or when a function is a useEffect dependency. Empty dependency arrays are flagged as a common source of stale-closure bugs.
The February 2026 Svelte roundup covers new features across Svelte 5 and SvelteKit. Svelte 5.47.0 adds support for customizing <select> elements with CSS and rich HTML content in modern browsers. Version 5.48.0 exports a lightweight parseCss CSS AST parser from svelte/compiler. SvelteKit 2.50.0 introduces a breaking change: buttonProps is removed from experimental remote form functions in favor of a new as('submit', 'register') API. The adapter-node5.5.0 release adds environment-variable configuration for keepAliveTimeout and headersTimeout, while adapter-vercel6.3.1 routes remote function calls under /_app/remote for observability.
Learn use() and async React from core team member Ricky Hanlon · Learn With Jason
React core team member Ricky Hanlon joins Jason Lengstorf for a live pair-programming session building a to-do app that demonstrates async React APIs. Starting from a traditional useEffect + useState + "dirty flag" data-fetching pattern, the session incrementally introduces the use() hook (analogous to client-side await), Suspense boundaries for declarative loading states, useTransition to keep the UI non-blocking during mutations, and useOptimistic for instant optimistic updates on each list item. Hanlon also explains how wrapping state updates in startTransition after an await prevents unintended suspense boundary flashes, and previews a new GitHub working group (reactwg/async-react) focused on getting these patterns integrated into data-fetching and component libraries.
Improving Single Executable Application Building for Node.js
Node.js contributor Joyee Cheung details how she moved Single Executable Application (SEA) building directly into Node.js core, eliminating the dependency on the unmaintained external tool nodejs/postject. The new --build-sea flag, shipped in v25.5.0, consolidates what was previously a three-step workflow — copy the binary, generate a blob with --experimental-sea-config, inject with postject — into a single command. Under the hood, the change ports injection logic from postject into a new src/node_sea_bin.cc, integrating the LIEF binary-manipulation library as a static dependency that adds only ~5 MB to the binary size. The post covers the archaeology of SEA development since v19.7.0, the challenge of porting LIEF's breaking API changes, and the gyp build-system integration required to build LIEF without CMake.
Learn use() and async React from core team member Ricky Hanlon · Learn With Jason
React core team member Ricky Hanlon joins Jason Lengstorf for a live pair-programming session building a to-do app that demonstrates async React APIs. Starting from a traditional useEffect + useState + "dirty flag" data-fetching pattern, the session incrementally introduces the use() hook (analogous to client-side await), Suspense boundaries for declarative loading states, useTransition to keep the UI non-blocking during mutations, and useOptimistic for instant optimistic updates on each list item. Hanlon also explains how wrapping state updates in startTransition after an await prevents unintended suspense boundary flashes, and previews a new GitHub working group (reactwg/async-react) focused on getting these patterns integrated into data-fetching and component libraries.
Node.js 25.5.0 ships the new --build-sea flag contributed by Joyee Cheung (PR #61167), which consolidates Single Executable Application building into a single Node.js core command, replacing the previous multi-step postject workflow. The release also adds LIEF as a bundled dependency to power the new injection logic. Other notable additions include an ignore option for fs.watch (Matteo Collina), SQLite defensive mode enabled by default and new prepare options, test_runner support for expected-to-fail test cases, and root certificate updates to NSS 3.119. npm is upgraded to 11.8.0, ICU to 78.2, SQLite to 3.51.2, and ada to v3.4.0.
Bun v1.3.7 delivers a wide sweep of performance improvements and new APIs. Buffer.from() with arrays is up to 50% faster, Buffer.swap16()1.8x faster, and Buffer.swap64()3.6x faster via CPU intrinsics. A JavaScriptCore engine upgrade brings faster async/await, array.flat(), string.padStart/padEnd, and ARM64ccmp instruction chains. New built-in APIs include Bun.wrapAnsi() (33–88x faster than the wrap-ansi npm package), Bun.JSON5.parse/stringify, Bun.JSONL.parse/parseChunk for streaming newline-delimited JSON, and --cpu-prof-md / --heap-prof-md flags for Markdown-formatted profiling reports. The release also fixes over 60 bugs across node:http2, fetch, bun:ffi, bun install, Bun.serve(), and Windows large-file (>4 GB) handling.
ESLint v10.0.0-rc.2 released - ESLint - Pluggable JavaScript Linter
ESLint v10.0.0-rc.2 is the second release candidate for the upcoming major version, published to gather community feedback before the final release. This RC fixes a regression in the core strict rule's global mode report range, and fully removes the LegacyESLint and FlatESLint exports from the /use-at-your-own-risk entrypoint — previously they were exported as null in earlier v10 prereleases. An updated esquery dependency is also included. The release is installable via npm i eslint@next or by pinning eslint@10.0.0-rc.2, and a migration guide is available for teams navigating breaking changes.
You probably don't need useCallback here · Fotis Adamakis
Fotis Adamakis argues that useCallback and useMemo are widely overused in React codebases — often added by AI tooling — without providing real performance benefit. The article explains that re-renders are cheap by default and neither hook prevents a component from re-rendering; they only memoize a value or function reference. useMemo genuinely helps only when a calculation is expensive or when reference stability is needed to let React.memo skip renders. useCallback is only justified when passing callbacks to truly expensive memoized children, or when a function is a useEffect dependency. Empty dependency arrays are flagged as a common source of stale-closure bugs.
The February 2026 Svelte roundup covers new features across Svelte 5 and SvelteKit. Svelte 5.47.0 adds support for customizing <select> elements with CSS and rich HTML content in modern browsers. Version 5.48.0 exports a lightweight parseCss CSS AST parser from svelte/compiler. SvelteKit 2.50.0 introduces a breaking change: buttonProps is removed from experimental remote form functions in favor of a new as('submit', 'register') API. The adapter-node5.5.0 release adds environment-variable configuration for keepAliveTimeout and headersTimeout, while adapter-vercel6.3.1 routes remote function calls under /_app/remote for observability.
The JavaScript runtime space dominated Week 5, with Node.js shipping v25.5.0 and its headline --build-sea flag — a long-overdue consolidation that brings Single Executable Application building directly into Node.js core, eliminating the fragile dependency on the unmaintained postject tool. The deep-dive post by contributor Joyee Cheung walks through the engineering archaeology behind the change, making it the featured read of the week.
Bun v1.3.7 arrived alongside it, delivering sweeping performance wins — including a 3.6x fasterBuffer.swap64() and 33-88x faster ANSI-wrapping — plus first-class JSON5 and streaming JSONL APIs. ESLint v10.0.0-rc.2 moved the major linting overhaul closer to stable, completing the removal of legacy exports. On the React side, a core team member demonstrated async React patterns live, and an opinion piece pushed back on the AI-driven overuse of useCallback and useMemo in production codebases.
Taken together, the week painted a picture of a JavaScript ecosystem actively cleaning up technical debt — collapsing multi-step workflows into single commands, shedding legacy APIs, and rethinking which performance optimizations are actually worth the complexity they add.
Key Takeaways
Node.js 25.5.0 ships --build-sea, collapsing the three-step Single Executable Application workflow into one command.
Bun v1.3.7 delivers up to 3.6x Buffer speedups and native JSON5/JSONL APIs, widening the gap with Node.js in raw throughput.
ESLint v10 RC2 finalizes the removal of LegacyESLint exports — now is the time to run the migration guide before the final release lands.