`@types/react@^18` in `dependencies` breaks type-checking in React 19 projects
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 50/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- react, typescript
- Bereich
- build-system
Rechercherichtung
The problem is the @types/react entry under dependencies in the braintrust package manifest, added with #2191 for the braintrust/custom-views typings in dist/custom-views.d.ts. Read the manifest and check whether custom views need React types at all. The suggested fix moves @types/react to an optional peer dependency, which is a maintainer decision, so confirm the approach before editing. Done means a React 19 project installs no React 18 types, and custom-views consumers still type-check.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
Since 3.33.0, braintrust lists @types/react: ^18.3.1 under dependencies. As far as I can tell it is only needed for the braintrust/custom-views type definitions (dist/custom-views.d.ts imports ReactNode from react), which came in with #2191.
Because it is a hard dependency, every consumer gets React 18 types installed, including projects that don't use custom views or don't use React at all. In a React 19 project, this can break tsc.
What happened
We use pnpm (workspace) and React 19 (@types/react@19). After upgrading braintrust from 3.32.0 to 3.35.0, pnpm hoisted @types/[email protected] into node_modules/.pnpm/node_modules. Packages that import types from react without declaring @types/react themselves (in our case @sentry/react) then resolved React 18 types, while our own code used React 19 types. tsc --noEmit failed with errors like this:
error TS2322: Type 'React.ReactNode' is not assignable to type 'import(".../@[email protected]/node_modules/@types/react/index").ReactNode'.
Type 'ReactElement<unknown, string | JSXElementConstructor<any>>' is not assignable to type 'ReactNode'.
Property 'children' is missing in type 'ReactElement<unknown, string | JSXElementConstructor<any>>' but required in type 'ReactPortal'.
We work around it with a pnpm override ("braintrust>@types/react": "^19"), or by staying on 3.32.0.
Versions
braintrust: 3.33.0 – 3.37.1 (not in 3.32.0)@types/reactin the project: 19.2.x- Package manager: pnpm 11 (workspace)
Suggestion
Declare @types/react (and react, if needed) as an optional peer dependency, for example:
"peerDependencies": {
"@types/react": ">=18"
},
"peerDependenciesMeta": {
"@types/react": { "optional": true }
}
That way, projects that use custom views get the @types/react they already have, whatever its version, and other projects don't get React types installed at all.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 29
- Forks
- 22
- Ø Merge
- 1 T. 7 Std.
- Gemergte PRs (30 T.)
- 65
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Kein 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 braintrustdata/braintrust-sdk-javascript
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 28/100
braintrustdata/braintrust-sdk-javascript#2709 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
braintrustdata/braintrust-sdk-javascript#2708 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
braintrustdata/braintrust-sdk-javascript#2707 ·
Maintainer antworten meist innerhalb von 1 Tag
-
typescript
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
braintrustdata/braintrust-sdk-javascript#2686 ·
Maintainer antworten meist innerhalb von 1 Tag
-
typescript
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
braintrustdata/braintrust-sdk-javascript#2685 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in braintrustdata/braintrust-sdk-javascript
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
JuliusBrussee/caveman#1449 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
linagora/twake-calendar-frontend#1924 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Add: Class TV ModaOffencheck:passed streams:add
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 65/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
libnativeapi/nativeapi#21 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
GiganticMinecraft/seichi-playguide#183 ·
Maintainer antworten meist innerhalb von 1 Tag