Skip to content

React Chronicle:资料与注释

本页列出这部 Chronicle 使用的主要资料。资料按“同期代码与讨论 → 官方 RFC / 发布说明 → 参与者回忆 → 本文综合判断”的优先级组织。访问日期除特别说明外均为 2026-08-07

如何阅读这些来源

  • 同期一手资料最适合确认“当时实际合入了什么、维护者公开承诺了什么”。提交、PR 和源码可以证明实现,却不一定完整记录动机。
  • RFC 与官方文章通常同时包含动机、替代方案和迁移策略,但仍代表项目方的叙述视角。
  • 参与者回忆能补足 React 开源前的内部历史。由于它们多写于事后,本文把它们标成“参与者回忆”,不与同期提交等量齐观。
  • 本文判断是把多份材料连成因果链后的工程解释,不冒充项目方原话。

1. 起源、开源与早期设计

来源类型本文主要用途
React acknowledgements:React 的起源与 XHP、Bolt/FaxJS、SML 影响官方历史说明确认 XHP、Bolt、FaxJS、Jordan Walke 与 OCaml/SML 思想的关系。
Jordan Walke 访谈全文参与者回忆补充 FBolt、广告系统压力、函数式 UI 和 React Native 原型的内部背景。
Our First 50,000 Stars官方团队回顾补充 2013 开源前后的演讲、JSX 反应、命名与早期推广过程。
Initial public release commit 75897c2同期代码锚定 2013-05-29 初始公开版及其真实文件结构。
Why React?(2013)同期官方文章确认 React 当时对“不是 MVC、没有模板、可组合组件、重新渲染”的公开定位。
ReactCompositeComponent.js at initial release同期源码观察 createClass、mixin、生命周期协议,以及“render 不应有副作用”的早期约束。
ReactReconcileTransaction.js at initial release同期源码解释早期 reconciler 如何用 transaction 包装事件开关、DOM selection 与 mount-ready 回调。
EventPluginHub.js at initial release同期源码说明合成事件不是简单的浏览器事件别名,而是提取、排队和派发管线。

2. Flux、生态与 renderer 分离

来源类型本文主要用途
An Application Architecture For React(Flux,2014)同期官方文章确认 Flux 解决的是应用数据流,而 React core 有意维持较窄职责。
Introducing React Native(2015)同期官方文章确认“learn once, write anywhere”、原生 host view 与 React 编程模型复用。
React v0.14 release官方发布说明说明 reactreact-dom 拆包、无状态函数组件和 DOM node 返回行为的变化。
Create React App repository代码与项目史用于讨论 2016 后“零配置起步”怎样降低 React 工具链门槛。
Sunsetting Create React App(2025)官方决策说明解释 React 推荐路径为何从通用 build tool 转向 framework 或现代构建工具。

3. Fiber 重写

来源类型本文主要用途
PR #6690 — New Reconciler Infra同期 PR / 代码Fiber 的可验证起点:Noop renderer、nextUnitOfWork、高低优先级回调与 deadline。
PR #6981 — simple updates and fiber pooling同期 PR / 代码确认 alternate、current/work-in-progress 双树及“最多两棵树”的对象池设计。
PR #7154 — Host Side Effects同期 PR / 代码确认副作用链、先完成 reconciliation 再调用 host environment 的 commit 边界。
React Fiber Architecture维护者解释文档帮助解释 incremental rendering、priority、pull-based scheduling 与 Fiber 的概念模型。
React v16.0 release官方发布说明确认 Fiber 上线时的 error boundary、fragment、portal、新 SSR 与兼容策略。
Update on Async Rendering(2018)官方迁移说明解释旧 componentWill* 生命周期为何不适合可重放/可中断 render。
React v17.0 release官方发布说明说明事件委托从 document 移到 root 及“无新功能版本”的渐进升级意图。

4. Hooks

来源类型本文主要用途
RFC #68 — React HooksRFC同时引用动机、采用策略、Rules of Hooks、旧闭包和全局 render state 等已知代价。
React v16.8: The One With Hooks官方发布说明锚定 Hooks 稳定发布及其渐进采用定位。
ReactFiberHooks.js at v16.8.0同期源码确认 Hook 记录是 Fiber memoizedState 上的链表,dispatcher 决定 mount/update 行为,并按调用顺序配对。
Rules of Hooks官方参考文档用于区分 API 习惯与实现所需的稳定调用顺序。

5. Concurrent React、Suspense 与服务端渲染

来源类型本文主要用途
React 18 release官方发布说明确认 concurrent rendering 通过 createRoot、transitions、automatic batching 与 Suspense 等 feature 渐进启用。
React 18 working group discussions同期工作组讨论观察命名、迁移、外部 store、一致性和生态兼容问题如何公开讨论。
ReactFiberLane.new.js at v18.2.0同期源码说明 lanes 如何用位掩码表示 sync、input、default、transition、retry、idle、offscreen 等工作集合。
useSyncExternalStore working-group discussion设计讨论解释 concurrent rendering 对外部可变 store 快照一致性的要求。
New Suspense SSR Architecture in React 18维护者设计说明解释 streaming HTML、Selective Hydration 与 Suspense boundary 的协作。

6. Server Components、Flight 与 Actions

来源类型本文主要用途
Data Fetching with React Server Components(2020)官方研究预告锚定 RSC 首次公开时的目标:零 client bundle 组件、直接访问 server data、保留 client state。
RFC #188 — Server ComponentsRFC区分 Server/Client Component 能力、序列化边界、bundler 集成与渐进采用。
ReactFlightServer.js at v19.2.0同期源码观察 chunk、client/server reference、thenable、hint 与 stream config 如何组成 Flight server。
React 19 release官方发布说明确认 Actions、useActionStateuseOptimisticuse、ref-as-prop 与 RSC 稳定边界。
Critical Security Vulnerability in React Server Components(2025)官方安全公告说明 Server Function/RSC 协议进入可信服务端边界后带来的安全责任;具体修复版本应以最新公告为准。
React security blog index官方更新入口由于 2025–2026 年存在连续后续公告,本文不固定一组可能过时的“安全版本”,而要求读者查最新公告。

7. Compiler、React 19.2 与治理

来源类型本文主要用途
React Compiler v1.0官方发布说明确认 Compiler 1.0、React 17+ 兼容、Prepack 经验、CFG/HIR 重写、渐进 gating 与 lint 诊断。
HIR.ts at v19.2.0同期源码确认 AST → HIR → analysis → Reactive Scopes → codegen → AST 的核心数据流。
React 19.2官方发布说明确认 <Activity>useEffectEventcacheSignal、Performance Tracks 与 partial pre-rendering。
The React Foundation(2026)官方治理公告确认 React、React Native、JSX 转入 Linux Foundation 托管的独立基金会,以及技术治理与董事会职责分离。
React Foundation site官方组织资料用于核对组织使命、成员与治理资料的持续更新。

8. 版本与仓库元数据

来源类型本文主要用途
React releases官方仓库发布记录校验版本时间、补丁序列与当前维护分支。
React repository官方代码仓库所有代码快照、提交、PR 与文件链接的 canonical source。
React RFCs repository官方 RFC 仓库查阅被提议、接受、推迟或仍在演化的公共设计。

注释与不确定性

React 开源前的内部时间线

Bolt、FaxJS、FBolt、XHP-JS、React Native iOS 原型等名称来自官方 acknowledgements、Jordan Walke 访谈和团队回顾。它们的精确日期、代码边界与命名在不同回忆中并不总完全一致。本文只把多份来源交叉支持的顺序写成“史料事实”;对思想影响和因果关系使用“参与者回忆”或“本文判断”。

“Virtual DOM”不是一个单独可定位的发明

初始提交没有一个名为 VirtualDOM 的核心模块。轻量 element、child reconciliation、key、transaction、DOM operation 与事件系统共同构成开发者后来称作 Virtual DOM 的行为。本文因此避免把它写成一个孤立算法。

Fiber 的动机与实现

Fiber 的可中断调度目标可从 PR、架构文档和后续发布说明确认;但早期 PR 明显是探索性实现,包含未完成分支、TODO 和被后来替换的字段。本文按提交顺序描述其形成,不把最终 lanes/commit 架构倒灌成 2016 年一次完成的蓝图。

Server Components 与 framework

RSC 的 React 协议与产品可用体验不是同一层。模块图、manifest、路由、缓存、部署和 Server Function endpoint 大多由 framework/bundler 实现。本文讨论的是边界如何形成,不把某个 framework 的具体行为当作 React core 的永久规范。

2026 年后的内容

Chronicle 的“现在”截点为 2026-08-07。React release、安全公告、基金会技术治理和 Compiler 支持范围仍会变化;涉及部署与安全时应优先查看最新官方 release/advisory,而不是把本文当作实时兼容矩阵。

Engineering history, reconstructed from primary sources.