[compiler][playground] Upgrade to Next 15.2.0-canary.64 (#32428)
Upgrade compiler playground to use the newest nextjs release, which includes react compiler transform pipeline optimizations https://github.com/vercel/next.js/pull/75676/. Also made a drive-by fix to avoid the error `Cannot update a component ('Router') while rendering a different component ('StoreProvider'). To locate the bad setState() call inside 'StoreProvider', follow the stack trace as described in https://react.dev/link/setstate-in-render`. The bad setState came from `history.replaceState({}, '', \`#${hash}\`);`. Prior to this, playground ran side effects in a reducer (i.e. during render). These have now been moved an effect.
mofeiZ committed
Feb 20, 2025 at 12:28 UTC
5f31228d7d17f5959a99456d89a52d467ee2f329
4 files changed
+76
-72
compiler/apps/playground/components/StoreContext.tsx
+7
-8
@@ -6,11 +6,10 @@
6
*/
7
8
import type {Dispatch, ReactNode} from 'react';
9
-import {useReducer} from 'react';
9
+import {useEffect, useReducer} from 'react';
10
import createContext from '../lib/createContext';
11
import {emptyStore} from '../lib/defaultStore';
12
-import type {Store} from '../lib/stores';
13
-import {saveStore} from '../lib/stores';
12
+import {saveStore, type Store} from '../lib/stores';
13
14
const StoreContext = createContext<Store>();
15
@@ -31,6 +30,11 @@ export const useStoreDispatch = StoreDispatchContext.useContext;
30
*/
31
export function StoreProvider({children}: {children: ReactNode}): JSX.Element {
32
const [store, dispatch] = useReducer(storeReducer, emptyStore);
33
+ useEffect(() => {
34
+ if (store !== emptyStore) {
35
+ saveStore(store);
36
+ }
37
+ }, [store]);
38
39
return (
40
<StoreContext.Provider value={store}>
@@ -59,19 +63,14 @@ function storeReducer(store: Store, action: ReducerAction): Store {
63
switch (action.type) {
64
case 'setStore': {
65
const newStore = action.payload.store;
62
-
63
- saveStore(newStore);
66
return newStore;
67
}
68
case 'updateFile': {
69
const {source} = action.payload;
68
-
70
const newStore = {
71
...store,
72
source,
73
};
73
-
74
- saveStore(newStore);
74
return newStore;
75
}
76
}
compiler/apps/playground/next-env.d.ts
+1
-1
@@ -2,4 +2,4 @@
2
/// <reference types="next/image-types/global" />
3
4
// NOTE: This file should not be edited
5
-// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
5
+// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
compiler/apps/playground/package.json
+1
-1
@@ -34,7 +34,7 @@
34
"invariant": "^2.2.4",
35
"lz-string": "^1.5.0",
36
"monaco-editor": "^0.52.0",
37
- "next": "^15.0.1",
37
+ "next": "^15.2.0-canary.64",
38
"notistack": "^3.0.0-alpha.7",
39
"prettier": "^3.3.3",
40
"pretty-format": "^29.3.1",
compiler/apps/playground/yarn.lock
+67
-62
@@ -589,10 +589,10 @@
589
dependencies:
590
"@monaco-editor/loader" "^1.4.0"
591
592
-"@next/env@15.0.1":
593
- version "15.0.1"
594
- resolved "https://registry.yarnpkg.com/@next/env/-/env-15.0.1.tgz#660fe9303e255cec112d3f4198d2897a24bc60b3"
595
- integrity sha512-lc4HeDUKO9gxxlM5G2knTRifqhsY6yYpwuHspBZdboZe0Gp+rZHBNNSIjmQKDJIdRXiXGyVnSD6gafrbQPvILQ==
592
+"@next/env@15.2.0-canary.66":
593
+ version "15.2.0-canary.66"
594
+ resolved "https://registry.yarnpkg.com/@next/env/-/env-15.2.0-canary.66.tgz#c4ca0d502ad099c68927643df9c9b5d75c7b7fbb"
595
+ integrity sha512-/RxW1GJ7a6MJOQ7LOa2bcli7VTjqB7jPyzXwNJQflcYJH4gz1kP6uzg8+IptLJGFSRB58RBKHJk+q1cD8jongA==
596
597
"@next/eslint-plugin-next@15.0.1":
598
version "15.0.1"
@@ -601,45 +601,45 @@
601
dependencies:
602
fast-glob "3.3.1"
603
604
-"@next/swc-darwin-arm64@15.0.1":
605
- version "15.0.1"
606
- resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.1.tgz#b80a25f1569bd0ca03eca9473f7e93e64937e404"
607
- integrity sha512-C9k/Xv4sxkQRTA37Z6MzNq3Yb1BJMmSqjmwowoWEpbXTkAdfOwnoKOpAb71ItSzoA26yUTIo6ZhN8rKGu4ExQw==
608
-
609
-"@next/swc-darwin-x64@15.0.1":
610
- version "15.0.1"
611
- resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.1.tgz#00dcf79ec7c638a85c3b9ff2e2de2bfb09c1c250"
612
- integrity sha512-uHl13HXOuq1G7ovWFxCACDJHTSDVbn/sbLv8V1p+7KIvTrYQ5HNoSmKBdYeEKRRCbEmd+OohOgg9YOp8Ux3MBg==
613
-
614
-"@next/swc-linux-arm64-gnu@15.0.1":
615
- version "15.0.1"
616
- resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.1.tgz#faab5f7ffcc6d1a15e8dea1cb9953966658b39bf"
617
- integrity sha512-LvyhvxHOihFTEIbb35KxOc3q8w8G4xAAAH/AQnsYDEnOvwawjL2eawsB59AX02ki6LJdgDaHoTEnC54Gw+82xw==
618
-
619
-"@next/swc-linux-arm64-musl@15.0.1":
620
- version "15.0.1"
621
- resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.1.tgz#97abada9a782ab5b3cb42cf0d4799cbc2e733351"
622
- integrity sha512-vFmCGUFNyk/A5/BYcQNhAQqPIw01RJaK6dRO+ZEhz0DncoW+hJW1kZ8aH2UvTX27zPq3m85zN5waMSbZEmANcQ==
623
-
624
-"@next/swc-linux-x64-gnu@15.0.1":
625
- version "15.0.1"
626
- resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.1.tgz#548bd47c49fe6d819302139aff8766eb704322e2"
627
- integrity sha512-5by7IYq0NCF8rouz6Qg9T97jYU68kaClHPfGpQG2lCZpSYHtSPQF1kjnqBTd34RIqPKMbCa4DqCufirgr8HM5w==
628
-
629
-"@next/swc-linux-x64-musl@15.0.1":
630
- version "15.0.1"
631
- resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.1.tgz#84423fbd3a058dd6ae8322e530878f0ec7a1027a"
632
- integrity sha512-lmYr6H3JyDNBJLzklGXLfbehU3ay78a+b6UmBGlHls4xhDXBNZfgb0aI67sflrX+cGBnv1LgmWzFlYrAYxS1Qw==
633
-
634
-"@next/swc-win32-arm64-msvc@15.0.1":
635
- version "15.0.1"
636
- resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.1.tgz#723c2ced12a998fb40dc901b8faea9170e788c2f"
637
- integrity sha512-DS8wQtl6diAj0eZTdH0sefykm4iXMbHT4MOvLwqZiIkeezKpkgPFcEdFlz3vKvXa2R/2UEgMh48z1nEpNhjeOQ==
638
-
639
-"@next/swc-win32-x64-msvc@15.0.1":
640
- version "15.0.1"
641
- resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.1.tgz#ec7e3befc0bcc47527537b1eda2b3745beb15a09"
642
- integrity sha512-4Ho2ggvDdMKlZ/0e9HNdZ9ngeaBwtc+2VS5oCeqrbXqOgutX6I4U2X/42VBw0o+M5evn4/7v3zKgGHo+9v/VjA==
604
+"@next/swc-darwin-arm64@15.2.0-canary.66":
605
+ version "15.2.0-canary.66"
606
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.0-canary.66.tgz#368438cf713c439b5b4c44d54b5c3b31ee5b772d"
607
+ integrity sha512-sVzNJWTekcLOdqkDMistBGr84AVh9eSu4o5JQNEOdxHry4jiF8lqixpOg0+Twj2RRuv4bx32h5xaRVvCSUpITQ==
608
+
609
+"@next/swc-darwin-x64@15.2.0-canary.66":
610
+ version "15.2.0-canary.66"
611
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.0-canary.66.tgz#3ddc3f4f6e86e204727770e5984cabf52f852472"
612
+ integrity sha512-Avv6Nf/0j0WVqY72Q0mK2glGhvN7LT7iVF31iBYUe/Cbf2cXBjgpXUVmksJjg+2Fi6uTEpaMoZWSVEpJyPkjVQ==
613
+
614
+"@next/swc-linux-arm64-gnu@15.2.0-canary.66":
615
+ version "15.2.0-canary.66"
616
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.0-canary.66.tgz#cd3683bf569c66444340b1e4d876913584e93aea"
617
+ integrity sha512-kUPejaStjKpF79fz4525DKQKADtUuE+T6j7IvLQsZuWrSX3a5Mix+i52fdTzMJ+sFGg3v147wopZt6L6JMIxxA==
618
+
619
+"@next/swc-linux-arm64-musl@15.2.0-canary.66":
620
+ version "15.2.0-canary.66"
621
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.0-canary.66.tgz#453836b11efdb50b91cf8a6cfbce8779f6778dd9"
622
+ integrity sha512-U8l8jaZ+BAU5wn3bw7PRqq4vGTpObBt+7JbJLpbDqB1GfkZdCDc4nGtqAfLy3pY0O4lEfqal9jrsEVtUBCbfHg==
623
+
624
+"@next/swc-linux-x64-gnu@15.2.0-canary.66":
625
+ version "15.2.0-canary.66"
626
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.0-canary.66.tgz#f02b295febaacf8d041f9f149c30c41aea16a81f"
627
+ integrity sha512-c+AV8ZN1znGBHu5BACGym+9FhV8+213XVHFI7i2J7TSsJ6T+Eofhwn0tSn1Vy/XpVmpyoEdkwepL+djbdQAGhw==
628
+
629
+"@next/swc-linux-x64-musl@15.2.0-canary.66":
630
+ version "15.2.0-canary.66"
631
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.0-canary.66.tgz#f942c000ba3ffc0289520d25fa1067a75e72fa41"
632
+ integrity sha512-4mTIv86qyXuo8NfjigSQ7rk2cDwM8/f8R/kf3hNh8NF1Aaat2RrEet9a/SbsuNpdhhNnPI5RcRwpIJx2JQSPcQ==
633
+
634
+"@next/swc-win32-arm64-msvc@15.2.0-canary.66":
635
+ version "15.2.0-canary.66"
636
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.0-canary.66.tgz#0ffdcf5c74b5aa6214307f2ae4aa84f1526e6bf9"
637
+ integrity sha512-NPnfsDQXk44h8VtncWq2AgLjHDbUMsc8Tpz7pcLe9qb8lZSxZ9jYbV7NwKzgd+qJbjy/58vgCWhL5PhyXDlWwQ==
638
+
639
+"@next/swc-win32-x64-msvc@15.2.0-canary.66":
640
+ version "15.2.0-canary.66"
641
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.0-canary.66.tgz#458245850cf407d2551155e4662785c109f58bda"
642
+ integrity sha512-L/ef++GJqW+T3g2x6mrZ2vrBK+6QS9Ieam8EqK9dG7cFKv7Gqm9yrHvDuVse62hnNB11ZdxfDDKrs9vabuQLlw==
643
644
"@nodelib/fs.scandir@2.1.5":
645
version "2.1.5"
@@ -716,12 +716,12 @@
716
resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
717
integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
718
719
-"@swc/helpers@0.5.13":
720
- version "0.5.13"
721
- resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c"
722
- integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==
719
+"@swc/helpers@0.5.15":
720
+ version "0.5.15"
721
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7"
722
+ integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==
723
dependencies:
724
- tslib "^2.4.0"
724
+ tslib "^2.8.0"
725
726
"@types/json5@^0.0.29":
727
version "0.0.29"
@@ -2682,27 +2682,27 @@ natural-compare@^1.4.0:
2682
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
2683
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
2684
2685
-next@^15.0.1:
2686
- version "15.0.1"
2687
- resolved "https://registry.yarnpkg.com/next/-/next-15.0.1.tgz#a0e8eda35d803cb7f8092b2a2eb9d072e22bf21d"
2688
- integrity sha512-PSkFkr/w7UnFWm+EP8y/QpHrJXMqpZzAXpergB/EqLPOh4SGPJXv1wj4mslr2hUZBAS9pX7/9YLIdxTv6fwytw==
2685
+next@^15.2.0-canary.64:
2686
+ version "15.2.0-canary.66"
2687
+ resolved "https://registry.yarnpkg.com/next/-/next-15.2.0-canary.66.tgz#cb5ee4453c88f247b6e74fe33fd181eca58e7c86"
2688
+ integrity sha512-S+gsEu8vxxejI7nKqtCLqZlTi9L40xelLRK/Fgtvm/XT8W8ziLp3KMtN4I9Si5nEMU5uv7bllIfd04kVX8+HIw==
2689
dependencies:
2690
- "@next/env" "15.0.1"
2690
+ "@next/env" "15.2.0-canary.66"
2691
"@swc/counter" "0.1.3"
2692
- "@swc/helpers" "0.5.13"
2692
+ "@swc/helpers" "0.5.15"
2693
busboy "1.6.0"
2694
caniuse-lite "^1.0.30001579"
2695
postcss "8.4.31"
2696
styled-jsx "5.1.6"
2697
optionalDependencies:
2698
- "@next/swc-darwin-arm64" "15.0.1"
2699
- "@next/swc-darwin-x64" "15.0.1"
2700
- "@next/swc-linux-arm64-gnu" "15.0.1"
2701
- "@next/swc-linux-arm64-musl" "15.0.1"
2702
- "@next/swc-linux-x64-gnu" "15.0.1"
2703
- "@next/swc-linux-x64-musl" "15.0.1"
2704
- "@next/swc-win32-arm64-msvc" "15.0.1"
2705
- "@next/swc-win32-x64-msvc" "15.0.1"
2698
+ "@next/swc-darwin-arm64" "15.2.0-canary.66"
2699
+ "@next/swc-darwin-x64" "15.2.0-canary.66"
2700
+ "@next/swc-linux-arm64-gnu" "15.2.0-canary.66"
2701
+ "@next/swc-linux-arm64-musl" "15.2.0-canary.66"
2702
+ "@next/swc-linux-x64-gnu" "15.2.0-canary.66"
2703
+ "@next/swc-linux-x64-musl" "15.2.0-canary.66"
2704
+ "@next/swc-win32-arm64-msvc" "15.2.0-canary.66"
2705
+ "@next/swc-win32-x64-msvc" "15.2.0-canary.66"
2706
sharp "^0.33.5"
2707
2708
node-releases@^2.0.18:
@@ -3559,6 +3559,11 @@ tslib@^2.1.0, tslib@^2.4.0:
3559
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
3560
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
3561
3562
+tslib@^2.8.0:
3563
+ version "2.8.1"
3564
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
3565
+ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
3566
+
3567
type-check@^0.4.0, type-check@~0.4.0:
3568
version "0.4.0"
3569
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"