Skip to content

Commit 7fba440

Browse files
authored
enhance: React 19 JSX compatibility (#3071)
1 parent 2a9738a commit 7fba440

File tree

16 files changed

+52
-36
lines changed

16 files changed

+52
-36
lines changed

.changeset/thick-walls-act.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
'@data-client/use-enhanced-reducer': patch
3+
'@data-client/hooks': patch
4+
'@data-client/react': patch
5+
'@data-client/redux': patch
6+
'@data-client/test': patch
7+
'@data-client/img': patch
8+
'@data-client/ssr': patch
9+
---
10+
11+
React 19 JSX runtime compatibility.
12+
13+
BREAKING CHANGE: Min React version 16.8.4 -> 16.14
14+
15+
16.14 is the first version of React to include JSX runtime.

babel.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module.exports = function (api) {
99
[
1010
'@anansi',
1111
{
12+
hasJsxRuntime: true,
1213
loose: true,
1314
resolver: {
1415
resolvePath(sourcePath, currentFile, opts) {

packages/hooks/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@
7777
"@data-client/normalizr": "^0.12.3"
7878
},
7979
"peerDependencies": {
80-
"@types/react": "^16.8.4 || ^17.0.0 || ^18.0.0-0 || ^19.0.0",
81-
"react": "^16.8.4 || ^17.0.0 || ^18.0.0-0 || ^19.0.0"
80+
"@types/react": "^16.14.0 || ^17.0.0 || ^18.0.0-0 || ^19.0.0",
81+
"react": "^16.14.0 || ^17.0.0 || ^18.0.0-0 || ^19.0.0"
8282
},
8383
"peerDependenciesMeta": {
8484
"@types/react": {

packages/img/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@
7474
},
7575
"peerDependencies": {
7676
"@data-client/react": "^0.1.0 || ^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.7.0 || ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0",
77-
"@types/react": "^16.8.4 || ^17.0.0 || ^18.0.0-0 || ^19.0.0",
78-
"react": "^16.8.4 || ^17.0.0 || ^18.0.0-0 || ^19.0.0"
77+
"@types/react": "^16.14.0 || ^17.0.0 || ^18.0.0-0 || ^19.0.0",
78+
"react": "^16.14.0 || ^17.0.0 || ^18.0.0-0 || ^19.0.0"
7979
},
8080
"peerDependenciesMeta": {
8181
"@types/react": {

packages/img/src/Img.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { useSuspense } from '@data-client/react';
22
import React from 'react';
3+
import type { JSX } from 'react';
34

45
import getImage from './getImage.js';
56

packages/react/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,8 @@
133133
},
134134
"peerDependencies": {
135135
"@react-navigation/native": "^6.0.0",
136-
"@types/react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
137-
"react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0"
136+
"@types/react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
137+
"react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
138138
},
139139
"peerDependenciesMeta": {
140140
"@react-navigation/native": {

packages/react/src/components/AsyncBoundary.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { memo, Suspense } from 'react';
2+
import type { JSX } from 'react';
23

34
import ErrorBoundary, { ErrorBoundaryProps } from './ErrorBoundary.js';
45

packages/react/src/components/CacheProvider.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
} from '@data-client/core';
1010
import type { State, Manager } from '@data-client/core';
1111
import React, { useMemo, useRef } from 'react';
12+
import type { JSX } from 'react';
1213

1314
import CacheStore from './CacheStore.js';
1415
import type { DevToolsPosition } from './DevToolsButton.js';
@@ -51,7 +52,8 @@ Try using https://dataclient.io/docs/api/ExternalCacheProvider for server entry
5152
);
5253
}
5354
// contents of this component expected to be relatively stable
54-
const controllerRef: React.MutableRefObject<DataController> = useRef<any>();
55+
const controllerRef: React.MutableRefObject<DataController> =
56+
useRef<any>(undefined);
5557
if (!controllerRef.current) controllerRef.current = new Controller();
5658
//TODO: bind all methods so destructuring works
5759

packages/react/src/components/ErrorBoundary.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react';
2+
import type { JSX } from 'react';
23

34
import ErrorFallback from './ErrorFallback.js';
45

packages/react/src/components/UniversalSuspense.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { Suspense } from 'react';
2+
import type { JSX } from 'react';
23

34
import { LegacyReact, SSR } from './LegacyReact.js';
45

0 commit comments

Comments
 (0)