前端周刊 前端开发者技术周刊
在 X 上关注我们 前往 GitHub 仓库

前端周刊 #52:Meta Astryx 开源、Hydration 拖垮 LCP、TypeScript 7 与 Expo SDK 57

本周焦点:Meta 开源 Astryx(React + StyleX、150+ 组件、MCP/CLI Agent 就绪);Ivan Akulov 揭示 hydration mismatch + 字体 swap 如何把 LCP 从绿区打进红区;VS Code 渐进式迁移 TypeScript 7(tsc 36s→5s、watch 80s→20s);Jake Archibald calc-size() 定制 select 高度;React Compiler 生产踩坑实录;Next.js 用 @vercel/otel 导出 OpenTelemetry 到 Sentry;Drizzle 触顶 npm packument 100MB 限额;mapcn、shadcn Chat、termcn、Nub、Gea;Expo SDK 57(RN 0.86)、React Router 8.1、Ant Design 6.5、AI SDK v7、npm 12 pre.2。示例:`calc-size(fit-content, min(size, 12em))`、`registerOTel('next-app')`、`npx expo install expo@^57.0.0 --fix`。

本周快讯

技术文章

Meta 开源 Astryx:八年打磨的 Agent 就绪 React 设计系统

Meta 6 月将八年内部设计系统 Astryx 以 Beta 开源,底层 StyleX、消费者只需预编译 CSS。

150+ 可访问组件、十种主题、npx astryx CLI 与 MCP Server 面向 Agent 协作。

正迁 StyleX 的团队与 AI 辅助 UI 开发的公开样本。

npm install @astryxdesign/core @astryxdesign/theme-neutral
# 预编译 CSS,无需 StyleX 构建链

Hydration Mismatch 的隐藏代价:一次不匹配如何把 LCP 打进红区

3perf.com,Ivan Akulov 6 月 27 日把 hydration mismatch、字体 swap、LCP 拼成完整因果链。

mismatch 触发整页 remount 后,字体 swap 变大的文字节点被当作全新 LCP 候选,典型 4G 页面可拖到 5 秒以上。

DevTools LCP 正常而真实用户慢时,先查 mismatch 日志。

VS Code 渐进式拥抱 TypeScript 7:六个月把 tsc 从 36 秒压到 5 秒

VS Code 官方博客,6 月 26 日详述渐进式拥抱 TypeScript 7 的六个月迁移 playbook。

tsc --noEmit 从 36s → 5s,watch 从 80s → 20s,小步快跑每步可回滚。

大型 monorepo 与 Agent 编码场景的可操作 TS 7 落地参考。

# TS 6.0
tsc --noEmit -p src/tsconfig.json   # 36 seconds
# TS 7
tsgo --noEmit -p src/tsconfig.json  # 5 seconds

calc-size() 解决原生 select 下拉高度的「金发姑娘」问题

Jake Archibald 6 月文章直面可样式化 <select> 下拉面板高度难题。

min() 不接受 fit-content,需用 calc-size() 在第一个参数声明固有尺寸,第二个参数用 size 做计算。

.custom-select::picker(select) {
  min-block-size: calc-size(fit-content, min(size, 12em));
  max-block-size: calc-size(stretch, min(size, 30em));
  margin-block-end: 1em;
}

Chrome 已支持,Firefox/Safari 尚无,Jake 给出 @supports 分层回退策略。

React Compiler 生产实录:哪些 useMemo 能删、哪些删了会炸

LogRocket 博客,Isaac Okoro 6 月 29 日记录 Next.js 开启 reactCompiler: true 全过程。

RHF watch()"use no memo",Chart.js onClick 删 useCallback 会出现陈旧数据。

大部分 memo 可删,跨 React 边界的 imperative 集成必须留档说明。

Next.js 已有 OpenTelemetry 追踪:用 @vercel/otel 导出到 Sentry

Sentry 博客,Kyle Tryon 指出 Next.js 配合 @vercel/otel 可导出 OTLP 到 Sentry。

只需 registerOTel('next-app') 加两个环境变量,无需完整迁移 Sentry SDK。

已有 OTel 管线只想在 Sentry Trace Explorer 看瀑布图的轻路径。

// instrumentation.ts
import { registerOTel } from '@vercel/otel';

export function register() {
  registerOTel('next-app');
}
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://o{ORG_ID}.ingest.us.sentry.io/api/{PROJECT_ID}/integration/otlp/v1/traces
OTEL_EXPORTER_OTLP_TRACES_HEADERS=x-sentry-auth=sentry sentry_key={YOUR_PUBLIC_KEY}

Drizzle ORM 一个月无法发版:npm packument 100MB 上限的教训

vlt.io 博客,Evert Pot 6 月 23 日拆解 Drizzle 触顶 npm packument 100MB 未压缩上限。

每个版本元数据约 131KB,763 个 release 即可触顶,registry 直接拒绝新 publish。

高频发版 monorepo 必须在 CI 监控 packument 体积,否则发布通道被物理堵死。

CSS 伪类正在接管多少「本该由 JS 监听」的交互状态

Daniel Schwarz 盘点 :hover:focus-visible:checked:user-valid 等可替代 JS 监听的场景。

前瞻实验性 event-trigger 让 CSS 直接响应「某元素发生某类事件」。

追求零 JS 交互层、降低 hydration 负担的 2026 更新清单。

工具推荐

mapcn:shadcn 风格的 React 地图组件套件

Cloudflare 设计工程师 Anmoldeep Singh 发布 mapcn,MapLibre + Tailwind,shadcn 式复制分发。

标记、弹窗、图层控制等常见地图 UI,避免在 React 项目里再包重型 SDK 胶水代码。

嵌入式地图且希望与设计系统 token 统一的 SaaS 仪表盘场景。

shadcn/ui 新增 Chat 组件:Message、Bubble、Attachment

shadcn 本周补齐 AI 聊天界面刚需:MessageScrollerMessageBubbleAttachment

copy-paste 分发,与现有 shadcn 主题和 Radix 基础无缝拼接。

用 Vercel AI SDK 或自研 SSE 流式接口的省数天起点。

termcn:基于 Ink 的终端 UI 组件库

Aniket Pawar 的 termcn 把 shadcn 哲学搬进终端,基于 Ink 与 OpenTUI。

shadcn CLI 安装,提供表格、进度条、选择器等 TUI 原语。

CLI 工具、运维面板、Agent 命令行界面的快速搭建。

Nub:Zod 作者出品的 Node.js 增强工具包

Colin McDonnell(Zod 作者)Nub 不替代 Bun/Deno,在 Node 上叠加现代 DX。

更完整 TS 支持、更快包安装、改进 .env、Web 标准 Worker 等能力。

短期无法切换运行时、又希望逐步获得现代 DX 的渐进路径。

Gea:编译优先、无 VDOM 的响应式 UI 框架

Armagan Amcalar 的 Gea 走编译优先路线,JSX 编译为字符串模板,无 VDOM。

proxy store 驱动外科手术式 DOM patch,构建产物体积极小。

bundle 极敏感、逻辑线性场景的技术尝鲜,生态仍早期。

Storybook 9.1:TanStack Router/Start/Query 一等公民集成

Storybook 9.1 为 TanStack Router/Start/Query 提供官方集成路径。

Router 上下文、Start 服务端约定、Query Provider 可在 Story 层正确包裹。

TanStack Start 全栈应用「故事书断层」的标准答案。

版本发布

Expo SDK 57:React Native 0.86 无破坏性升级

Expo 官方 changelog,7 月 SDK 57 把 RN 从 0.85 升到 0.86,无用户可见破坏性变更。

expo prebuild 默认清空重建、expo-image 新增缓存 API、Reanimated 升至 4.5。

npx expo install expo@^57.0.0 --fix 即可跟上 RN patch 线。

npx expo install expo@^57.0.0 --fix
npx expo-doctor@latest

React Router 8.1:create-react-router 可安装 Agent Skill

React Router changelog,8.1 小版本有两项前端工程向更新。

create-react-router 支持安装 Agent Skill,instrumentation 新增 OTel 元数据字段。

降低 Agent 生成错误路由结构的概率。

Ant Design 6.5:包体缩小与新图标集

Ant Design changelog,6.5 聚焦体积与 Agent 友好,bundle 瘦身并新增图标。

发布 DESIGN.md 供 AI Agent 读取设计规范,与 Meta Astryx MCP 思路形成对照。

中后台项目低风险补丁升级,DESIGN.md 值得纳入 RAG 知识库。

Vercel AI SDK v7:统一多模型 Provider 抽象

Vercel 发布 AI SDK v7,在 v6 流式与 Tool Calling 基础上统一多 Provider 接口。

简化 OpenAI、Anthropic、Google 等模型切换与结构化输出。

Next.js 全栈 + AI 功能评估从自研 fetch 迁移的节点。

npm 12.0.0-pre.2:更严格的 .npmrc 与 install script 默认策略

npm/cli GitHub release,12.0.0-pre.2 继续推进默认更安全路线。

未识别 .npmrc key 直接报错。install script 默认禁用进入 pre 阶段。

CI 用 npm@12 提前修 .npmrc 拼写与 allowScripts 白名单。

Downshift 9.4:修复 React Compiler 兼容性

Downshift 9.4 专门修复与 React Compiler 的兼容问题。

无头 autocomplete/combobox/select 原语库计划开启 Compiler 的阻塞项补丁。

依赖 Downshift 构建可访问下拉且计划开 Compiler 的项目应评估升级。