Add a published .d.ts diff to the release process to catch breaking type changes
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 55/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- typescript
Direção de pesquisa
Comece pelo processo existente de release ou CI do repositório e use npm pack para comparar o pacote publicado mais recentemente com o release candidate. Extraia dist/*.d.ts, identifique alterações não aditivas nos tipos e faça a verificação falhar ou exija um reconhecimento explícito de breaking change com um incremento de versão apropriado.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- TypeScript
- Estrelas
- 3.6k
- Forks
- 403
- Merge médio
- 5d 1h
- PRs com merge (30d)
- 10
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de FirebaseExtended/reactfire
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 38/100
FirebaseExtended/reactfire#801 ·
-
v5
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
FirebaseExtended/reactfire#793 ·
-
v5
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
FirebaseExtended/reactfire#790 · 2 comentários ·
-
v5
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
FirebaseExtended/reactfire#789 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
FirebaseExtended/reactfire#788 ·
Todas as issues de FirebaseExtended/reactfire
Issues semelhantes
-
ADD openalgoAbertatemplate
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
factory-active factory-automatic task-bug-reproduction-success task-identify-harness-labels-done task-identify-issue-type-done
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
vercel/ai#21528 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
bug Needs: Triage :mag:
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
microsoft/fluentui-contrib#671 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
sveltejs/acorn-typescript#150 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100