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" 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
Concurrent rendering is not a mode.
Concurrent rendering is React.
Here's the state of React 18 terminology shifts I've seen in ReactWG discussions:
- ❌ Concurrent Mode
- ✅ Concurrent React
- ✅ Concurrent rendering
- ✅ Concurrent features and APIs
In React 18, Concurrent React is React. Concurrent features and APIs — like
startTransition — expose controls for opting into concurrent rendering.
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.