React 19 foundation: run tests against 19, then drop React 16/17
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Refactoring
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- github-actions, react, typescript
Direzione di ricerca
Inizia dalla matrice dei job di test, da package.json e dal file di lock per tracciare le combinazioni attuali di React e Node. Implementa prima la copertura del job di test di React 19, quindi verifica che la dipendenza peer indicata, la rimozione dello shim, la matrice CI e la suite React 19 verde soddisfino i criteri di accettazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Tracking issue for the v5 React 19 foundation. Two PRs, in this order.
Why this is first
Every other v5 cluster sits on top of it, and one half of it is a gap rather than a migration: CI type-checks React 19 but has never executed a test against it. The type-check job carries matrix.react: ["18","19"]; the test job's matrix is Node versions only, and the lockfile resolves React 18.2.0. So executed coverage on 19 is zero today.
PR 1: React 19 as an executed test job (CI only)
Adds a react dimension to the test job so the suite actually runs on 19.
This lands first and alone, before any src/ change. The use-sync-external-store shim delegates to React.useSyncExternalStore when it exists, so the suite runs on React 19 with the shim still in place. That gives a measured baseline to compare against once the shim is deleted, instead of changing the runtime and the dependency in one step.
⚠️ Not a one-line matrix addition. The test job currently matrixes node: [22, 24] only. Adding a react dimension doubles the emulator jobs from two to four, each with its own Java setup and emulator cache.
⚠️ That interacts with #776. The firestore flake sits at 7.5% per full-suite run, so doubling the emulator jobs roughly doubles per-PR exposure to a red job. Deliberately not putting a number on it: contention is the suspected mechanism, so the jobs are correlated rather than independent, and multiplying the rate would overstate the precision. This argues for #787's timing data landing before the matrix widens.
Reviewable by anyone; no src/ change, no API surface.
PR 2: drop React 16/17
One PR, one review:
peerDependencies.react:>=16 || experimentalbecomes^18 || ^19- delete the
use-sync-external-storeshim and its dependency - drop the 16/17 entries from the CI matrix
Splitting these buys a second review round trip on what is a single decision.
Acceptance
peerDependencies.reactreads^18 || ^19use-sync-external-storeis absent frompackage.json- the test job runs on React 19 and is green, with the shim gone
Notes
- The
use()suspend-gate swap is out of scope. Spiked: it is a behavioural no-op on React 19.2.8 and React 19 emits no warning for the current throw form, so there is no deprecation pressure and no reason to bundle it here. - Related to #788. "CI type-checks React 19 but never runs a test against it" is a live instance of the pattern that issue collects: a check that passes while measuring nothing. #788 currently has no example attached to it.
- The React floor is
^18 || ^19, not 19-only. Dropping 18 is not part of this.
- Lingua principale
- TypeScript
- Stelle
- 3.6k
- Fork
- 403
- Merge medio
- 5g 1h
- PR unite (30g)
- 10
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di FirebaseExtended/reactfire
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
FirebaseExtended/reactfire#801 ·
-
v5
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
FirebaseExtended/reactfire#793 ·
-
v5
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
FirebaseExtended/reactfire#790 · 2 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
FirebaseExtended/reactfire#788 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
FirebaseExtended/reactfire#784 ·
Tutte le issue di FirebaseExtended/reactfire
Issue simili
-
bug(cli): hapi doctor inline-media prints a fabricated B:\ helper-script path in packaged installs Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Crush Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
catppuccin/catppuccin#3125 ·
-
Add a SECURITY.md Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
ElementsProject/cln-application#167 · 1 commento · 1 reazione ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Quantco/pnpm-licenses#17 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100