Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

React 19 foundation: run tests against 19, then drop React 16/17

Đang mở
#789 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
55/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
github-actions, react, typescript
Lĩnh vực
ci-cd, testing

Hướng nghiên cứu

Bắt đầu với ma trận job kiểm thử, package.json và tệp lock để theo dõi các tổ hợp React và Node hiện tại. Trước tiên, triển khai phạm vi bao phủ của job kiểm thử React 19, sau đó xác minh rằng dependency peer được nêu, việc loại bỏ shim, ma trận CI và bộ kiểm thử React 19 đều đạt các tiêu chí chấp nhận.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

v5

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 || experimental becomes ^18 || ^19
  • delete the use-sync-external-store shim 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.react reads ^18 || ^19
  • use-sync-external-store is absent from package.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.
Ngôn ngữ chính
TypeScript
Star
3.6k
Fork
403
Merge trung bình
5 ngày 1 giờ
Pull request đã merge (30 ngày)
10

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của FirebaseExtended/reactfire

Tất cả issue của FirebaseExtended/reactfire

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.