Skip to content

Commit 0bea7d3

Browse files
committed
add react 19 support
1 parent f1b6d5d commit 0bea7d3

File tree

59 files changed

+2658
-2302
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+2658
-2302
lines changed

packages/api-client-core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@
5151
"gql-tag": "^1.0.1",
5252
"nock": "^13.5.4",
5353
"p-retry": "^4.5.0",
54-
"react": "^18.2.0",
55-
"react-dom": "^18.2.0",
54+
"react": "^19.1.1",
55+
"react-dom": "^19.1.1",
5656
"typescript": "5.4.5"
5757
}
5858
}

packages/api-client-core/spec/mockUrqlClient.ts

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { SubscribePayload, Client as SubscriptionClient, Sink as Subscripti
66
import type { FunctionLike } from "jest-mock";
77
import { defaults, find, findLast } from "lodash-es";
88
import pRetry from "p-retry";
9-
import { act } from "react-dom/test-utils";
9+
import { act } from "react";
1010
import type { Sink, Source, Subject } from "wonka";
1111
import { filter, makeSubject, pipe, subscribe, take, toPromise } from "wonka";
1212
import { $gadgetConnection } from "../src/GadgetConnection.js";
@@ -49,7 +49,7 @@ export type MockOperationFn<F extends FunctionLike> = jest.Mock<(...args: any[])
4949
export type MockFetchFn = jest.Mock & {
5050
requests: { args: any[]; resolve: (response: Response) => void; reject: (error: Error) => void }[];
5151
pushResponse: (response: Response) => Promise<void>;
52-
reportAbort: () => Promise<void>;
52+
waitForRequest: (options?: pRetry.Options) => Promise<void>;
5353
};
5454

5555
export interface MockUrqlClient extends Client {
@@ -150,11 +150,25 @@ const newMockFetchFn = () => {
150150

151151
const fn = jest.fn((...args) => {
152152
return new Promise<Response>((resolve, reject) => {
153-
requests.push({
153+
const signal = (args[1] as any)?.signal;
154+
155+
const request = {
154156
args,
155157
resolve,
156158
reject,
157-
});
159+
};
160+
161+
if (signal) {
162+
signal.addEventListener("abort", () => {
163+
const idx = requests.findIndex((r) => r === request);
164+
if (idx !== -1) {
165+
request.reject(new Error("AbortError: The user aborted a request."));
166+
requests.splice(idx, 1);
167+
}
168+
});
169+
}
170+
171+
requests.push(request);
158172
});
159173
}) as unknown as MockFetchFn;
160174

@@ -173,20 +187,23 @@ const newMockFetchFn = () => {
173187
await request.resolve(response);
174188
});
175189
};
176-
fn.reportAbort = async () => {
190+
191+
fn.waitForRequest = async (options?: pRetry.Options) => {
192+
const requestCount = requests.length;
177193
await act(async () => {
178-
const request = requests.shift();
179-
if (!request) {
180-
throw new Error("no requests started for response pushing");
181-
}
182-
const signal = request.args[1]?.signal;
183-
if (!signal) {
184-
throw new Error("no signal on request, can't report an abort that has happened");
185-
}
186-
if (!signal.aborted) {
187-
throw new Error("signal on request has not been aborted, can't report an abort that has happened");
188-
}
189-
await request.reject(new Error("AbortError: The user aborted a request."));
194+
await pRetry(
195+
async () => {
196+
if (requests.length > requestCount) {
197+
return;
198+
}
199+
throw new Error("request not found");
200+
},
201+
defaults(options, {
202+
attempts: 20,
203+
minTimeout: 10,
204+
maxTimeout: 250,
205+
})
206+
);
190207
});
191208
};
192209

packages/blog-example/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
"dependencies": {
2020
"@gadget-client/blog": "^1.49.0",
2121
"@gadgetinc/react": "workspace:*",
22-
"react": "^18.2.0",
23-
"react-dom": "^18.2.0"
22+
"react": "^19.1.1",
23+
"react-dom": "^19.1.1"
2424
},
2525
"devDependencies": {
26-
"@types/react": "^18.2.79",
27-
"@types/react-dom": "^18.3.1",
26+
"@types/react": "^19.1.1",
27+
"@types/react-dom": "^19.1.1",
2828
"@vitejs/plugin-react-swc": "^3.6.0",
2929
"typescript": "5.4.5",
3030
"vite": "^4.5.13"

packages/react-bigcommerce/package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gadgetinc/react-bigcommerce",
3-
"version": "0.3.3",
3+
"version": "0.4.0",
44
"files": [
55
"README.md",
66
"dist/**/*"
@@ -32,15 +32,15 @@
3232
"devDependencies": {
3333
"@gadgetinc/api-client-core": "workspace:*",
3434
"@gadgetinc/react": "workspace:*",
35-
"@types/react": "^18.2.79",
36-
"@types/react-dom": "^18.3.1",
35+
"@types/react": "^19.1.1",
36+
"@types/react-dom": "^19.1.1",
3737
"conditional-type-checks": "^1.0.6",
38-
"react": "^18.2.0",
39-
"react-dom": "^18.2.0"
38+
"react": "^19.1.1",
39+
"react-dom": "^19.1.1"
4040
},
4141
"peerDependencies": {
42-
"react": "^18.0.0",
43-
"react-dom": "^18.0.0",
44-
"@gadgetinc/react": "^0.21.4"
42+
"react": "^19.0.0",
43+
"react-dom": "^19.0.0",
44+
"@gadgetinc/react": "^0.22.0"
4545
}
4646
}

packages/react-shopify-app-bridge/package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gadgetinc/react-shopify-app-bridge",
3-
"version": "0.18.8",
3+
"version": "0.19.0",
44
"files": [
55
"README.md",
66
"dist/**/*"
@@ -37,17 +37,17 @@
3737
"@shopify/app-bridge-react": "^4.0.0",
3838
"@types/crypto-js": "^4.2.2",
3939
"@types/node": "^16.11.7",
40-
"@types/react": "^18.2.79",
41-
"@types/react-dom": "^18.3.1",
40+
"@types/react": "^19.1.1",
41+
"@types/react-dom": "^19.1.1",
4242
"conditional-type-checks": "^1.0.6",
4343
"nock": "^13.5.4",
44-
"react": "^18.2.0",
45-
"react-dom": "^18.2.0"
44+
"react": "^19.1.1",
45+
"react-dom": "^19.1.1"
4646
},
4747
"peerDependencies": {
48-
"@gadgetinc/react": "^0.21.4",
48+
"@gadgetinc/react": "^0.22.0",
4949
"@shopify/app-bridge-react": "^4.0.0",
50-
"react": "^18.0.0",
51-
"react-dom": "^18.0.0"
50+
"react": "^19.0.0",
51+
"react-dom": "^19.0.0"
5252
}
5353
}

packages/react-shopify-app-bridge/spec/Provider.spec.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import { jest } from "@jest/globals";
44
import "@testing-library/jest-dom";
55
import { render } from "@testing-library/react";
66
import { CombinedError } from "@urql/core";
7-
import React from "react";
8-
import { act } from "react-dom/test-utils";
7+
import React, { act } from "react";
98
import { mockUrqlClient } from "../../api-client-core/spec/mockUrqlClient.js";
109
import { AppType, Provider } from "../src/Provider.js";
1110

packages/react-shopify-app-bridge/spec/useGadget.spec.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import { renderHook } from "@testing-library/react";
77
import type { IsExact } from "conditional-type-checks";
88
import { assert } from "conditional-type-checks";
99
import type { ReactNode } from "react";
10-
import React from "react";
11-
import { act } from "react-dom/test-utils";
10+
import React, { act } from "react";
1211
import { mockUrqlClient } from "../../api-client-core/spec/mockUrqlClient.js";
1312
import { Provider } from "../src/Provider.js";
1413
import { AppType, useGadget } from "../src/index.js";

packages/react/package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gadgetinc/react",
3-
"version": "0.21.4",
3+
"version": "0.22.0",
44
"files": [
55
"README.md",
66
"dist/**/*",
@@ -49,11 +49,11 @@
4949
"dependencies": {
5050
"@0no-co/graphql.web": "^1.0.4",
5151
"@gadgetinc/api-client-core": "^0.15.45",
52-
"@hookform/resolvers": "^3.3.1",
52+
"@hookform/resolvers": "^5.2.1",
5353
"filesize": "^10.1.2",
5454
"pluralize": "^8.0.0",
5555
"react-fast-compare": "^3.2.2",
56-
"react-hook-form": "~7.48.2",
56+
"react-hook-form": "~7.62.0",
5757
"tslib": "^2.6.2",
5858
"urql": "^4.0.4",
5959
"yup": "^1.2.0"
@@ -67,7 +67,7 @@
6767
"@graphql-codegen/cli": "^5.0.0",
6868
"@graphql-codegen/client-preset": "^4.1.0",
6969
"@graphql-typed-document-node/core": "^3.2.0",
70-
"@mdxeditor/editor": "^3.8.0",
70+
"@mdxeditor/editor": "^3.42.0",
7171
"@n1ru4l/json-patch-plus": "^0.2.0",
7272
"@pollyjs/adapter-fetch": "^6.0.6",
7373
"@pollyjs/adapter-node-http": "^6.0.6",
@@ -95,15 +95,15 @@
9595
"@storybook/react-vite": "^8.1.6",
9696
"@storybook/test": "^8.1.6",
9797
"@tanstack/react-table": "^8.20.6",
98-
"@testing-library/jest-dom": "^5.17.0",
99-
"@testing-library/react": "^13.4.0",
100-
"@testing-library/user-event": "^14.5.2",
98+
"@testing-library/jest-dom": "^6.8.0",
99+
"@testing-library/react": "^16.3.0",
100+
"@testing-library/user-event": "^14.6.1",
101101
"@types/jest": "^29.5.12",
102102
"@types/lodash-es": "^4.17.1",
103103
"@types/node": "^18.0.0",
104104
"@types/pluralize": "^0.0.31",
105-
"@types/react": "^18.2.9",
106-
"@types/react-dom": "^18.3.1",
105+
"@types/react": "^19.1.1",
106+
"@types/react-dom": "^19.1.1",
107107
"@types/setup-polly-jest": "^0.5.5",
108108
"@types/tmp": "^0.2.6",
109109
"@urql/core": "^4.0.10",
@@ -124,9 +124,9 @@
124124
"lodash-es": "^4.17.21",
125125
"lucide-react": "^0.471.0",
126126
"postcss": "^8.4.49",
127-
"react": "^18.2.0",
127+
"react": "^19.1.1",
128128
"react-day-picker": "^9.5.1",
129-
"react-dom": "^18.2.0",
129+
"react-dom": "^19.1.1",
130130
"setup-polly-jest": "^0.11.0",
131131
"sonner": "^2.0.1",
132132
"storybook": "^8.1.6",
@@ -137,12 +137,12 @@
137137
"wonka": "^6.3.2"
138138
},
139139
"peerDependencies": {
140-
"@mdxeditor/editor": "^3.8.0",
140+
"@mdxeditor/editor": "^3.42.0",
141141
"@shopify/polaris": "^12.0.0 || ^13.0.0",
142142
"@shopify/polaris-icons": "^8.1.0 || ^9.0.0",
143-
"react": "^18.0.0",
143+
"react": "^19.0.0",
144144
"lucide-react": "^0.471.0",
145-
"react-dom": "^18.0.0"
145+
"react-dom": "^19.0.0"
146146
},
147147
"peerDependenciesMeta": {
148148
"@mdxeditor/editor": {

0 commit comments

Comments
 (0)