Skip to content

Commit 891356a

Browse files
kijejmyrland
andauthored
React 19 compatibility by upgrading to redux v5 and updating peer dependency ranges (#942)
* React 19 compatibility by upgrading to redux v5 and updating peer dependency ranges * fix dtslint error due to outdated typescript version * update caniuse-lite * 6.1.0-alpha.0 * Bump node versions for actions * Bumps version --------- Co-authored-by: Jørn Myrland <jam@justify.no>
1 parent 52c6627 commit 891356a

File tree

22 files changed

+1195
-1067
lines changed

22 files changed

+1195
-1067
lines changed

.github/actions/setup-node/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ runs:
66
steps:
77
- uses: actions/setup-node@v3
88
with:
9-
node-version: 14.x
9+
node-version: 22.x
1010
cache: 'yarn'

examples/kanban/package.json

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,17 @@
1313
},
1414
"dependencies": {
1515
"easy-peasy": "^6.0.0",
16-
"react": "^18.2.0",
17-
"react-dom": "^18.2.0"
16+
"react": "^19.0.0",
17+
"react-dom": "^19.0.0"
1818
},
1919
"devDependencies": {
2020
"@tailwindcss/forms": "^0.5.3",
21-
"@testing-library/jest-dom": "^5.16.5",
22-
"@testing-library/react": "^13.4.0",
23-
"@testing-library/user-event": "^14.4.3",
24-
"@types/react": "^18.0.20",
25-
"@types/react-dom": "^18.0.6",
21+
"@testing-library/jest-dom": "^6.6.3",
22+
"@testing-library/react": "^16.2.0",
23+
"@testing-library/dom": "^10.0.0",
24+
"@testing-library/user-event": "^14.6.1",
25+
"@types/react": "^19.0.10",
26+
"@types/react-dom": "^19.0.4",
2627
"@typescript-eslint/eslint-plugin": "^5.10.2",
2728
"@typescript-eslint/parser": "^5.10.2",
2829
"@vitejs/plugin-react": "^1.3.2",

examples/kanban/yarn.lock

Lines changed: 59 additions & 366 deletions
Large diffs are not rendered by default.

examples/nextjs-ssr/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
},
99
"dependencies": {
1010
"easy-peasy": "^6.0.0",
11-
"next": "14.2.21",
12-
"react": "18.2.0",
13-
"react-dom": "18.2.0",
14-
"react-redux": "7.1.3",
15-
"redux": "4.0.5",
16-
"redux-devtools-extension": "2.13.8",
17-
"redux-thunk": "2.3.0"
11+
"next": "15.1.7",
12+
"react": "19.0.0",
13+
"react-dom": "19.0.0",
14+
"react-redux": "9.2.0",
15+
"redux": "5.0.1",
16+
"redux-devtools-extension": "2.13.9",
17+
"redux-thunk": "3.1.0"
1818
},
1919
"license": "MIT",
2020
"keywords": [],

examples/nextjs-ssr/yarn.lock

Lines changed: 318 additions & 177 deletions
Large diffs are not rendered by default.

examples/nextjs-todo/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
},
1111
"dependencies": {
1212
"easy-peasy": "^6.0.0",
13-
"next": "14.2.21",
14-
"react": "18.2.0",
15-
"react-dom": "18.2.0"
13+
"next": "15.1.7",
14+
"react": "19.0.0",
15+
"react-dom": "19.0.0"
1616
},
1717
"devDependencies": {
1818
"@types/node": "18.7.18",
19-
"@types/react": "18.0.20",
20-
"@types/react-dom": "18.0.6",
19+
"@types/react": "19.0.9",
20+
"@types/react-dom": "19.0.3",
2121
"eslint": "8.23.1",
2222
"eslint-config-next": "12.3.0",
2323
"typescript": "4.8.3"

examples/nextjs-todo/yarn.lock

Lines changed: 285 additions & 132 deletions
Large diffs are not rendered by default.

examples/simple-todo/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
},
1313
"dependencies": {
1414
"easy-peasy": "^6.0.0",
15-
"react": "^18.2.0",
16-
"react-dom": "^18.2.0"
15+
"react": "^19.0.0",
16+
"react-dom": "^19.0.0"
1717
},
1818
"devDependencies": {
19-
"@types/react": "^18.0.20",
20-
"@types/react-dom": "^18.0.6",
19+
"@types/react": "^19.0.8",
20+
"@types/react-dom": "^19.0.3",
2121
"@typescript-eslint/eslint-plugin": "^5.10.2",
2222
"@typescript-eslint/parser": "^5.10.2",
2323
"@vitejs/plugin-react": "^1.3.2",

examples/simple-todo/src/main.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import { StoreProvider } from 'easy-peasy';
22
import React from 'react';
3-
import ReactDOM from 'react-dom';
3+
import { createRoot } from 'react-dom/client';
44

55
import App from './App';
66
import store from './store';
77

8-
ReactDOM.render(
8+
const root = createRoot(document.getElementById('root')!);
9+
10+
root.render(
911
<React.StrictMode>
1012
<StoreProvider store={store}>
1113
<App />
1214
</StoreProvider>
1315
</React.StrictMode>,
14-
document.getElementById('root'),
1516
);

examples/simple-todo/yarn.lock

Lines changed: 44 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -210,13 +210,20 @@
210210
"@babel/plugin-syntax-jsx" "^7.22.5"
211211
"@babel/types" "^7.22.5"
212212

213-
"@babel/runtime@^7.17.2", "@babel/runtime@^7.20.7", "@babel/runtime@^7.9.2":
213+
"@babel/runtime@^7.20.7":
214214
version "7.22.6"
215215
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438"
216216
integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==
217217
dependencies:
218218
regenerator-runtime "^0.13.11"
219219

220+
"@babel/runtime@^7.22.6", "@babel/runtime@^7.9.2":
221+
version "7.26.7"
222+
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.7.tgz#f4e7fe527cd710f8dc0618610b61b4b060c3c341"
223+
integrity sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==
224+
dependencies:
225+
regenerator-runtime "^0.14.0"
226+
220227
"@babel/template@^7.22.5":
221228
version "7.22.5"
222229
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec"
@@ -388,32 +395,18 @@
388395
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
389396
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
390397

391-
"@types/prop-types@*":
392-
version "15.7.5"
393-
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
394-
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
395-
396-
"@types/react-dom@^18.0.6":
397-
version "18.2.7"
398-
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63"
399-
integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==
400-
dependencies:
401-
"@types/react" "*"
398+
"@types/react-dom@^19.0.3":
399+
version "19.0.3"
400+
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.0.3.tgz#0804dfd279a165d5a0ad8b53a5b9e65f338050a4"
401+
integrity sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==
402402

403-
"@types/react@*", "@types/react@^18.0.20":
404-
version "18.2.16"
405-
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.16.tgz#403dda0e933caccac9efde569923239ac426786c"
406-
integrity sha512-LLFWr12ZhBJ4YVw7neWLe6Pk7Ey5R9OCydfuMsz1L8bZxzaawJj2p06Q8/EFEHDeTBQNFLF62X+CG7B2zIyu0Q==
403+
"@types/react@^19.0.8":
404+
version "19.0.8"
405+
resolved "https://registry.yarnpkg.com/@types/react/-/react-19.0.8.tgz#7098e6159f2a61e4f4cef2c1223c044a9bec590e"
406+
integrity sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw==
407407
dependencies:
408-
"@types/prop-types" "*"
409-
"@types/scheduler" "*"
410408
csstype "^3.0.2"
411409

412-
"@types/scheduler@*":
413-
version "0.16.3"
414-
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5"
415-
integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==
416-
417410
"@types/semver@^7.3.12":
418411
version "7.5.0"
419412
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a"
@@ -858,13 +851,13 @@ doctrine@^3.0.0:
858851
esutils "^2.0.2"
859852

860853
easy-peasy@^6.0.0:
861-
version "6.0.1"
862-
resolved "https://registry.yarnpkg.com/easy-peasy/-/easy-peasy-6.0.1.tgz#f8975194a8eeea65b0df753e3c04c05c0919d73f"
863-
integrity sha512-++JP4m57HPNM9AbED/QDJLoYK0VwZAFFqh59GaAiTfpm/GB+5gBV3KIwhohTqG3GZoG2+5tlz52mkHfhyMmNpw==
854+
version "6.0.5"
855+
resolved "https://registry.yarnpkg.com/easy-peasy/-/easy-peasy-6.0.5.tgz#4e243844384a54f5fa324ac88db2ab5db7b91e01"
856+
integrity sha512-JRtbPp0uYVjCjG6CFr+lg7WqSHhB8p8SGBJihC2h3veP2a0EwUDYMlsSfWrYL2H7EiETVAlMbSusa5h2Tej6iQ==
864857
dependencies:
865-
"@babel/runtime" "^7.17.2"
858+
"@babel/runtime" "^7.22.6"
866859
fast-deep-equal "^3.1.3"
867-
immer "^9.0.12"
860+
immer "^9.0.21"
868861
redux "^4.1.2"
869862
redux-thunk "^2.4.1"
870863
ts-toolbelt "^9.6.0"
@@ -1550,7 +1543,7 @@ ignore@^5.2.0:
15501543
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
15511544
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
15521545

1553-
immer@^9.0.12:
1546+
immer@^9.0.21:
15541547
version "9.0.21"
15551548
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176"
15561549
integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==
@@ -1806,7 +1799,7 @@ lodash.merge@^4.6.2:
18061799
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
18071800
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
18081801

1809-
loose-envify@^1.1.0, loose-envify@^1.4.0:
1802+
loose-envify@^1.4.0:
18101803
version "1.4.0"
18111804
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
18121805
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -2094,13 +2087,12 @@ queue-microtask@^1.2.2:
20942087
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
20952088
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
20962089

2097-
react-dom@^18.2.0:
2098-
version "18.2.0"
2099-
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
2100-
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
2090+
react-dom@^19.0.0:
2091+
version "19.0.0"
2092+
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0.tgz#43446f1f01c65a4cd7f7588083e686a6726cfb57"
2093+
integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==
21012094
dependencies:
2102-
loose-envify "^1.1.0"
2103-
scheduler "^0.23.0"
2095+
scheduler "^0.25.0"
21042096

21052097
react-is@^16.13.1:
21062098
version "16.13.1"
@@ -2112,12 +2104,10 @@ react-refresh@^0.13.0:
21122104
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.13.0.tgz#cbd01a4482a177a5da8d44c9755ebb1f26d5a1c1"
21132105
integrity sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==
21142106

2115-
react@^18.2.0:
2116-
version "18.2.0"
2117-
resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
2118-
integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
2119-
dependencies:
2120-
loose-envify "^1.1.0"
2107+
react@^19.0.0:
2108+
version "19.0.0"
2109+
resolved "https://registry.yarnpkg.com/react/-/react-19.0.0.tgz#6e1969251b9f108870aa4bff37a0ce9ddfaaabdd"
2110+
integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==
21212111

21222112
readable-stream@^2.2.2:
21232113
version "2.3.8"
@@ -2149,6 +2139,11 @@ regenerator-runtime@^0.13.11:
21492139
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
21502140
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
21512141

2142+
regenerator-runtime@^0.14.0:
2143+
version "0.14.1"
2144+
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
2145+
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
2146+
21522147
regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0:
21532148
version "1.5.0"
21542149
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
@@ -2231,12 +2226,10 @@ safe-regex-test@^1.0.0:
22312226
get-intrinsic "^1.1.3"
22322227
is-regex "^1.1.4"
22332228

2234-
scheduler@^0.23.0:
2235-
version "0.23.0"
2236-
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
2237-
integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
2238-
dependencies:
2239-
loose-envify "^1.1.0"
2229+
scheduler@^0.25.0:
2230+
version "0.25.0"
2231+
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0.tgz#336cd9768e8cceebf52d3c80e3dcf5de23e7e015"
2232+
integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==
22402233

22412234
semver@^6.3.0, semver@^6.3.1:
22422235
version "6.3.1"
@@ -2516,9 +2509,9 @@ uri-js@^4.2.2:
25162509
punycode "^2.1.0"
25172510

25182511
use-sync-external-store@^1.2.0:
2519-
version "1.2.0"
2520-
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
2521-
integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
2512+
version "1.4.0"
2513+
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc"
2514+
integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==
25222515

25232516
util-deprecate@~1.0.1:
25242517
version "1.0.2"

index.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Component } from 'react';
22
import {
3-
AnyAction,
3+
UnknownAction,
44
compose,
55
Dispatch as ReduxDispatch,
66
Middleware,
@@ -11,7 +11,7 @@ import {
1111
} from 'redux';
1212
import { O } from 'ts-toolbelt';
1313

14-
export type ReduxAction = AnyAction;
14+
export type ReduxAction = UnknownAction;
1515

1616
/**
1717
* Picks only the keys of a certain type
@@ -429,7 +429,7 @@ export interface Store<
429429
*/
430430
export type Dispatch<
431431
StoreModel extends object = {},
432-
Action extends ReduxAction = AnyAction,
432+
Action extends ReduxAction = UnknownAction,
433433
> = Actions<StoreModel> & ReduxDispatch<Action>;
434434

435435
// #endregion
@@ -751,7 +751,7 @@ export function effectOn<
751751
* router: Reducer<ReactRouterState>;
752752
* }
753753
*/
754-
export type Reducer<State = any, Action extends ReduxAction = AnyAction> = {
754+
export type Reducer<State = any, Action extends ReduxAction = UnknownAction> = {
755755
type: 'reducer';
756756
result: State;
757757
};

0 commit comments

Comments
 (0)