Add a published .d.ts diff to the release process to catch breaking type changes
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 55/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- typescript
Rechercherichtung
Beginne mit dem bestehenden Release- oder CI-Prozess des Repositorys und verwende npm pack, um das zuletzt veröffentlichte Paket mit dem Release Candidate zu vergleichen. Extrahiere dist/*.d.ts, identifiziere nicht additive Änderungen an Typen und lasse die Prüfung fehlschlagen oder verlange eine explizite Bestätigung eines Breaking Changes mit einem entsprechenden Versionssprung.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Problem
4.2.4 shipped as a patch but contained breaking TypeScript type changes with no changelog note. The main one: ObservableStatus<T> was refactored from a flat interface (data: T) into a discriminated union (data: T | undefined unless narrowed on status), which breaks the standard destructure-and-use pattern across every data hook, including the documented suspense pattern. It is type-only (no runtime impact), but it reds strict-TS consumer CI on upgrade.
It slipped through because:
- The change came in via #583 ("use
useSyncExternalStoreto sync data"), whose title looked like an internals change, not a public API break. - It then sat unreleased for ~3 years (v4.2.3 was 2022-08, #583 merged 2023-07).
- 4.2.4 batched 35 PRs of accumulated
maininto one bump, with no step auditing the cumulative public type surface.
Proposal
Add a release-time (or CI) check that diffs the candidate's emitted types against the last published version:
npm packthe latest published version, extractdist/*.d.ts.npm packthe release candidate, extractdist/*.d.ts.- Diff them. Any non-additive change (removed/narrowed/changed signature) fails the check or requires an explicit "breaking" acknowledgment and a minor/major bump.
This exact diff would have flagged both the ObservableStatus union change and the useFirestoreDocData widening (#733) immediately.
Related
- Remediation for the live 4.2.4 release is tracked separately (deprecate + re-cut as 4.3.0 with a migration note).
- Surfaced while reviewing #740.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 3.6k
- Forks
- 403
- Ø Merge
- 5 T. 1 Std.
- Gemergte PRs (30 T.)
- 10
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus FirebaseExtended/reactfire
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 38/100
FirebaseExtended/reactfire#801 ·
-
v5
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
FirebaseExtended/reactfire#793 ·
-
v5
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
FirebaseExtended/reactfire#790 · 2 Kommentare ·
-
v5
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
FirebaseExtended/reactfire#789 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
FirebaseExtended/reactfire#788 ·
Alle Issues in FirebaseExtended/reactfire
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
bcgov/bc-wallet-mobile#4761 · 1 Kommentar ·
-
external-issue to-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
area-deployment area-integrations triage:bot-seen
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 86/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
refactor
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100