Three years ago Dan Abramov introduced Suspense and Async Rendering with React at JSConf Iceland 2018.
In the three years since, terminology took some twists and turns.
"Suspense" was limited to React.lazy
in versions 16 and 17.
"Async React" became "Concurrent Mode" ā a top-down rendering mode that could be enabled for Strict Mode
-compatible applications.
React 18 has new-new language. And I'd like to start my tour of React 18 changes by rebasing on new terminology used in the ReactWG (React Working Group).
Concurrent Mode => Concurrent everything
"Concurrent Mode" is no more. Bye š. We barely knew ya!
Instead of a concurrent mode, concurrency is possible in all React 18 apps.
React 18 adds a set of new features, sometimes called "concurrent features" or "concurrent APIs". These features rely on a new mechanism called "concurrent rendering" that weren't possible before it.
It's a subtle but important change.
Concurrency is no longer something that you opt into at the root of your application. It's an enrichment that happens as you use "Concurrent features and APIs" like startTransition
.
Concurrent rendering is not a mode.
Concurrent rendering is React.
New-new, React 18 terminology
Here's the state of React 18 terminology shifts I've seen in ReactWG discussions:
Fired:
- ā Concurrent Mode
Hired:
- ā Concurrent React
- ā Concurrent rendering
- ā Concurrent features and APIs
Takeaway
In React 18, Concurrent React is React. Concurrent features and APIs ā like startTransition
ā expose controls for opting into concurrent rendering.
Acknowladgements
This post was reviewed and improved by the fantastic folks in the reactwg. Lessons learned while writing this post are available via the reactwg GitHub discussions.