Dev weekly digest: Remix leaves React, Node 26 ships Temporal

Remix 3 drops React for its own component model. Node 26 ships Temporal and an experimental FFI. Rolldown 1.0 hits stable, Astro previews v7, Chrome ships on-device AI and Mozilla pushes back. Plus Metro 1.0 for Kotlin DI, EAS Gradle caching, and a malicious npm package squatting on TanStack.

Dev weekly digest: Remix leaves React, Node 26 ships Temporal

A release-heavy week. Remix shipped its first beta in a new direction that no longer involves React. Node.js cut a major version with the Temporal API enabled by default and quickly followed it with an experimental FFI module. Rolldown reached 1.0, Astro previewed v7, and Chrome started shipping an on-device AI Prompt API that Mozilla and others are not happy about.

1. Remix 3 enters beta — and it is no longer a React framework

Remix 3 Beta dropped this week with a full pivot: the new version is a full-stack, web-standards-first framework with its own UI component model that does not depend on React or React Router, though it still uses JSX. Re-renders are now explicit, "Frames" can be reloaded individually, and the framework no longer bundles your app. Existing Remix users on v2 should plan a migration path; React Router 7.15 also stabilizes APIs to prepare for v8.

Source: Remix 3 Beta Preview

2. Node.js 26.0 ships Temporal by default; 26.1 lands experimental FFI

Node 26.0 released with the Temporal API enabled by default, V8 14.6 (which brings Map.prototype.getOrInsert() and iterator sequencing), and Undici 8. Node 20 (Iron) hit EOL the same week, meaning every supported LTS line now runs TypeScript via type stripping without flags. Node 26.1 followed within a day with a node:ffi module behind --experimental-ffi — the first officially supported FFI in core, integrated with Node's permissions model. Building Node from source now requires a Rust toolchain because Temporal support comes from a Rust library.

Source: Node.js v26.0.0 release

3. Rolldown 1.0 hits stable

VoidZero shipped Rolldown 1.0 stable: a Rust-based JavaScript bundler with esbuild-class speed and Rollup plugin compatibility. With recent Node versions handling .ts, ESM, and JSON imports natively, Rolldown's clearest value is in production builds where you want the smallest tree-shaken artifact possible. Vite is the obvious downstream beneficiary, and tsdown 0.22 — a library bundler built on Rolldown — landed at the same time.

Source: Announcing Rolldown 1.0

4. Astro 6.2 lands with v7 alpha already in flight

Astro 6.2 shipped with a new SVG optimizer and experimental Logger and getFontFileURL() APIs. The same post previewed v7 alpha, which moves to Vite 8 and a stable Rust compiler. If you maintain Astro sites, this is the cycle to start tracking — the v7 line is the one that pulls Astro fully onto the Rolldown/Rust toolchain.

Source: Astro 6.2 release notes (with v7 alpha sneak peek)

5. Chrome 148 ships the Prompt API; Mozilla and others push back

Chrome 148 added support for the Prompt API, which exposes the on-device Gemini Nano model to web pages, alongside name-only @container queries and lazy loading for video and audio. The rollout has been controversial: Chrome silently downloads a roughly 4 GB model file without asking, and Mozilla has formally pushed back against Google's web-AI API plans. Web Application Integrity, Consistency and Transparency (WAICT) — a separate effort to cryptographically verify the JS a browser executes — also landed in Firefox Nightly behind a flag.

Source: What's new in Chrome 148

6. Malicious npm package brand-squats TanStack

Socket flagged a malicious tanstack npm package that is not owned by the TanStack organization and exfiltrates environment variables on install. If you've installed anything called tanstack recently, audit it; the legitimate packages live under the @tanstack/* scope. This sits alongside Electron 42 dropping its postinstall binary download (a response to the recent supply-chain wave) and Cloudflare/Mozilla's broader debate about whether npm Trusted Publishing actually mitigates social-engineering attacks on maintainers.

Source: Socket: Malicious npm package brand-squats TanStack

7. Metro 1.0 ships — fast Kotlin DI via a compiler plugin

Zac Sweers announced Metro 1.0.0, a multiplatform compile-time DI framework for Kotlin that reports 50–80% build-time improvements over source-generation tools like Dagger/Hilt and Anvil. For Android and Kotlin Multiplatform teams currently bleeding minutes per build to KSP/KAPT-driven DI codegen, this is the most concrete build-perf win of the week.

Source: Metro is Stable — Zac Sweers

8. Expo: SDK 55 still blocked from Expo Go on the App Store; EAS adds Gradle caching

Expo confirmed that Expo Go support for SDK 55 remains blocked pending App Store approval, so teams targeting SDK 55 still need development builds rather than Expo Go for now. The better news: EAS Build now supports Gradle caching for Android, with Expo reporting roughly 50% reduction in build times. If you run a non-trivial Expo CI pipeline, this is worth turning on this week.

Sources: Expo Go and the App Store in May 2026 · Gradle cache for Android builds

9. tsz — a TypeScript compiler written in Rust

A new project called tsz is positioning itself as a Rust-based, drop-in tsc replacement that's faster than tsgo. It's still WIP but reportedly nearly complete. Worth watching as a third entrant in the "rewrite TypeScript in a fast language" race alongside Microsoft's official Go port and existing Rust efforts. Don't migrate production yet, but it's a useful benchmark to track.

Source: tsz — TypeScript compiler in Rust

10. TanStack Form ships, and TanStack reframes RSC as a protocol

TanStack Form launched as a strongly-typed, flexible form library that fits naturally into the TanStack stack. Alongside the release, the TanStack team published a longer piece arguing that React Server Components are best understood as a protocol, not an architecture — TanStack Start now offers Composite Components that drop server-rendered fragments into client trees you're already composing, instead of forcing the Next.js-style server-owned tree model. Useful framing if you've been trying to reconcile RSC mental models across frameworks.

Sources: Introducing TanStack Form · Who Owns the Tree? RSC as a Protocol