Web前端周刊2026W33 | TanStack Form v2 Alpha、pnpm 12 Rust重写、Fastify 6.0 Alpha
TanStack Form v2 推倒重写进入 Alpha,v0 借 Next.js 16.3 实现即时导航;pnpm 12 Rust 重写零迁移进入候选发布,TanStack Table v9 稳定上线;Fastify 6.0 进入 Alpha,DeepSeek Harness 开源,TermDOM 用 HTML/CSS/DOM 构建终端 UI。
⚛️ React
TanStack Form v2 进入 Alpha
TanStack Form v1 只维持了不到一年,维护者就将整个库推倒重写。一年的生产环境反馈精确暴露了用户卡住的地方——事件驱动的验证器以及其他补丁版本无法修复的摩擦点——从而推动这次重写走向更快的运行时性能和更安全的类型。这篇 Alpha 版导览涵盖 v1 API 中保持不变的部分、重新设计的 API 如何解决最令人头疼的部分,以及团队处理第一批 issue 期间可以期待什么。
将大型 Flow Monorepo 迁移到 TypeScript
Yelp 正在将超过百万行的 Flow monorepo 迁移到 TypeScript,遵循一条铁律:绝不关闭类型检查,也绝不批量插入忽略注释,因为代码一旦失去类型检查器的覆盖就几乎再也无法恢复。这一约束同时排除了一次性大规模重写和代码冻结两条路,迫使采用渐进式迁移——让 Flow 和 TypeScript 在同一仓库中共存,在生产环境中运行,同时不损失类型安全。文章涵盖了 2021 年 Flow 团队转向 Facebook 内部需求后迁移范围的收缩,以及整个过程中如何维持类型完整性。
让 v0 中的页面导航即时响应
让 v0 中生产环境导航提速的不是 Vercel 工程师,而是一个编码代理——它编写失败的测试、修复每个慢速路由,并用一个新 Skill 验证结果。像 v0 这样的动态、个性化应用此前没有实现即时导航的路径,因为 Next.js 只提供静态渲染工具,要求把数据抓取或渲染代码移出客户端。文章介绍了 Next.js 16.3 通过 Suspense 或“use cache”实现的浏览器缓存预渲染——动态应用首次能够利用 Partial Prerendering——以及测试如何断言慢速导航,Skill 如何自动化整个闭环。
把引用稳定性变成一种类型
引用稳定性在 TypeScript 中是隐形的:一个类型为 Item[] 的 prop 描述了形状,却无法说明该引用能否在下次渲染后存续,于是被 memo 化的子组件会在新的数组字面量上悄然重新渲染。每个 (P)React 代码库都在这里泄漏数小时——堆满 useMemo 和 useCallback 脚手架、静默关闭 exhaustive-deps 警告,以及祈祷 props 保持稳定。一个 phantom-brand 的 Stable<T> 类型能把这种意图写进类型本身,这篇文章解释了为什么一个唯一 symbol 胜过 _stable 字符串键,以及“稳定”作为优化契约到底意味着什么。
GTKX 1.0:面向 Linux 的 React 框架
写 JSX 就能得到原生 Linux 桌面应用:GTKX 1.0 把你的 React 组件直接渲染进 GTK4 的 GObject 实例,不嵌入任何浏览器。原生 GTK 开发需要手写命令式代码,让静态的 GtkBuilder XML 树与状态保持同步;而 JavaScript 通往桌面的路径意味着 GJS——一个与 npm 隔绝的运行时——或者把整个桌面包进浏览器。文章演示了用 npm create gtkx 脚手架搭建项目和计数器示例,让 React 开发者看到无需浏览器的桌面,也让 GTK 开发者看到在不离开平台的前提下获得重渲染、Fast Refresh 和 npm。
kbar 1.0:为 React 应用提供 Cmd+K 命令菜单
一个功能完整的命令菜单只需几分钟就能接入 React 站点,让用户通过单个键盘快捷键 cmd+k 触发任何基于点击的操作。Spotlight 和 Linear 等命令面板已经证明了这一模式,但大多数应用仍把操作藏在菜单和点击背后,键盘优先的用户必须费力寻找。kbar 处理了最困难的部分——单个 provider、把命令映射到任何东西的 action 模型,以及高性能的搜索结果渲染——同时让菜单的每一个方面都可以完全自定义。
Liquid Gooey: Liquid/Gooey Effects for React
👥 The Next.js team (now including Dan Abramov and...
👥 Next.js 团队(现已包括 Dan Abramov 和 Pete Hunt)将于下周二(8 月 18 日)在 Reddit 举行一场 AMA(Ask Me Anything)。你可以提前在这个帖子里发布你的问题。
Biome 2.5.8 is out with a new useReactCompiler rul...
🇫🇷 React Native Connection , the French React Na...
React Hook Form 7.85.0
Motion 13.1
Motion 13.1 引入 Toast 堆叠:传入的浮层通知被展开成一摞缩放的卡片,由单个共享 spring 驱动——一套物理系统协调所有 toast。手动协调多条通知通常意味着每条通知各自按自己的时序动画,产生尴尬的重叠和破损的堆叠;共享 spring 能在 toast 进出场时保持整摞通知的连贯。该版本涵盖 Motion UI 0.0.2 的 Toast 堆叠,以及 Motion、Motion+ 和 Motion AI Kit 的更新,包括发布前由代理评分的动画修复。
🟨 JavaScript
Kitesurf: Cloudflare's Agent-First Browser in V8 Isolates
JavaScript 内部的渐进增强
渐进增强并不止于 HTML 等待 JavaScript——它在 JavaScript 内部同样适用:应用就绪前触发的 drop 事件会让浏览器直接导航离开页面。在 2G 拥堵的列车网络上,作者的文字阅读器从 esm.sh 导入解析器和 highlightjs,一个 600kB 的压缩包,因此处理程序加载完成前拖入文件会被静默当作浏览器的默认“打开文件”操作。文章展示了修复方案——在模块就绪前用 Loading 指示器捕捉用户意图——并通过节流速度下的前后对比视频呈现。
TanStack Table v9:更快、更模块化的基础
经过两年多断断续续的开发,TanStack Table v9 终于稳定发布——这是一次基于 tree-shakable 插件系统和 TanStack Store 驱动的状态管理的大规模重写,应用只需打包自己真正用到的表格功能。重写一个成熟库的内部结构有破坏既有应用依赖的 API 和行为之险,但新架构足够灵活,团队在 beta 期间反而加速了功能增长,而不是停滞在重构上。发布说明详述了新架构、扩展后的功能集,以及 v9 中上线的改进和修复。
pnpm 12(Rust 重写)进入候选发布
对最广泛使用的 Node.js 包管理器做的一次彻底 Rust 重写,却带着零迁移负担发布:pnpm 12 保留了 pnpm 11 的每一个命令、标志、设置和 lockfile 格式。只有四个行为真正改变——一个被移除的标志直接报错、全局安装的 node、deno 或 bun 现在遵循当前项目锁定的版本(消除了独立版本管理器的需求),而 git specifier 变成与传输无关的标识,因此解析器永远不会记录 SSH URL——在 pnpm 11 中这些 URL 会在没有作者密钥的机器上悄然破坏安装。这篇文章汇总了全部四个差异,包括如何重新解析旧版 pnpm 写入的 lockfile。
Bun 1.4 在 𝕏 上持续预告新特性
Bun 正在把 SIMD 加速的 XML 解析器直接内置进运行时,作为即将到来的 1.4 版本中的 Bun.XML.parse——解析通常需要安装一个库,如今变成内置能力。这条预告重新点燃了意见分裂的社区:有人调侃 1.4 竟然被 XML 解析这种小事拖住,也有人怀疑 SIMD 面对大型 RSS 源是否撑得住,还是只是跑分秀。这个帖子的评论区追踪哪些被预告的特性最终入选(XML 已入选,FTP 仍待定),以及哪些基准测试才真正有意义。
Deno 2.9.5
Deno 2.9.5 悄然落地一个实验性 QuickJS 后端,用更轻量、启动更快的引擎替换 V8 这个重型引擎。V8 的内存占用和冷启动成本长期让 Deno 的全栈野心在边缘和 serverless 工作负载上难以落地。该版本将新引擎与 Blob/Body textStream()、workspace 作用域的 --members 任务运行,以及一波 node:dns 和 web-streams 兼容性修复配套发布。
SolidStart v2
SolidStart v2 稳定发布——其最大的架构动作是删掉自己的构建层,用 Vite 的 Environment API 替换 Vinxi 自定义管道。全栈 Solid 应用此前被框架特定的构建抽象挡在后面,阻碍了插件兼容性和 Vite 主版本升级;如今直接构建在 Vite 8 之上,解锁了 Rolldown 驱动的工具链、Tailwind CSS v4 支持,以及 Nitro v3、Cloudflare 和 Netlify 的直接部署插件集成。公告介绍了简化后的架构、发布当天就兼容 Vite 9,以及从 v1 到 v2 的一键迁移——配置从 app.config.ts 移到 vite.config.ts,另有 Node.js 24+ 和包导入变更需要注意。
Preact 11 Release Candidate
devalue 5.9
JSON.stringify 遇到循环引用会抛错、丢弃 promise,而 devalue 两者都能序列化——且输出比 JSON 本身更紧凑。把服务端渲染的状态送进浏览器意味着要携带 JSON 无法表示的值,用 eval 复活它们会撕开 XSS 漏洞,手工解决方案又让每次页面加载膨胀。文章介绍了 devalue 的双 API——uneval 生成最紧凑的可执行代码,stringify/parse 提供安全的复活——外加面向 promise 密集载荷的 stringifyAsync,以及只复活更大 JSON 文档中某一小块的 unflatten。
Svelte Select 6.0
Svelte Select 6.0 要求 Svelte 5,并在 runes 之上重建自身——传统的 createEventDispatcher 事件接线变成普通回调 props,命名 slot 变成 snippet props。升级不是无脑替换:使用者必须把每个事件和 slot 绑定迁移到新的基于 props 的 API,而列表定位现在依赖 floating-ui 的包入口,这是经典的构建错误来源。README 记录了完整的 props 表面——值模式、多选、过滤、防抖和加载状态——以及示例、在线 REPL 和迁移指南。
fuzzysort 4.0
fuzzysort 4.0 能在 1 毫秒内匹配 13,000 个文件,且零依赖——一个速度超过重型替代品的迷你模糊搜索引擎。朴素的子串匹配让用户淹没在无关结果里,而传统模糊搜索库为了速度牺牲相关性;带可配置阈值的干净排序,才是区分可用搜索与噪音的关键。文档介绍了 API:带 limit 和 threshold 的 go()、用于查询多个嵌套 key 的 snapshot()、通过 scoreFn 自定义评分,以及同时面向纯字符串和 React 的单行结果高亮。
GTKX 1.0
用 React 和 TypeScript 编写原生 Linux 桌面应用——useState 和 onClicked 之类的普通 hooks 直接驱动真实的 GTK4 控件,完全不涉及浏览器或 webview。GTK4 的 GtkBuilder XML 能很好地布局静态界面,但当应用状态变化时没有任何东西重新渲染,工作时也没有热重载,这让 GNOME 技术栈缺少一层声明式抽象。GTKX 恰好补上这一缺失层及其工具链:映射到 GTK4 控件的内置 React 元素、CLI 生成的按项目绑定,以及完整暴露而非藏在跨平台 API 背后的整套 GNOME 技术栈。
Belgie 0.40
Belgie 在 Python 内嵌入一个带权限控制的 Deno 运行时,让 AI 代理能在带显式安全边界的沙箱环境中执行 JavaScript 和 TypeScript。生成 JS/TS 代码的 Python 代理通常找不到安全的地方运行它们——subprocess 黑客手段和不受管理的运行时让跨语言执行变得脆弱,而 Python/JS 边界要求 JSON 兼容的值和清晰的工具契约。文章介绍了 Script/Runtime API、JSON 数据桥、通过 BelgieExtension 接线的 React MCP Apps,以及即插即用的 Pydantic AI 和 LangChain 集成。
js1024
参赛者必须在 1024 字节以内——不到 1 KiB 的源码——构建一个完整的 JavaScript 或 GLSL 程序。哪怕一行冗长的代码都会爆预算,迫使选手把激进的压缩工具和手工调校的字节技巧与真正的着色器艺术结合使用。文章列出了比赛时间线、安全审查规则、同行评分系统,以及参赛所需的完整压缩工具链。
Docker Sandboxes
Docker Sandboxes 让 AI 编码代理能以 YOLO 模式(--dangerously-skip-permissions)运行,零审批提示——通过把每个代理密封在一次性 microVM 里来保证安全。能安装包、运行服务、无人值守工作的代理对速度至关重要,但会暴露你的文件系统和网络;完整 VM 能隔离但成本太高,更轻量的沙箱又阻止代理需要的高级权限,比如启动自己的容器。文章介绍了 microVM 隔离模型、对 Claude Code、Copilot CLI、Codex 等的支持,以及 Docker AI Governance 如何在组织范围内强制执行同样的网络和文件系统控制。
2026-07-28 规范
MCP 正在抛弃定义它的会话状态——驱动代理工作流的协议将走向无状态,其 SDK 每月下载量已接近 5 亿次,TypeScript 和 Python 各自累计超过 10 亿。双向 initialize 握手和 Mcp-Session-Id 头位居开发者抱怨榜首,它们把每个请求钉在会话上,阻碍了大规模服务器所需的简单负载均衡和可靠性。2026-07-28 规范解释了请求/响应重新设计——_meta 中的按请求协议版本和能力、可选的 server/discover RPC——以及面向 TypeScript、Python、Go 和 C# SDK 的迁移说明。
scriptc
4ms 启动和 320KB 二进制的 TypeScript——scriptc 把普通 TS 直接编译成原生代码,不依赖 Node、V8 或嵌入式引擎,而 Node 需要约 120MB 运行时和约 35ms 才能打印一句“hello world”。矛盾在于:TypeScript 的动态生态——npm 依赖自带的 JS 和任意类型代码——抵制静态编译,而静默的错误编译将是灾难性的。scriptc 用三个明确的层级作答:默认静态编译、为无法静态化部分提供可选的大约 620KB 嵌入式引擎,以及为其余部分提供带改写提示的构建错误。文章解释了分层模型、点名每个动态位点的覆盖报告,以及与 Node 逐字节的兼容性。
🟢 Node.js
TermDOM:用 HTML、CSS 和 DOM 构建终端 UI
终端 UI 现在可以用纯 HTML、CSS 和 DOM 构建——TermDOM 把真正的布局引擎和真正的级联渲染进你的终端,DOM 节点变化时自动重绘。传统 TUI 强迫你钻进带自家布局和事件模型的专用框架,而 Web 开发者恰好已经熟悉这些原语;甚至一个 NERDTree 风格的文件浏览器也只需大约 200 行原生 DOM。这个库展示了突变驱动的绘制、支持整格对齐的 CSS 盒布局,以及任何前端框架或原生 JavaScript 都能驱动交互式 CLI。
Harness 工程:如何驾驭你的代理
没有 harness 的 LLM 调用不是代理——它只是一次事务性的推理调用,没有记忆、没有恢复能力,也无法在一次失败的工具调用后存活。这种脆弱性正是大多数代理 demo 无法上线的根因:生产级代理需要支撑持久化执行、安全沙箱、记忆系统和多代理编排的基础设施。Netflix 高级软件工程师 Scott Moss 教你用 TypeScript 构建这种生产级 harness,每节课都配有解决方案和随堂笔记。
Fastify 6.0 Enters Alpha
添加第二个中间件破坏了我们的 TypeScript 类型
两个空操作中间件以任一单个中间件都不会的方式破坏了 TypeScript:向 Inngest 客户端传入第二个中间件后,step.run 的返回类型悄悄塌缩成 {},尽管中间件代码本身什么都没做——仅仅数量就足以破坏类型。每个中间件都会组合一次静态的 Jsonify 输出变换,所以两个就意味着 Jsonify<Jsonify<T>>;运行时序列化已经序列化的数据是无害的空操作,但类型并不像应该的那样幂等,合法的代码失去了全部类型检查。文章跟随作者的侦探式排查,把组合变换追到根因并给出修复。
DeepSeek Harness:DeepSeek 新的 Node 驱动代理框架
DeepSeek 的代理 harness 让每项能力都成为可替换的插件——模型、工具、技能、会话、沙箱、存储,甚至 UI——都能在配置中重新组合,无需触碰源码。大多数代理框架硬编码了自家技术栈,换一个模型提供商或会话后端就意味着 fork 代码库,而当你看不到模型实际看到了什么时,调试一次运行全靠猜。DeepSeek Harness 基于 Cordis 插件内核构建,把每次运行都记录进追加式的会话日志——系统提示、推理、工具调用、子代理调度和上下文注入——并通过 Trajectory 视图在同一个事件流上支持恢复、fork、搜索和回放。
unbash:快速零依赖的 Bash 解析库
解析 Bash——一种以抗拒静态分析著称的语言——不需要执行,也不需要依赖,这个 TypeScript 解析器返回带类型和源码位置的 AST。Shell 工具通常要么执行脚本(有风险),要么用正则猜测结构,而 Bash 的嵌套替换、heredoc 和花括号展开经常击溃朴素的解析器,尤其面对畸形或不完整的输入时。unbash 覆盖命令、控制流、管道、重定向、赋值和嵌套替换,提供尽力而为的局部 AST 和带源码位置的错误检测,让使用者无需运行脚本就能安全地检查 shell 结构。
Drizzle 中不引入第二套系统的全文搜索
Drizzle 现在无需另起一套系统就能搜索 Postgres——官方 ParadeDB 集成把全文搜索、pgvector 检索和聚合都运行在与应用数据同一个数据库上。搜索技术栈通常被迫接一个独立引擎外加一条脆弱的同步管道,而 pg_search 扩展把查询留在你的行数据所在的地方。该集成新增了一流索引管理和完整的 ParadeDB API,示例覆盖混合搜索(RRF)、分面搜索、自动补全和 RAG。
njsscan 1.0:面向 Node 的语义感知 SAST 工具
扫描一个 Node.js 文件会浮现 160 条 semantic-grep 发现,却只有 1 条模式匹配。纯正则 SAST 会漏掉依赖上下文的缺陷,比如 njsscan 在 OWASP A1/CWE-79 下标记的 express_xss 注入,而单纯的朴素模式匹配又几乎碰不到现代 Node.js 代码。njsscan 把 libsast 的轻量模式匹配器与 semgrep 的语法感知语义搜索结合,文章介绍了它的即插即用 CLI 用法,以及包括 SARIF、SonarQube、DefectDojo、GitLab SAST 和 HTML 报告在内的 CI 就绪输出。
Hucre 1.0:零依赖的电子表格引擎
一个零依赖的电子表格引擎在最小 2KB gzip 的 tree-shakable 包中读写 XLSX、CSV、ODS、JSON 和 XML——SheetJS CE、ExcelJS 和 xlsx-js-style 等对手要带 300-500KB。事实标准的 SheetJS CE 甚至把自己从 npm 撤下,迫使 CDN tarball 安装,并把样式、图片和条件格式化锁在付费 Pro 档之后。Hucre 的并排对比展示了免费档提供的一切:原生 ESM、CSP 合规、流式处理、往返保真、边缘运行时支持和 13 种条件格式化类型。
往期精选
- Web前端周刊2026W32 | Next.js 16.3发布,React Router v8发布,Astro 7.2发布,Node.js v26.6.0发布,ioredis 6.0发布
- Web前端周刊2026W31 | TypeScript 7.0、MobX 7.0、npm发布即扫毒
- Web前端周刊2026W30 | React 19.2.8发布、Vue 3.6 RC、TypeScript 7 Go重写、ECMAScript 2026获批、Node.js 26.5.0
- 2026年8月编程语言排行榜|MATLAB 首次跌出前20
- Rust周刊2026W32 | Polonius 登 nightly、Rust 1.98 浮点 API、Rust 官方采纳 LLM 政策
- 用 Rust 重写 Bun
扫码关注「右耳朵猫AI」

浙公网安备 33010602011771号