JS frameworks, React/Vue/Svelte, and runtime updates Compiled for immediate developer deployment.
calendar_todaysummarizeWeek 6-2026
article
ESLint v10.0.0 released - ESLint - Pluggable JavaScript Linter
TAG: RELEASE
ESLint v10.0.0 is a landmark major release that permanently removes the legacy eslintrc config system — .eslintrc.* files, .eslintignore, and CLI flags like --env and --rulesdir are all gone, and /* eslint-env */ comments now report as errors. The new config-file lookup algorithm starts from each linted file's directory rather than the current working directory, enabling true monorepo multi-config setups. JSX identifiers are now properly tracked as scope references, eliminating false positives in no-unused-vars and false negatives in no-undef for JSX components. RuleTester gains assertion options requireMessage, requireLocation, and requireData to enforce stricter test definitions, plus improved stack-trace-based failure location reporting. Espree v11.1.0 and ESLint Scope v9.1.0 now ship built-in TypeScript types, replacing the @types/espree and @types/eslint-scope DefinitelyTyped packages. Node.js support is narrowed to ^20.19.0 || ^22.13.0 || >=24, and jiti < 2.2.0 is dropped for TypeScript config loading.
Deno Deploy has reached general availability, offering zero-config continuous deployment for any JavaScript or TypeScript framework — SvelteKit, Next.js, Astro, and others — with automatic framework detection and framework-specific build commands. Every GitHub pull request gets its own isolated preview environment with a dedicated database, and the new `deno deploy` CLI subcommand enables quick terminal-driven deploys. Built-in database support now extends beyond Deno KV to Postgres, with free provisioning available via a Prisma partnership and automatic per-PR environment variable management. The `--tunnel` flag lets developers run locally while pulling centrally managed env vars from Deploy and exposing a public shareable URL. Observability is automatic for all hosted projects: logs, traces, and metrics are captured for `console.log`, `fetch`, HTTP, V8 events, GC, and IO — all request-correlated. The free plan includes 1 million requests per month, 100 GB egress, and 15 CPU hours. Alongside GA, Deno also announced Deno Sandbox, a new primitive for spinning up Linux microVMs that boot in under one second for securely executing programmatically generated code.
Explicit resource management in JavaScript - Matt Smith
TAG: DEEP DIVE
JavaScript's new Explicit Resource Management proposal brings C#- and Rust-style deterministic cleanup to the language via two new keywords: using for synchronous resources and await using for asynchronous ones. Resources opt in by implementing Symbol.dispose or Symbol.asyncDispose, and cleanup is tied to lexical scope rather than control flow — when a using declaration goes out of scope, disposal runs automatically, in reverse declaration order, regardless of whether an exception was thrown. Stacking multiple resources (e.g., a file handle and a lock) becomes a clean two-liner instead of nested try/finally blocks with order-sensitive cleanup. For cases that don't map neatly to a block scope, DisposableStack and AsyncDisposableStack offer an imperative escape hatch. The proposal is applicable well beyond the backend: Web Streams, navigator.locks, IndexedDB transactions, and observer subscriptions all benefit. As of early 2026, Chrome 123+, Firefox 119+, and Node.js 20.9+ support the feature; Safari support is still pending.
Bun v1.3.9 introduces bun run --parallel and bun run --sequential for running multiple package.json scripts concurrently or in order, with Foreman-style prefixed output and full --filter/--workspaces support. mock() and spyOn() in bun:test now implement Symbol.dispose, enabling the using keyword to auto-restore mocks at scope exit without manual mockRestore() calls. The NO_PROXY environment variable is now honored even when a proxy is explicitly passed to fetch() or new WebSocket(). ESM bytecode compilation is now supported via --bytecode --format=esm. On the performance front, Bun.Markdown gains 3–15% faster rendering through SIMD-accelerated HTML-escape scanning, Bun.markdown.react() is 7–28% faster after caching common HTML tag strings, and JavaScriptCore received SIMD-accelerated RegExp prefix search, a ~3.9x speedup for fixed-count non-capturing parentheses via JIT, and DFG/FTL intrinsics for String#startsWith (up to 5.76x), Set#size (2.24x), and Map#size (2.74x).
use(): The Hook That Breaks the Rules (On Purpose)
TAG: TUTORIAL
Sascha Becker's deep dive into React 19's use() hook explains how it eliminates the canonical useState + useEffect + cancelled-flag data-fetching boilerplate by reading a Promise directly at render time and delegating loading and error states to <Suspense> and <ErrorBoundary> boundaries. Unlike every other hook, use() can be called inside conditionals and loops — React's linter knows about this exception. The article highlights a critical caching pitfall: calling use(fetchUser(id)) directly in a component creates a new Promise on every render, causing an infinite suspension loop; the fix is to pass a stable promise reference from a Server Component or use a module-level Map cache. Four stabilization strategies are compared: parent/Server Component creation, a 5-line Map cache, React's cache() function for server-side deduplication, and libraries like TanStack Query for complex client state. A practical three-step migration path from useEffect-based fetching and a decision matrix for when each approach applies round out the guide.
webpack's Technical Steering Committee has published its 2026 roadmap, with native CSS Modules support (via the existing `experimental.css` option) expected to land in webpack core around February/March and become non-experimental in webpack 6, eliminating the need for `mini-css-extract-plugin`. A new `universal` target is in progress that will compile output as pure ESM capable of running across Node.js, Deno, Bun, and the browser — CommonJS inputs will be wrapped automatically. Native TypeScript transpilation without `ts-loader` is planned, following the v5.105 addition of tsconfig path resolution. HTML entry-point support — currently requiring `html-webpack-plugin` — will be integrated into core. A lazy barrel optimization inspired by Rspack is under evaluation to skip building unused re-exported modules in side-effect-free barrel files. The team also plans to merge `webpack-dev-middleware` and `webpack-hot-middleware`, unify four separate minimizer plugins into one `minimizer-webpack-plugin`, and explore a formal Multithreading API inspired by `thread-loader`. All of this feeds toward the eventual webpack 6 release.
Wes Bos and Scott Tolinski survey the gaps in the modern web platform across four areas: DOM primitives, JavaScript syntax, browser APIs, and CSS. On the primitives front, they highlight the newly shipped customizable <select>, work-in-progress combo box support from Open UI, native tabs, and styled file-upload/toggle inputs. For JavaScript, they discuss the long-stalled pipe operator (Stage 2, last updated three years ago) and native TypeScript type annotations ("types as comments" proposal). Wanted browser APIs include a cookie-consent API to replace dark-pattern banners, document.getElementByText(), a native sync/CRDT protocol, and better local-AI access that could route inference to on-device models. CSS wishlist items include animation speed in pixels-per-second and a "CSS strict mode" to shed backwards-compat baggage. They also touch on why Bluetooth and Web Serial haven't reached cross-browser standards (Safari and Firefox non-implementation), and the current state of Chrome's local AI model experiment.
ESLint v10.0.0 released - ESLint - Pluggable JavaScript Linter
ESLint v10.0.0 is a landmark major release that permanently removes the legacy eslintrc config system — .eslintrc.* files, .eslintignore, and CLI flags like --env and --rulesdir are all gone, and /* eslint-env */ comments now report as errors. The new config-file lookup algorithm starts from each linted file's directory rather than the current working directory, enabling true monorepo multi-config setups. JSX identifiers are now properly tracked as scope references, eliminating false positives in no-unused-vars and false negatives in no-undef for JSX components. RuleTester gains assertion options requireMessage, requireLocation, and requireData to enforce stricter test definitions, plus improved stack-trace-based failure location reporting. Espree v11.1.0 and ESLint Scope v9.1.0 now ship built-in TypeScript types, replacing the @types/espree and @types/eslint-scope DefinitelyTyped packages. Node.js support is narrowed to ^20.19.0 || ^22.13.0 || >=24, and jiti < 2.2.0 is dropped for TypeScript config loading.
Wes Bos and Scott Tolinski survey the gaps in the modern web platform across four areas: DOM primitives, JavaScript syntax, browser APIs, and CSS. On the primitives front, they highlight the newly shipped customizable <select>, work-in-progress combo box support from Open UI, native tabs, and styled file-upload/toggle inputs. For JavaScript, they discuss the long-stalled pipe operator (Stage 2, last updated three years ago) and native TypeScript type annotations ("types as comments" proposal). Wanted browser APIs include a cookie-consent API to replace dark-pattern banners, document.getElementByText(), a native sync/CRDT protocol, and better local-AI access that could route inference to on-device models. CSS wishlist items include animation speed in pixels-per-second and a "CSS strict mode" to shed backwards-compat baggage. They also touch on why Bluetooth and Web Serial haven't reached cross-browser standards (Safari and Firefox non-implementation), and the current state of Chrome's local AI model experiment.
Deno Deploy has reached general availability, offering zero-config continuous deployment for any JavaScript or TypeScript framework — SvelteKit, Next.js, Astro, and others — with automatic framework detection and framework-specific build commands. Every GitHub pull request gets its own isolated preview environment with a dedicated database, and the new `deno deploy` CLI subcommand enables quick terminal-driven deploys. Built-in database support now extends beyond Deno KV to Postgres, with free provisioning available via a Prisma partnership and automatic per-PR environment variable management. The `--tunnel` flag lets developers run locally while pulling centrally managed env vars from Deploy and exposing a public shareable URL. Observability is automatic for all hosted projects: logs, traces, and metrics are captured for `console.log`, `fetch`, HTTP, V8 events, GC, and IO — all request-correlated. The free plan includes 1 million requests per month, 100 GB egress, and 15 CPU hours. Alongside GA, Deno also announced Deno Sandbox, a new primitive for spinning up Linux microVMs that boot in under one second for securely executing programmatically generated code.
Explicit resource management in JavaScript - Matt Smith
JavaScript's new Explicit Resource Management proposal brings C#- and Rust-style deterministic cleanup to the language via two new keywords: using for synchronous resources and await using for asynchronous ones. Resources opt in by implementing Symbol.dispose or Symbol.asyncDispose, and cleanup is tied to lexical scope rather than control flow — when a using declaration goes out of scope, disposal runs automatically, in reverse declaration order, regardless of whether an exception was thrown. Stacking multiple resources (e.g., a file handle and a lock) becomes a clean two-liner instead of nested try/finally blocks with order-sensitive cleanup. For cases that don't map neatly to a block scope, DisposableStack and AsyncDisposableStack offer an imperative escape hatch. The proposal is applicable well beyond the backend: Web Streams, navigator.locks, IndexedDB transactions, and observer subscriptions all benefit. As of early 2026, Chrome 123+, Firefox 119+, and Node.js 20.9+ support the feature; Safari support is still pending.
Bun v1.3.9 introduces bun run --parallel and bun run --sequential for running multiple package.json scripts concurrently or in order, with Foreman-style prefixed output and full --filter/--workspaces support. mock() and spyOn() in bun:test now implement Symbol.dispose, enabling the using keyword to auto-restore mocks at scope exit without manual mockRestore() calls. The NO_PROXY environment variable is now honored even when a proxy is explicitly passed to fetch() or new WebSocket(). ESM bytecode compilation is now supported via --bytecode --format=esm. On the performance front, Bun.Markdown gains 3–15% faster rendering through SIMD-accelerated HTML-escape scanning, Bun.markdown.react() is 7–28% faster after caching common HTML tag strings, and JavaScriptCore received SIMD-accelerated RegExp prefix search, a ~3.9x speedup for fixed-count non-capturing parentheses via JIT, and DFG/FTL intrinsics for String#startsWith (up to 5.76x), Set#size (2.24x), and Map#size (2.74x).
use(): The Hook That Breaks the Rules (On Purpose)
Sascha Becker's deep dive into React 19's use() hook explains how it eliminates the canonical useState + useEffect + cancelled-flag data-fetching boilerplate by reading a Promise directly at render time and delegating loading and error states to <Suspense> and <ErrorBoundary> boundaries. Unlike every other hook, use() can be called inside conditionals and loops — React's linter knows about this exception. The article highlights a critical caching pitfall: calling use(fetchUser(id)) directly in a component creates a new Promise on every render, causing an infinite suspension loop; the fix is to pass a stable promise reference from a Server Component or use a module-level Map cache. Four stabilization strategies are compared: parent/Server Component creation, a 5-line Map cache, React's cache() function for server-side deduplication, and libraries like TanStack Query for complex client state. A practical three-step migration path from useEffect-based fetching and a decision matrix for when each approach applies round out the guide.
webpack's Technical Steering Committee has published its 2026 roadmap, with native CSS Modules support (via the existing `experimental.css` option) expected to land in webpack core around February/March and become non-experimental in webpack 6, eliminating the need for `mini-css-extract-plugin`. A new `universal` target is in progress that will compile output as pure ESM capable of running across Node.js, Deno, Bun, and the browser — CommonJS inputs will be wrapped automatically. Native TypeScript transpilation without `ts-loader` is planned, following the v5.105 addition of tsconfig path resolution. HTML entry-point support — currently requiring `html-webpack-plugin` — will be integrated into core. A lazy barrel optimization inspired by Rspack is under evaluation to skip building unused re-exported modules in side-effect-free barrel files. The team also plans to merge `webpack-dev-middleware` and `webpack-hot-middleware`, unify four separate minimizer plugins into one `minimizer-webpack-plugin`, and explore a formal Multithreading API inspired by `thread-loader`. All of this feeds toward the eventual webpack 6 release.
This week the JavaScript tooling ecosystem delivered two landmark releases. ESLint v10.0.0 finally cuts the cord on the legacy eslintrc config system — all .eslintrc.* files, .eslintignore, and related CLI flags are gone for good, replaced by a file-proximity-based config lookup that genuinely unlocks monorepo setups. JSX scope tracking is also fixed at last, eliminating years of false positives in no-unused-vars. Meanwhile, Deno Deploy reached general availability with zero-config framework detection, per-PR isolated preview environments backed by Postgres, and a free tier covering one million requests per month.
Beyond releases, Bun v1.3.9 landed substantial performance wins — SIMD-accelerated Markdown rendering, up to 5.76x speedup for String#startsWith via JIT intrinsics — and introduced using-keyword support for auto-restoring mocks in bun:test. The webpack TSC published its 2026 roadmap charting a path toward native CSS Modules, a universal ESM output target, and built-in TypeScript transpilation, all feeding toward webpack 6. On the language side, a detailed exploration of the Explicit Resource Management proposal showed how using and await using bring deterministic scope-tied cleanup to file handles, locks, and Web Streams — already shipping in Chrome 123+ and Node 20.9+.
React 19's unconventional use() hook also drew serious attention: it reads Promises directly at render time, delegating loading and error states to Suspense and ErrorBoundary boundaries — but only when a stable Promise reference is provided, not a freshly constructed one per render. The Syntax podcast rounded out the week with a candid audit of what the web platform still lacks, from a native cookie-consent API to a stalled Stage 2 pipe operator.
Key Takeaways
ESLint v10 permanently removes the eslintrc config system — migrate to flat config now or be blocked on upgrade.
Deno Deploy GA brings per-PR isolated environments with Postgres, zero config, and a generous free tier that rivals Vercel and Netlify.
React 19's use() hook eliminates data-fetching boilerplate, but passing a new Promise on every render causes an infinite Suspense loop — always stabilize the reference first.