Skip to content

React 16 至 React 19 版本差异详解 #7

@Yueyanc

Description

@Yueyanc

React 16 至 React 19 版本差异详解

1. 引言

React 作为构建用户界面的主流 JavaScript 库,以其组件化架构和声明式编程范式而闻名。自其诞生以来,React 持续发展和演进,每个主要版本都带来了性能改进、新的特性以及更优的开发体验。本报告旨在对 React 的两个重要版本——16 和 19 进行详细的多维度比较,涵盖其源代码架构、应用层面的特性与 API 以及设计范式。理解这些变化对于高级软件工程师和技术负责人来说至关重要,能够帮助他们做出关于技术选型、升级策略和开发实践的明智决策。React 的演进反映了 Web 开发领域更广泛的趋势,例如对更高性能、更完善的服务器端渲染能力以及更佳开发者体验的日益增长的需求。理解这种演进对于在行业内保持竞争力至关重要。React 的开发受到开发者面临的实际问题的驱动,每个主要版本都引入了旨在解决这些挑战的特性和改进。通过分析从 16 到 19 版本的变化,我们可以理解 Web 开发不断发展的格局以及 React 如何适应以满足这些需求。

2. React 16:奠基

2.1. 架构概述:React Fiber 的引入

React 16 的核心架构引入了名为 React Fiber 的全新协调引擎 1。Fiber 的引入使得增量渲染成为可能,React 能够将渲染工作分割成更小、可中断的单元,从而显著提升了应用的响应性,尤其是在处理复杂的 UI 时 2。在 Fiber 架构中,渲染过程被划分为两个主要的阶段:渲染(确定需要进行的更改)和提交(将这些更改应用到 DOM)3。向 Fiber 的转变是 React 核心的根本性变革,它为未来的并发特性奠定了基础,使得渲染过程异步且可中断。这有效地解决了先前同步渲染模型存在的性能瓶颈。在 Fiber 出现之前,React 的渲染过程是一个阻塞操作。对于大型应用来说,这可能导致明显的延迟和糟糕的用户体验。Fiber 将渲染分解为更小的任务单元,使得 React 能够将渲染与其他任务(例如处理用户输入)交织在一起,从而提高了应用的响应速度。

2.2. 主要特性和 API

2.2.1. Fragments

React 16 引入了 Fragments(<React.Fragment> 或 <>),允许组件返回多个子元素而无需额外的 DOM 包装节点 1。这有助于生成更清晰的 DOM 结构,并可能带来性能上的提升。Fragments 简化了组件的渲染,减少了不必要的 DOM 嵌套,有助于提高性能并使生成的 HTML 更易于检查。在早期版本中,开发者通常需要将多个元素包裹在一个 <div> 中,即使这个 <div> 在语义上并不需要,仅仅是为了满足 React 返回单个根元素的要求。Fragments 通过提供一种无需在 DOM 中添加额外节点即可对元素进行分组的方式解决了这个问题。

2.2.2. Portals

Portals(ReactDOM.createPortal)是 React 16 引入的另一个重要特性,它提供了一种将子组件渲染到其父组件 DOM 层次结构之外的 DOM 节点中的一流方式 1。这对于实现模态框、工具提示等 UI 模式非常有用。Portals 为渲染那些在视觉上需要位于其自然 DOM 位置之外的元素提供了一个清晰的解决方案,而无需复杂的 CSS 变通方法。例如,模态框通常需要作为 <body> 元素的直接子元素,以确保正确的堆叠顺序并防止父容器引起的样式问题。Portals 允许开发者在将模态框的逻辑保留在相关组件内的同时实现这一点。

2.2.3. Error Boundaries

React 16 引入了 Error Boundaries,这是一种特殊的组件,可以捕获其子组件树中任何地方发生的 JavaScript 错误,记录这些错误,并显示一个回退 UI 而不是崩溃的组件树 1。实现 Error Boundaries 的关键是 componentDidCatch 生命周期方法。需要注意的是,Error Boundaries 不能捕获事件处理函数中的错误 8。Error Boundaries 显著提高了 React 应用的健壮性,防止了单个组件的错误导致整个应用崩溃。在 Error Boundaries 出现之前,组件中的错误可能导致 UI 损坏且无法使用。Error Boundaries 提供了一种优雅处理此类错误的方法,允许应用的其余部分继续运行。

React 16 还引入了从 render 方法返回字符串的能力 1。这在某些只需要输出纯文本的场景下简化了渲染。

2.3. 组件生命周期

React 16 提供了全面的组件生命周期方法,这些方法在组件的不同阶段被调用,可以分为挂载(Mounting)、更新(Updating)和卸载(Unmounting)三个阶段 9。挂载阶段包括 constructor、getDerivedStateFromProps、render 和 componentDidMount;更新阶段包括 getDerivedStateFromProps、shouldComponentUpdate、render、getSnapshotBeforeUpdate 和 componentDidUpdate;卸载阶段则只有 componentWillUnmount。此外,React 16 还引入了 getDerivedStateFromProps 和 getSnapshotBeforeUpdate 作为更安全的替代方案来取代一些遗留的生命周期方法 9。错误处理生命周期方法包括 getDerivedStateFromError 和 componentDidCatch 9。React 16 提供了一套完整的生命周期方法来管理组件在不同阶段的行为,尽管有些方法后来被认为是不安全或效率较低的,这促使了更新替代方案的引入。理解组件生命周期是编写正确且高效的 React 组件的基础。它允许开发者控制副作用何时发生、优化渲染以及处理组件的设置和清理。

2.4. 事件处理

React 16 使用合成事件(Synthetic Events)来处理事件,这些合成事件是浏览器原生 DOM 事件的跨浏览器包装器 15。React 为了性能优化采用了事件委托的概念,将事件处理函数附加在 document 级别 19。React 使用驼峰命名法来命名事件(例如,onClick),并将函数作为事件处理函数传递 18。需要显式调用 preventDefault 来阻止浏览器的默认行为 18。在类组件的事件处理函数中,处理 this 上下文的常见模式包括在构造函数中绑定、使用类属性或在 render 方法中使用箭头函数 18。React 16 的事件系统通过合成事件系统和事件委托提供了一种在不同浏览器中处理用户交互的一致且高效的方式。然而,document 级别的委托在与非 React 代码集成或嵌入多个 React 应用时存在局限性。事件委托通过在 document 级别附加单个事件监听器而不是为每个元素附加单独的监听器来提高性能。然而,这在具有混合技术的复杂应用中可能会导致意想不到的副作用。

3. React 17:过渡版本

3.1. 专注于实现更平滑的升级

React 17 并没有引入任何面向开发者的的新特性 20。其主要目标是促进 React 本身更容易、更渐进的升级,作为未来版本的“垫脚石” 21。React 17 使得在同一个应用中嵌入由不同版本 React 管理的 React 树成为可能 21。React 17 将基础设施变更置于新特性之上,这表明其战略重点在于为大型和复杂的应用启用更灵活的升级路径。先前 React 版本的“全有或全无”升级方法对于大型代码库来说可能具有挑战性。React 17 旨在通过使其更安全地并行运行不同版本的 React 来解决这个问题,从而允许逐步迁移。

3.2. 事件委托的改变

React 17 中一个重要的变化是事件委托机制的更新:React 17 不再在 document 级别附加事件处理函数,而是将它们附加到渲染 React 树的根 DOM 容器中 19。这样做的好处包括更安全地嵌入不同版本的 React 和改进与非 React 代码的集成 19。stopPropagation() 现在可以像在 DOM 中一样正常工作,阻止事件冒泡到 document 级别 19。这一变化使得 React 的事件系统更接近标准的 DOM 行为,并解决了长期存在的集成问题,为微前端架构铺平了道路。早期 React 版本中 document 级别的事件委托在将 React 应用嵌入到现有网站或其他 React 应用中时可能会导致冲突。通过在根容器级别附加事件监听器,React 17 将每个 React 树中的事件处理隔离起来。

3.3. 新的 JSX 转换

React 17 引入了一个新的可选 JSX 转换,允许在使用 JSX 时无需导入 React 21。它会自动从 react/jsx-runtime 导入函数 21。这样做的好处是可能会减小 bundle 大小并简化开发体验 25。旧的 JSX 转换仍然可以继续使用 21。新的 JSX 转换提高了开发者便利性,并可能优化应用大小,而无需进行重大的代码更改。在每个使用 JSX 的文件中导入 React 曾经是一个常见的轻微不便之处。新的转换自动化了这个过程,并为未来的性能优化开辟了可能性。

3.4. useEffect 清理时序的更新

useEffect 的清理函数现在总是在屏幕更新后异步运行 21。这提高了清理时序的一致性,并避免了访问已卸载组件的潜在问题 23。这一变化使得 useEffect 清理的行为更加可预测,并使其与 effect 本身的异步特性保持一致,从而减少了潜在的细微错误。早期版本中同步清理有时会导致意外行为,尤其是在涉及快速组件卸载和重新挂载的场景中。使清理异步提供了一种更一致和安全的方法。

3.5. 移除事件池

React 移除了事件池的优化 20。现在每个事件对象都是一个唯一的实例,允许异步访问而无需使用 e.persist() 20。这一变化简化了事件处理,并消除了开发者可能遇到的困惑 20。移除事件池简化了事件处理逻辑,并消除了开发者可能遇到的一个陷阱,尤其是对于 React 新手来说。事件池是为旧浏览器进行性能优化的一种方式,但在现代环境中已不再必要,并且常常导致事件对象生命周期方面的混淆。移除它使得事件处理更加直观。

3.6. 细微的 API 变化和破坏性变更

其他细微的变化包括:返回 undefined 的组件(包括 forwardRef 和 memo)现在会抛出一致的错误 23;改进了组件堆栈信息 21;以及对 onScroll、onFocus 和 onBlur 等特定事件的更改 21。此外,还移除了与 React Native Web 相关的私有导出 21。虽然 React 17 的新特性很少,但它包含了一些旨在提高一致性并为未来发展做准备的底层更改和细微的破坏性变更。这些较小的变化虽然不大,但有助于提供更精细和一致的 React 体验,并解决了先前版本中的特定问题或不一致之处。

4. React 18:拥抱并发

4.1. 并发的引入

React 18 引入了并发的核心概念,允许 React 同时处理多个任务而不会阻塞主线程 28。这样做的好处包括提高响应性、更流畅的用户交互以及中断和恢复渲染的能力 34。并发是可选的,通过使用新的并发特性来启用 43。并发是 React 架构上的重大转变,它使得应用能够提供更流畅和响应更快的用户体验,尤其是在具有复杂渲染需求或异步操作的应用中。传统的同步渲染可能导致在执行繁重任务时 UI 冻结。并发允许 React 同时处理多个任务,优先处理用户交互,并使应用感觉更快。

4.2. 自动批处理

React 18 引入了自动批处理,将多个状态更新合并到单个重新渲染中,从而提高了性能 34。与 React 17 不同,这现在包括了 promise、timeout 和原生事件处理函数中的更新 34。flushSync API 可用于在需要时选择退出批处理 34。自动批处理通过减少不必要的重新渲染显著提高了 React 应用的性能,从而带来了更流畅的用户体验。在以前的版本中,异步上下文中触发的多个状态更新会导致多次重新渲染。自动批处理将这些更新分组,确保组件只重新渲染一次。

4.3. Transitions

Transitions 的概念被引入,用于区分紧急和非紧急的 UI 更新 34。startTransition 和 useTransition 这两个 hook 可用于标记非紧急更新,防止 UI 阻塞 34。isPending 状态用于跟踪 transition 的状态 41。Transitions 提供了一种机制来优先处理用户交互而不是后台任务,从而带来更流畅和响应更快的用户体验,尤其是在 UI 状态更改期间。当用户执行触发 UI 更新的操作时,某些部分的更新可能比其他部分更重要(例如,显示键入的文本比过滤大型列表更重要)。Transitions 允许开发者将不太重要的更新标记为非紧急,以便 React 可以优先处理紧急更新。

4.4. 新的 Root API (createRoot)

react-dom/client 中引入了新的 createRoot API,作为 ReactDOM.render 的替代方案 34。使用 createRoot 可以启用新的并发渲染器和特性 34。对于服务器端渲染的应用,还有对应的 hydrateRoot API 34。新的 Root API 是解锁 React 18 并发特性的先决条件,它提供了一种更符合人体工程学的方式来管理 React 应用的根节点。长期以来,ReactDOM.render 一直是启动 React 应用的标准方法。createRoot 提供了一个新的入口点,专门用于支持 React 18 中引入的并发渲染功能。

4.5. 使用 Suspense 进行服务器端渲染

React 18 增强了服务器端渲染(SSR)的能力,引入了对 Suspense 的支持,允许进行 HTML 流式传输和选择性水合 34。Suspense 可以在服务器端用于延迟加载缓慢的组件,并先将页面的其余 HTML 流式传输到客户端,从而改善初始加载时间和用户体验 34。选择性水合是指 React 根据用户交互的优先级来水合组件 39。React 18 显著提升了 SSR 能力,使得构建高性能且对 SEO 友好的应用变得更加容易,这些应用具有更快的初始加载时间和更好的交互性。传统的 SSR 需要在服务器端渲染整个页面后才能发送给客户端。服务器端的 Suspense 允许打破这种模式,在部分页面准备就绪后就发送,从而加快了用户的感知加载时间。

4.6. 新的 Hooks

React 18 引入了一些新的 hook,例如 useId 用于生成唯一的 ID 以提高可访问性 36,useSyncExternalStore 用于高效地集成外部 store 36,以及 useInsertionEffect 用于 CSS-in-JS 库以解决性能问题 36。这些新的 hook 为特定的开发挑战提供了解决方案,并进一步增强了函数组件的功能。useId 简化了创建可访问性所需的唯一 ID 的过程。useSyncExternalStore 提供了一种更高效的方式来处理 React 之外管理的状态。useInsertionEffect 帮助优化 CSS-in-JS 库的性能。

5. React 19:现代特性与增强

5.1. Actions

React 19 引入了 Actions 这一约定,旨在简化数据变更和状态更新,尤其是在处理表单提交和 API 请求等异步操作时 58。与之相关的新的 hook 包括:useActionState 用于管理 Action 的状态,包括 pending 和 error 状态,简化表单处理 58;useFormStatus 用于在子组件中访问父表单的提交状态信息,这对于设计系统非常有用 46;以及 useOptimistic 用于简化乐观 UI 更新的实现,允许在服务器确认之前显示临时状态更改 58。React 19 中的 Actions 及其相关 hook 旨在简化常见的异步模式,减少样板代码,并改善数据处理的开发者体验。管理异步操作的加载状态、错误和乐观更新通常涉及编写重复的代码。Actions 提供了一种更声明式和自动化的方式来处理这些场景。

5.2. Server Components 和 Server Actions

React 19 引入了稳定的 Server Components (RSC) 和 Server Actions,从而可以在服务器端渲染部分应用,减少客户端 JavaScript 的大小 54。这样做的好处包括性能提升(更快的初始加载、更小的 bundle)、更好的 SEO 和代码可移植性 79。引入了 'use client' 和 'use server' 指令 79。Server Components 代表了 React 中一个重要的范式转变,它使得开发者能够更有效地利用服务器进行渲染和数据获取,从而带来显著的性能提升和更好的用户体验。通过在服务器端执行组件逻辑,React 19 减少了需要发送到客户端的 JavaScript 数量,从而加快了初始页面加载速度,尤其是在较慢的网络和设备上。

5.3. use API

新的 use API 允许直接在渲染函数中读取 Promise 或 Context 等资源的值 58。它能够与 Suspense 协同工作,用于异步数据获取 71。需要注意的是,它目前处于实验性阶段并存在一些限制 71。use API 为在函数组件中处理异步数据获取和 Context 的消费提供了一种更直接且可能更简洁的方式。传统上,React 中的数据获取通常涉及 useEffect 和状态管理来处理加载和错误状态。use API 提供了一种看起来更同步的方法,并与 Suspense 集成。

5.4. Document Metadata

React 19 原生支持直接在组件中渲染 document metadata 标签(例如,<title>、<meta>、<link>) 58。React 会自动将这些标签提升到 <head> 部分,从而改进 SEO 并简化 metadata 管理 71。此特性消除了对 React Helmet 等第三方库进行基本 metadata 管理的需求,简化了开发并可能提高了性能。管理 document metadata 过去通常使用外部库来完成。React 19 的内置支持使得这个过程更加直接,并直接集成到组件模型中。

5.5. 资源加载改进

React 19 增强了对样式表(包括优先级和去重)、异步脚本(允许在组件树中的任何位置渲染并进行去重)的处理,并引入了用于预加载资源的新 API(prefetchDNS、preconnect、preload、preinit)58。这些改进提供了对资源加载的更多控制,通过更快的加载时间和减少视觉闪烁来改善性能和用户体验。高效地加载和管理样式表和脚本等资源对于 Web 应用的性能至关重要。React 19 的增强为开发者提供了更多优化此过程的工具。

5.6. Ref 作为 Prop

现在可以直接将 ref 作为 prop 传递给函数组件,简化了代码,并在许多情况下消除了对 forwardRef 的需求 58。此外,还引入了 ref 清理函数 79。此更改简化了在函数组件中使用 ref 的 API,使其更加直观并减少了样板代码。forwardRef 过去通常是将 ref 传递给自定义组件所必需的。允许直接将 ref 作为 prop 传递简化了这个常见的模式。

5.7. 其他改进

其他改进包括:改进了水合错误报告(更详细的消息和差异)58;增强了 Context API(可以直接将 <Context> 作为 provider 渲染)58;以及用于错误处理的新根选项(onCaughtError、onUncaughtError)58。React 19 包含了一系列较小的改进,这些改进共同增强了开发者体验和 React 应用的健壮性。这些增量更改解决了特定的痛点,并进一步完善了 React API。

6. 版本间的比较分析

6.1. 源代码层面

React 16 到 19 在核心渲染架构上经历了从同步(React 16)、过渡(React 17)到并发(React 18 和 19)的演变。事件系统也从 document 级别的委托(React 16)发展到根容器级别的委托(React 17),并在后续版本中引入了对原生浏览器事件的更广泛使用。JSX 转换也经历了引入和演变。每个版本都添加了新的模块和 API(例如,react/jsx-runtime、react-dom/client、react-dom/static)。

表 1:核心架构变化

版本 渲染引擎 事件委托 JSX 转换 主要架构变化
16 同步 Document 级别 引入 React Fiber
17 同步 根容器级别 新(可选),旧 专注于平滑升级
18 并发(可选) 根容器级别 新(可选),旧 引入并发渲染
19 并发(默认) 根容器级别 新(强制) 默认启用并发,引入 Server Components

此表简明扼要地概述了 React 在不同版本中的底层结构发生的根本性变化,使读者能够轻松掌握核心架构的演变。

6.2. 应用层面

React 16 到 19 在状态管理、数据获取、表单处理和渲染等常见任务的可用特性和 API 方面发生了显著变化。并发和自动批处理的引入极大地影响了应用性能。服务器端渲染能力不断增强,并引入了 Server Components。组件生命周期方法和 hook 的使用模式也发生了变化。React 18 和 19 中引入了新的 hook 和 API,它们各自有特定的使用场景。

表 2:应用层面特性比较

版本 主要特性 性能影响 状态管理 数据获取
16 Fragments, Portals, Error Boundaries 引入 Fiber 提高响应性 类组件中的 setState componentDidMount 中进行
17 无新特性 细微改进 与 16 类似 与 16 类似
18 并发渲染,自动批处理,Transitions,Suspense SSR 显著提高响应性和效率 函数组件中的 useState,useReducer Suspense 支持,startTransition
19 Server Components, Actions, use API, Document Metadata 进一步提高性能,减少客户端 bundle 函数组件中的 useState,useReducer,Context API 增强 use API,Server Actions,Suspense 增强

此表总结了每个版本中引入的主要特性及其对应用开发关键方面的影响,从而可以快速比较功能上的进步。

6.3. 设计层面

React 的设计范式从基于类的组件逐渐转向使用 hook 的函数组件,这已成为主要的开发模式。并发和 Server Components 的引入影响了应用架构和数据获取策略。不同版本中组件组合和状态管理的推荐模式也有所不同。Server Components 的出现标志着全栈 React 开发的兴起。React 的设计范式已经朝着更函数式、更可组合和更以服务器为中心的方向发展,这是由对更好性能和开发者体验的需求驱动的。React 最初主要关注客户端渲染和类组件。React 16.8 中引入 hook 将重点转移到函数组件。后续版本,尤其是 React 19 及其 Server Components,进一步扩展了这种范式,将服务器端逻辑包含在组件模型中。

7. 迁移考虑与最佳实践

7.1. 迁移过程中遇到的挑战

从 React 16 升级到 17 的破坏性变更很少,但事件委托的更改可能会影响与非 React 代码或旧库的集成 21。由于库的兼容性问题,可能会出现 peer dependency 警告 106。从 React 17 升级到 18 涉及到架构上的重大变化,引入了并发,需要更新根 API (createRoot) 46。Strict Mode 行为和 useEffect 时序的更改可能会导致破坏性变更 68。测试库(如 Enzyme)的兼容性问题需要更新 React Testing Library 27。TypeScript 类型也发生了变化 69。从 React 18 升级到 19 需要强制使用新的 JSX 转换,需要进行编译器配置 113。移除了遗留的 API(ReactDOM.render、ReactDOM.hydrate、函数的 defaultProps、遗留 Context、react-dom/test-utils API)89。第三方库可能尚未完全支持 React 19 114。用于更新 React 导入的 codemod 可能无法完美工作 113。

7.2. 平滑升级过程的逐步指南和建议

全面审查每个版本的发布说明 116。使用 npm 或 yarn 更新 React 和 ReactDOM 包 46。更新其他依赖项和工具到兼容的版本 47。在 React 18+ 中将 ReactDOM.render 替换为 createRoot 46。通过更新 @types/react 和 @types/react-dom 来解决 TypeScript 类型错误 69。将测试库(例如,@testing-library/react)更新到与目标 React 版本兼容的版本 68。重构已弃用的特性和 API 27。启用并解决 Strict Mode 的警告 34。在每个升级阶段后彻底测试应用 46。对于大型应用,考虑逐步迁移 21。在可用时利用 codemod 和自动化工具 14。

7.3. 处理破坏性变更和兼容性问题的策略

优先处理核心 React API 中的破坏性变更。调查并更新或替换不兼容的第三方库 46。使用条件逻辑或特性标志来管理需要在渐进升级期间支持多个 React 版本的代码。查阅官方 React 文档和社区资源以获取关于特定破坏性变更的指南。迁移主要 React 版本需要仔细规划和执行,并注意破坏性变更以及与生态系统潜在的兼容性问题。采用分阶段方法并进行彻底的测试对于成功迁移至关重要。

8. 结论

从 16 到 19 版本,React 经历了显著的进步,从关注性能和基础改进(React 16 和 17)发展到拥抱并发和服务器端能力(React 18 和 19)。升级的好处包括性能提升、开发者体验增强以及对 Server Components 和 Actions 等现代特性的访问。React 的持续演进及其对满足现代 Web 开发需求的承诺是显而易见的。React 从 16 到 19 版本的演变反映了前端开发中更广泛的趋势,即朝着更高效、可扩展和用户友好的应用发展。React 的持续创新确保了其在 Web 开发生态系统中的相关性和领先地位。

React 版本差异深度分析_.pdf

Works cited

  1. Top 7 React JS V16 Released Features - Ficode, accessed March 18, 2025, https://www.ficode.com/blog/top-7-react-js-v16-released-features
  2. What are the key concepts in React 16+? - CloudDevs, accessed March 18, 2025, https://clouddevs.com/react/16-features/
  3. Understanding React Fiber: The Architecture Behind React 16+ - Cybernative Technologies, accessed March 18, 2025, https://www.cybernativetech.com/understanding-react-fiber-architecture/
  4. React v16.0 – React Blog, accessed March 18, 2025, https://legacy.reactjs.org/blog/2017/09/26/react-v16.0.html
  5. What's new in React 16? - Robin Wieruch, accessed March 18, 2025, https://www.robinwieruch.de/what-is-new-in-react-16/
  6. Journey from React 15 to React 16 | by Akash Verma - Medium, accessed March 18, 2025, https://akash-mihul.medium.com/journey-from-react-15-to-react-16-56e336092379
  7. React 16 Release: What's New? - Auth0, accessed March 18, 2025, https://auth0.com/blog/whats-new-in-react16/
  8. Error Boundaries - React, accessed March 18, 2025, https://legacy.reactjs.org/docs/error-boundaries.html
  9. React.Component – React, accessed March 18, 2025, https://legacy.reactjs.org/docs/react-component.html
  10. Lifecycle methods in React 16 | Pusher tutorials, accessed March 18, 2025, https://pusher.com/tutorials/lifecycle-methods-react-16/
  11. React Lifecycle Methods - A primer with React 16 - DEV Community, accessed March 18, 2025, https://dev.to/stephencweiss/react-lifecycle-methods-a-primer-with-react-16-24og
  12. Summary of React Component Lifecycle Methods (v16.8) | by Bananatag - Medium, accessed March 18, 2025, https://medium.com/bananatag-engineering-blog/summary-of-react-component-lifecycle-methods-v16-8-55a4e45f50a5
  13. React Lifecycle Methods - Massive Pixel Creation, accessed March 18, 2025, https://massivepixel.io/blog/react-lifecycle-methods/
  14. React v16.3.0: New lifecycles and context API, accessed March 18, 2025, https://legacy.reactjs.org/blog/2018/03/29/react-v-16-3.html
  15. How to Handle Events in React Effectively | Medium, accessed March 18, 2025, https://medium.com/@rashmipatil24/handling-events-in-react-9c010f783612
  16. Responding to Events - React, accessed March 18, 2025, https://react.dev/learn/responding-to-events
  17. Full React Tutorial: #16 - Event Handler (2022). - YouTube, accessed March 18, 2025, https://www.youtube.com/watch?v=4j_s42Iaro4
  18. Handling Events – React, accessed March 18, 2025, https://legacy.reactjs.org/docs/handling-events.html
  19. React 17 attaches events to the root DOM container instead of the document node, accessed March 18, 2025, https://blog.saeloun.com/2021/07/08/react-17-event-delagation/
  20. What's new in React 17: new features and improvements, accessed March 18, 2025, https://webapplog.com/whats-new-in-react-17/
  21. React v17.0 – React Blog, accessed March 18, 2025, https://legacy.reactjs.org/blog/2020/10/20/react-v17.html
  22. What's new in React 17 ( No new features ) - Rolwin Reevan, accessed March 18, 2025, https://rolwinreevan.com/blog/react17-new-features/
  23. What is new in React 17? No New Features! - YouTube, accessed March 18, 2025, https://www.youtube.com/watch?v=vmycmp4J1Og
  24. React v17.0 Release Candidate: No New Features, accessed March 18, 2025, https://legacy.reactjs.org/blog/2020/08/10/react-v17-rc.html
  25. React 16 vs. React 17 | NextLink Labs, accessed March 18, 2025, https://nextlinklabs.com/resources/insights/react-16-vs-17
  26. Upgrading to React 17. Everything you need to know about the… | by Bhoomika Chauhan | BYJU'S Exam Prep Engineering | Medium, accessed March 18, 2025, https://medium.com/gradeup/upgrading-to-react-17-5a5aad38057f
  27. React 17: The Silent Upgrade You Can't Afford to Ignore | by Sobhan Yazdanjoo - Medium, accessed March 18, 2025, https://medium.com/@sobhanyazdanjoo/react-17-the-silent-upgrade-you-cant-afford-to-ignore-bd8bcc1cb89f
  28. Comparison between React 17 and React 18, accessed March 18, 2025, https://blog.radialcode.com/category/web/comparison-between-react-17-and-react-18
  29. React v17 — Nothing New But - Medium, accessed March 18, 2025, https://medium.com/swlh/react-v17-nothing-new-but-ed1d3844adc4
  30. Simplifying React v17 Breaking Changes: Key Essential Insights - Brainvire, accessed March 18, 2025, https://www.brainvire.com/blog/few-breaking-changes-that-are-shipped-with-react-v17/
  31. React 17 & Event Handling - GitHub Gist, accessed March 18, 2025, https://gist.github.com/emplums/ad1eb1d78e6281756b33d25aa136d82d
  32. Introducing the New JSX Transform – React Blog, accessed March 18, 2025, https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html
  33. React 17: New Features!! - JSX Transform is Amazing!! - YouTube, accessed March 18, 2025, https://www.youtube.com/watch?v=8D-rWP3c088
  34. React 18 : Concurrency, Automatic Batching, Transitions & Other Updates, accessed March 18, 2025, https://aglowiditsolutions.com/blog/react-18-new-updates-features/
  35. A Complete Guide to React 18's Newest Features | Pangea.ai, accessed March 18, 2025, https://pangea.ai/resources/a-complete-guide-to-react-18-s-newest-features
  36. React 18: New Features and Improvements - Simplilearn.com, accessed March 18, 2025, https://www.simplilearn.com/tutorials/reactjs-tutorial/react-eighteen-new-features
  37. Concurrent Mode in React 18+ and Why It's Awesome | by Mo Sharif | Medium, accessed March 18, 2025, https://codermo.medium.com/concurrent-mode-in-react-18-and-why-its-awesome-ce2683cd4726
  38. Deep Dive into React Concurrent Mode: Exploring Key Features and Use Cases, accessed March 18, 2025, https://www.dhiwise.com/post/deep-dive-into-react-concurrent-mode-exploring-key-features-and-use-cases
  39. How React 18 Improves Application Performance - Vercel, accessed March 18, 2025, https://vercel.com/blog/how-react-18-improves-application-performance
  40. React 18 & React Native, accessed March 18, 2025, https://reactnative.dev/docs/0.73/react-18-and-react-native
  41. Concurrent Rendering in React 18 - Telerik.com, accessed March 18, 2025, https://www.telerik.com/blogs/concurrent-rendering-react-18
  42. React 18: New Features You Need to Know About - SDLC Corp, accessed March 18, 2025, https://sdlccorp.com/post/react-18-new-features-you-need-to-know-about/
  43. React v18.0, accessed March 18, 2025, https://react.dev/blog/2022/03/29/react-v18
  44. Concurrent Mode in React: A Detailed Explanation | Vivasoft Ltd., accessed March 18, 2025, https://vivasoftltd.com/concurrent-mode-in-react/
  45. React 18 Concurrent Rendering: What You Need to Know - SDLC Corp, accessed March 18, 2025, https://sdlccorp.com/post/react-18-concurrent-rendering-what-you-need-to-know/
  46. Migrating from React 17 to 18: Why Your Apps Need this Upgrade? - Calibraint, accessed March 18, 2025, https://www.calibraint.com/blog/react-17-upgrading-to-react-18
  47. Why upgrade from React 17 to React 18? - HashStudioz Technologies, accessed March 18, 2025, https://www.hashstudioz.com/blog/why-upgrade-from-react-17-to-react-18/
  48. React 18's Latest Features: How to Leverage Concurrency, Batching & More for High-Performance Apps - DEV Community, accessed March 18, 2025, https://dev.to/melvinprince/react-18s-latest-features-how-to-leverage-concurrency-batching-more-for-high-performance-apps-482g
  49. Most powerful feature of React 18 : Concurrency and how to achieve using startTransition and useTransition | by Archit Verma | Medium, accessed March 18, 2025, https://medium.com/@archit9/most-powerful-feature-of-react-18-concurrency-and-how-to-achieve-using-starttransition-and-221bd9b1899e
  50. React's Concurrent Mode: Revolutionizing UI Performance | by Andre Zago | Bootcamp, accessed March 18, 2025, https://medium.com/design-bootcamp/reacts-concurrent-mode-revolutionizing-ui-performance-7a6c45a82209
  51. Understanding Concurrency in React 18 | by YAKStack - Medium, accessed March 18, 2025, https://medium.com/@YAKStack/understanding-concurrency-in-react-18-b489166f44a5
  52. Using React Suspense with Data Fetching and Concurrent Rendering. - Medium, accessed March 18, 2025, https://medium.com/@melvinmps11301/using-react-suspense-with-data-fetching-and-concurrent-rendering-b16aecc1d532
  53. Embracing React 18: A Guide for .NET and Frontend Developers with Real-World Examples, accessed March 18, 2025, https://blog.stackademic.com/embracing-react-18-a-guide-for-net-and-frontend-developers-with-real-world-examples-24b2e6ccf7f6
  54. React 18 vs React 19: Key Differences To Know For 2025 - DEV Community, accessed March 18, 2025, https://dev.to/sovannaro/react-18-vs-react-19-key-differences-to-know-for-2025-1614
  55. React 18: Updated Features & How Will It Benefit Developers? - Markovate, accessed March 18, 2025, https://markovate.com/blog/react-18-update/
  56. Exploring the New React 19 Features and Updates - Blog - Global Risk Community, accessed March 18, 2025, https://globalriskcommunity.com/profiles/blogs/exploring-the-new-react-19-features-and-updates
  57. What's New in React 19? - by Sargun Kohli - Medium, accessed March 18, 2025, https://medium.com/@sargun.kohli152/whats-new-in-react-19-efff0027da41
  58. What's New in React 19 - Telerik.com, accessed March 18, 2025, https://www.telerik.com/blogs/whats-new-react-19
  59. How to Upgrade to React 18 – React Blog, accessed March 18, 2025, https://legacy.reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html
  60. Understanding Automatic Batching in React 18: Enhancing Performance with Optimized State Updates | by Nilay Brahmbhatt | Medium, accessed March 18, 2025, https://medium.com/@Brahmbhatnilay/understanding-automatic-batching-in-react-18-enhancing-performance-with-optimized-state-updates-9658d04e5785
  61. What Automatic Batching is in React 18 and how it works - Angular Minds, accessed March 18, 2025, https://www.angularminds.com/blog/automatic-batching-is-in-react-18
  62. What is Automatic Batching in React 18 - GeeksforGeeks, accessed March 18, 2025, https://www.geeksforgeeks.org/what-is-automatic-batching-in-react-18/
  63. React 18: Automatic Batching - JavaScript in Plain English, accessed March 18, 2025, https://javascript.plainenglish.io/react-18-automatic-batching-3cf7bf545ab6
  64. Everything You Should Know About React 18 | Syncfusion Blogs, accessed March 18, 2025, https://www.syncfusion.com/blogs/post/everything-you-should-know-about-react-18/amp
  65. React 18 – What's New, What has Changed? - ToolJet Blog, accessed March 18, 2025, https://blog.tooljet.com/whats-new-in-react-18/
  66. React 18 New Features, Changes & v18 Upgrade Guide - YouTube, accessed March 18, 2025, https://m.youtube.com/watch?v=N41B_SVdzwg&pp=ygUOIzE4bmV3ZmVhdHVyZXM%3D
  67. Understanding React Batching for Performance Optimization - IGNEK, accessed March 18, 2025, https://www.ignek.com/blog/react-batching-for-performance-optimization/
  68. How to update React 17 to 18. If you have a large and somewhat aged… | by Dana C | Medium, accessed March 18, 2025, https://medium.com/@danacc/how-to-update-react-17-to-18-0ec844df147b
  69. How to Upgrade to React 18, accessed March 18, 2025, https://react.dev/blog/2022/03/08/react-18-upgrade-guide
  70. Mastering React 19: Exploring the Latest Features of the New React Version - Scalable Path, accessed March 18, 2025, https://www.scalablepath.com/react/react-19
  71. React v19, accessed March 18, 2025, https://react.dev/blog/2024/12/05/react-19
  72. New root API in React 18 - DEV Community, accessed March 18, 2025, https://dev.to/w3tsadev/new-root-api-in-react-18-15jd
  73. updated React templates to use react 18 new root api by spaceFitzpa · Pull Request #1142 · jaredpalmer/tsdx - GitHub, accessed March 18, 2025, updated React templates to use react 18 new root api jaredpalmer/tsdx#1142
  74. Upgrading to react@18 and react-dom@18 fails - Stack Overflow, accessed March 18, 2025, https://stackoverflow.com/questions/71684417/upgrading-to-react18-and-react-dom18-fails
  75. React 18 Release: A Deep Dive Into New Features and Updates, accessed March 18, 2025, https://www.scalablepath.com/react/react-18-release-features
  76. React 18 - What Changes Does It Bring And How Will They Affect You? [UPDATED], accessed March 18, 2025, https://www.itmagination.com/blog/react-18-what-changes-does-it-bring
  77. React 18 Overview - What Changed? Concurrency, Transitions, Suspense... - YouTube, accessed March 18, 2025, https://m.youtube.com/watch?v=WtiF3DP6oWk&pp=ygUMI-umrOyVoe2KuDE4
  78. React 19: The Features You Need to Know! - DEV Community, accessed March 18, 2025, https://dev.to/mukhilpadmanabhan/react-19-the-features-you-need-to-know-55h6
  79. React 19 : New Features and Updates - GeeksforGeeks, accessed March 18, 2025, https://www.geeksforgeeks.org/react-19-new-features-and-updates/
  80. React 19: Latest Features and Updates - Metizsoft Solutions, accessed March 18, 2025, https://www.metizsoft.com/blog/react-19-latest-features-and-updates
  81. What's new in React 19 - Vercel, accessed March 18, 2025, https://vercel.com/blog/whats-new-in-react-19
  82. Every React 19 Change In 6 Minutes - YouTube, accessed March 18, 2025, https://www.youtube.com/watch?v=rwC7HY8_U_g
  83. React Hook Form vs React 19 - Matt Burgess - Medium, accessed March 18, 2025, https://mattburgess.medium.com/react-hook-form-vs-react-19-1e28009e6557
  84. A Comprehensive Guide to React 19: Latest Features & Updates - eLuminous Technologies, accessed March 18, 2025, https://eluminoustechnologies.com/blog/react-19/
  85. Exploring What's New in React 19: Actions, Async Scripts, Server Components, and More, accessed March 18, 2025, https://www.ghazikhan.in/blog/exploring-whats-new-in-react-19
  86. React 18 vs React 19: Boosting Rendering Performance - Creole Studios, accessed March 18, 2025, https://www.creolestudios.com/react-18-vs-react-19-boosting-rendering-performance/
  87. React 19: A New Era of Development | by Babar Bilal | Feb, 2025 - Medium, accessed March 18, 2025, https://medium.com/@babarbilal303/react-19-a-new-era-of-development-25fc0dc4c242
  88. New Features in React 19: Transforming the Development Experience - DEV Community, accessed March 18, 2025, https://dev.to/ricardocaselati/new-features-in-react-19-transforming-the-development-experience-4ahm
  89. Exploring React 19: Features, Deprecations, and Breaking Changes · NextSteps Blog, accessed March 18, 2025, https://www.nextsteps.dev/posts/exploring-react-19
  90. What's New in React 19? A Developer's Guide to Next-Gen Features | VAIRIX, accessed March 18, 2025, https://www.vairix.com/tech-blog/whats-new-in-react-19
  91. Migrating from Earlier React Versions - Mastering Next.js 15: A Comprehensive Guide, accessed March 18, 2025, https://app.studyraid.com/en/read/13664/458494/migrating-from-earlier-react-versions
  92. Step-by-Step Guide: Migrating Your React Applications to Version 18 - Medium, accessed March 18, 2025, https://medium.com/@shriharim006/step-by-step-guide-migrating-your-react-applications-to-version-18-46d4ebca5b02
  93. Server Components and Server Actions in React 19: A Revolution in React Architecture | by Erick Zanetti | Medium, accessed March 18, 2025, https://medium.com/@erickzanetti/server-components-and-server-actions-in-react-19-a-revolution-in-react-architecture-85c75b3531c6
  94. Mastering Server-Side Rendering (SSR) in React 19 with Vite: The Ultimate Guide for Developers - DEV Community, accessed March 18, 2025, https://dev.to/yugjadvani/mastering-server-side-rendering-ssr-in-react-19-with-vite-the-ultimate-guide-for-developers-4mgm
  95. React Server Components, accessed March 18, 2025, https://react.dev/reference/rsc/server-components
  96. How does React 19 execute Server Components and Server Actions without a Node.js runtime? : r/reactjs - Reddit, accessed March 18, 2025, https://www.reddit.com/r/reactjs/comments/1gwszdu/how_does_react_19_execute_server_components_and/
  97. React 19 Server Components: What's Changed and Why It Matters - OpenReplay Blog, accessed March 18, 2025, https://blog.openreplay.com/react-19-server-components-changed-matters/
  98. Everything You Need to Know About React Server Components in React 19 - AntStack, accessed March 18, 2025, https://www.antstack.com/blog/everything-you-need-to-know-about-react-server-components-in-react-19/
  99. What is the difference between React Server Components (RSC) and Server Side Rendering (SSR)? - Stack Overflow, accessed March 18, 2025, https://stackoverflow.com/questions/76325862/what-is-the-difference-between-react-server-components-rsc-and-server-side-ren
  100. React Performance with Server Components by Aurora Scharff - Video recording - GitNation, accessed March 18, 2025, https://gitnation.com/contents/react-server-components-elevating-speed-interactivity-and-user-experience
  101. A guide to React 19's new Document Metadata feature - LogRocket Blog, accessed March 18, 2025, https://blog.logrocket.com/guide-react-19-new-document-metadata-feature/
  102. React 19 Updates: Metadata, Stylesheets, and Async Scripts | by Eniola Ogundipe | Medium, accessed March 18, 2025, https://medium.com/@ogundipe.eniola/react-19-updates-metadata-stylesheets-and-async-scripts-dd546191ff6c
  103. Managing Document Metadata in React.js 19 | by Ahmed Qeshta - Medium, accessed March 18, 2025, https://medium.com/@ahmedqeshta1999/managing-document-metadata-in-react-js-19-a2f43e9c5058
  104. React 19: What's New, Why It Matters, and Migration Tips - DEV Community, accessed March 18, 2025, https://dev.to/shieldstring/react-19-whats-new-why-it-matters-and-migration-tips-47o7
  105. Package with React 17 use in react 16 - Stack Overflow, accessed March 18, 2025, https://stackoverflow.com/questions/77824553/package-with-react-17-use-in-react-16
  106. Upgrading to React 17: How to Fix the Issues and Breaking Changes - Wealthfront, accessed March 18, 2025, https://eng.wealthfront.com/2021/01/14/upgrading-to-react-17-how-to-fix-the-issues-and-breaking-changes/
  107. React upgrade from 16 to 17 - Stack Overflow, accessed March 18, 2025, https://stackoverflow.com/questions/73432721/react-upgrade-from-16-to-17
  108. [Bug]: React 16 docs redirect to React 17 with no explanation · Issue #7151 · reactjs/react.dev - GitHub, accessed March 18, 2025, [Bug]: React 16 docs redirect to React 17 with no explanation reactjs/react.dev#7151
  109. trying to upgrade react program from 16 to 17 - Stack Overflow, accessed March 18, 2025, https://stackoverflow.com/questions/73227722/trying-to-upgrade-react-program-from-16-to-17
  110. Atlaskit + React 17 - Atlassian Ecosystem Design, accessed March 18, 2025, https://community.developer.atlassian.com/t/atlaskit-react-17/56836
  111. React migration from 16 to 18 : r/reactjs - Reddit, accessed March 18, 2025, https://www.reddit.com/r/reactjs/comments/1f7us3p/react_migration_from_16_to_18/
  112. Migrating to React 18 | Backstage Software Catalog and Developer Platform, accessed March 18, 2025, https://backstage.io/docs/tutorials/react18-migration
  113. Why is the React 19 migration such a mess? : r/reactjs - Reddit, accessed March 18, 2025, https://www.reddit.com/r/reactjs/comments/1h873rr/why_is_the_react_19_migration_such_a_mess/
  114. Should we migrate to React 19? - Stack Overflow, accessed March 18, 2025, https://stackoverflow.com/beta/discussions/79276238/should-we-migrate-to-react-19
  115. React 19 or React 18 for new production : r/reactjs - Reddit, accessed March 18, 2025, https://www.reddit.com/r/reactjs/comments/1i762nm/react_19_or_react_18_for_new_production/
  116. React Basics: Best Practices for Updating React - Telerik.com, accessed March 18, 2025, https://www.telerik.com/blogs/react-basics-best-practices-updating-react
  117. React 18 to 19 Migration - Codemod.com, accessed March 18, 2025, https://docs.codemod.com/guides/migrations/react-18-19
  118. Strategy and Tips for Migrating to React [2024] - Brainhub, accessed March 18, 2025, https://brainhub.eu/library/migrating-to-react

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions