From c7ab09af4ec1a3099c7c9dcd5adf8df2096b4464 Mon Sep 17 00:00:00 2001 From: Tyler Dixon Date: Wed, 5 Aug 2026 12:30:17 -0700 Subject: [PATCH 1/2] docs(example): drop the concurrent mode framing from the demo entry Follow-up to #778, which removed the same obsolete premise from the README but left this copy of it. The comment told readers they need "an experimental build of React to use Concurrent mode" and linked reactjs.org/docs/concurrent-mode-adoption.html, a dead page. React 18 shipped in 2022 and concurrent mode was abandoned as a concept rather than stabilised, so the instruction could not be followed. The two commented-out react/experimental and react-dom/experimental imports existed only to serve that premise and go with it. Comments only. No active code changes, so the demo behaves identically. This removes the last reactjs.org reference in the repository. Refs #756 --- example/index.tsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/example/index.tsx b/example/index.tsx index 536f0242..b235b648 100644 --- a/example/index.tsx +++ b/example/index.tsx @@ -2,13 +2,12 @@ import * as React from 'react'; import * as ReactDOM from 'react-dom'; /** - * Use this instead of NonConcurrentModeApp to see a ReactFire demo with Suspense/Concurrent mode enabled + * This demo renders without Suspense. To see the Suspense version instead, uncomment the + * import below and the render block at the bottom of this file. * - * You'll need to use an experimental build of React to use Concurrent mode - * https://reactjs.org/docs/concurrent-mode-adoption.html#installation + * Suspense is off by default in ReactFire and is opted into with the `suspense` prop on + * `FirebaseAppProvider`. See the Suspense section of the README. */ -// import {} from 'react/experimental' // make TS aware of experimental features -// import {} from 'react-dom/experimental' // make TS aware of experimental features // import { App as ConcurrentModeApp } from './withSuspense/App'; import { App as NonConcurrentModeApp } from './withoutSuspense/App'; import './index.css'; @@ -37,7 +36,7 @@ ReactDOM.render( ); /** - * FOR CONCURRENT MODE + * FOR THE SUSPENSE VERSION */ // ReactDOM.createRoot(rootElement).render( // From 8d54e0a8a04ca0457891dd14d8405ec8b33cf781 Mon Sep 17 00:00:00 2001 From: Tyler Dixon Date: Thu, 6 Aug 2026 10:10:37 -0700 Subject: [PATCH 2/2] docs(example): note that the Suspense path does not run as checked in Armando installed the example's pinned versions and confirmed the uncomment instruction cannot be followed: react-dom is pinned at 17.0.2, where createRoot is undefined at runtime and absent from the root react-dom types, and withSuspense/Firestore.tsx imports useTransition, which is also undefined on 17. Uncommenting the block alongside the existing ReactDOM.render call would also put two roots on one element. The previous wording named a precondition; the replacement read as a complete two-step procedure, which promised more than the file can deliver. This says what is missing instead. Still comments only. --- example/index.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/example/index.tsx b/example/index.tsx index b235b648..dc047c14 100644 --- a/example/index.tsx +++ b/example/index.tsx @@ -2,8 +2,12 @@ import * as React from 'react'; import * as ReactDOM from 'react-dom'; /** - * This demo renders without Suspense. To see the Suspense version instead, uncomment the - * import below and the render block at the bottom of this file. + * This demo renders without Suspense. The Suspense version is the commented-out import + * below plus the render block at the bottom of this file. + * + * That path does not run as checked in: it needs react and react-dom on 18 or later, which + * this example is not yet on, and the `ReactDOM.render` call below has to be replaced + * rather than left alongside it. See #781 for the details. * * Suspense is off by default in ReactFire and is opted into with the `suspense` prop on * `FirebaseAppProvider`. See the Suspense section of the README.