Skip to content

Commit 9c51d93

Browse files
authored
Expo 56 (#1043)
* Expo 56 * fix linting error * yarn lock
1 parent f30a27c commit 9c51d93

35 files changed

Lines changed: 1140 additions & 1179 deletions

.github/workflows/ci.yml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
push:
55
branches:
66
- master
7-
- 55
7+
- 56
88
pull_request:
99
types: [assigned, opened, synchronize, reopened]
1010

@@ -71,8 +71,8 @@ jobs:
7171
--ignore-scripts \
7272
--yes \
7373
74-
- name: Release packages (55)
75-
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/55'
74+
- name: Release packages (56)
75+
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/56'
7676
env:
7777
NPM_CONFIG_PROVENANCE: "true"
7878
run: |
@@ -87,12 +87,12 @@ jobs:
8787
# This hits Snack twice because it commonly times out the first time
8888
export newversion=$(npm view @draftbit/ui dist-tags.next);
8989
sleep 10
90-
curl "https://snackager.eascdn.net/bundle/@draftbit/ui@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
91-
curl "https://snackager.eascdn.net/bundle/@draftbit/ui@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
92-
curl "https://snackager.eascdn.net/bundle/@draftbit/core@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
93-
curl "https://snackager.eascdn.net/bundle/@draftbit/core@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
94-
curl "https://snackager.eascdn.net/bundle/@draftbit/maps@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
95-
curl "https://snackager.eascdn.net/bundle/@draftbit/maps@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
90+
curl "https://snackager.eascdn.net/bundle/@draftbit/ui@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
91+
curl "https://snackager.eascdn.net/bundle/@draftbit/ui@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
92+
curl "https://snackager.eascdn.net/bundle/@draftbit/core@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
93+
curl "https://snackager.eascdn.net/bundle/@draftbit/core@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
94+
curl "https://snackager.eascdn.net/bundle/@draftbit/maps@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
95+
curl "https://snackager.eascdn.net/bundle/@draftbit/maps@"$newversion"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
9696
working-directory: packages/ui
9797

9898
- name: Release to Snack
@@ -102,12 +102,12 @@ jobs:
102102
# This hits Snack twice because it commonly times out the first time
103103
export version=$(jq -r .version package.json);
104104
sleep 10
105-
curl "https://snackager.eascdn.net/bundle/@draftbit/ui@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
106-
curl "https://snackager.eascdn.net/bundle/@draftbit/ui@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
107-
curl "https://snackager.eascdn.net/bundle/@draftbit/core@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
108-
curl "https://snackager.eascdn.net/bundle/@draftbit/core@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
109-
curl "https://snackager.eascdn.net/bundle/@draftbit/maps@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
110-
curl "https://snackager.eascdn.net/bundle/@draftbit/maps@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=55.0.0";
105+
curl "https://snackager.eascdn.net/bundle/@draftbit/ui@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
106+
curl "https://snackager.eascdn.net/bundle/@draftbit/ui@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
107+
curl "https://snackager.eascdn.net/bundle/@draftbit/core@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
108+
curl "https://snackager.eascdn.net/bundle/@draftbit/core@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
109+
curl "https://snackager.eascdn.net/bundle/@draftbit/maps@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
110+
curl "https://snackager.eascdn.net/bundle/@draftbit/maps@"$version"?version_snackager=true&platforms=ios,android,web&bypassCache=true&sdkVersion=56.0.0";
111111
working-directory: packages/ui
112112

113113
- name: Add comment to pull request

deprecated-packages/web-maps/src/mapTypes.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export interface MapViewProps<TMarkerData> {
5656
}: {
5757
item: TMarkerData;
5858
index: number;
59-
}) => JSX.Element;
59+
}) => React.JSX.Element;
6060
onRegionChange?: (region: MapRegion) => void;
6161
}
6262

example/package.json

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@draftbit/example",
33
"description": "Example app for @draftbit/ui",
4-
"version": "55.0.1",
4+
"version": "56.0.0",
55
"private": true,
66
"scripts": {
77
"android": "expo start --android",
@@ -14,35 +14,35 @@
1414
"clean:modules": "rimraf node_modules"
1515
},
1616
"dependencies": {
17-
"@draftbit/maps": "55.0.1",
18-
"@draftbit/ui": "55.0.1",
17+
"@draftbit/maps": "56.0.0",
18+
"@draftbit/ui": "56.0.0",
1919
"@expo/dev-server": "0.1.123",
20-
"@expo/metro-runtime": "~55.0.11",
20+
"@expo/metro-runtime": "~56.0.16",
2121
"@react-navigation/drawer": "^7.5.8",
2222
"@react-navigation/native": "^7.1.17",
2323
"@shopify/flash-list": "2.0.2",
24-
"expo": "55",
25-
"expo-asset": "~55.0.17",
26-
"expo-constants": "~55.0.16",
27-
"expo-font": "~55.0.8",
28-
"expo-splash-screen": "~55.0.22",
29-
"expo-status-bar": "~55.0.6",
24+
"expo": "56",
25+
"expo-asset": "~56.0.19",
26+
"expo-constants": "~56.0.20",
27+
"expo-font": "~56.0.7",
28+
"expo-splash-screen": "~56.0.12",
29+
"expo-status-bar": "~56.0.4",
3030
"nativewind": "^5.0.0-preview.4",
31-
"react": "19.2.0",
32-
"react-dom": "19.2.0",
33-
"react-native": "0.83.6",
31+
"react": "19.2.3",
32+
"react-dom": "19.2.3",
33+
"react-native": "0.85.3",
3434
"react-native-css": "^3.0.7",
35-
"react-native-gesture-handler": "~2.30.0",
35+
"react-native-gesture-handler": "~2.31.1",
3636
"react-native-get-random-values": "~1.11.0",
37-
"react-native-reanimated": "4.2.1",
38-
"react-native-safe-area-context": "~5.6.0",
39-
"react-native-screens": "~4.23.0",
37+
"react-native-reanimated": "4.3.1",
38+
"react-native-safe-area-context": "~5.7.0",
39+
"react-native-screens": "4.25.2",
4040
"react-native-web": "^0.21.0",
41-
"react-native-worklets": "0.7.4",
41+
"react-native-worklets": "0.8.3",
4242
"uuid": "^9.0.1"
4343
},
4444
"devDependencies": {
45-
"@babel/core": "^7.24.0",
45+
"@babel/core": "^7.29.0",
4646
"@tailwindcss/postcss": "^4.3.0",
4747
"@types/react": "~19.2.10",
4848
"@types/react-native": "~0.70.6",

jest/global-setup.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// These packages build with @react-native/babel-preset rather than
2+
// babel-preset-expo, so `process.env.EXPO_OS` never gets inlined. expo-modules-core
3+
// warns on every import when it is missing, so define it up front for all workers.
4+
module.exports = () => {
5+
process.env.EXPO_OS ??= "ios";
6+
};

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "55.0.1",
2+
"version": "56.0.0",
33
"npmClient": "yarn",
44
"packages": [
55
"packages/*",

package.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,9 @@
4848
"@babel/preset-env": "^7.26.0",
4949
"@babel/preset-typescript": "^7.26.0",
5050
"@eslint/compat": "^1.2.3",
51-
"@testing-library/jest-native": "^5.4.3",
52-
"@testing-library/react-native": "^12.9.0",
51+
"@react-native/babel-preset": "^0.86.0",
52+
"@testing-library/react-native": "^14.0.1",
5353
"@types/jest": "^29.5.14",
54-
"@types/react-test-renderer": "^18.3.0",
5554
"babel-jest": "^29.7.0",
5655
"dotenv": "^16.4.5",
5756
"eslint": "^9.15.0",
@@ -62,13 +61,14 @@
6261
"husky": "^9.1.7",
6362
"jest": "^29.7.0",
6463
"jest-environment-jsdom": "^29.7.0",
65-
"jest-expo": "^54.0.2",
64+
"jest-expo": "56.0.5",
6665
"lerna": "^9.0.7",
6766
"lint-staged": "^15.2.10",
6867
"patch-package": "^8.0.0",
6968
"postinstall-postinstall": "^2.1.0",
7069
"prettier": "^3.4.1",
7170
"rimraf": "^6.0.1",
71+
"test-renderer": "^1.2.0",
7272
"ts-node": "^10.9.2",
7373
"typescript": "~5.7.2",
7474
"typescript-eslint": "^8.16.0",
@@ -89,5 +89,9 @@
8989
"not samsung <= 4"
9090
],
9191
"node": "16"
92+
},
93+
"dependencies": {
94+
"@react-native/jest-preset": "^0.86.0",
95+
"lodash": "^4.18.1"
9296
}
9397
}

packages/core/jest-setup.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import "@shopify/flash-list/jestSetup";
2+
import "react-native-gesture-handler/jestSetup";
23

34
jest.mock("react-native-worklets", () =>
45
require("react-native-worklets/lib/module/mock")

packages/core/package.json

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@draftbit/core",
3-
"version": "55.0.1",
3+
"version": "56.0.0",
44
"description": "Core (non-native) Components",
55
"main": "./src/index.tsx",
66
"react-native": "./src/index.tsx",
@@ -42,7 +42,7 @@
4242
"homepage": "https://github.com/draftbit/react-native-jigsaw#readme",
4343
"dependencies": {
4444
"@draftbit/react-theme-provider": "^2.1.1",
45-
"@draftbit/theme": "55.0.1",
45+
"@draftbit/theme": "56.0.0",
4646
"@emotion/react": "^11.13.5",
4747
"@emotion/styled": "^11.13.5",
4848
"@expo/vector-icons": "^15.0.3",
@@ -51,15 +51,15 @@
5151
"@lottiefiles/react-lottie-player": "3.5.3",
5252
"@mui/material": "^6.1.9",
5353
"@mui/x-date-pickers": "^7.22.3",
54-
"@react-native-community/slider": "5.1.2",
54+
"@react-native-community/slider": "5.2.0",
5555
"@react-native-picker/picker": "2.11.4",
5656
"@shopify/flash-list": "2.0.2",
5757
"color": "^4.2.3",
5858
"date-fns": "^4.1.0",
5959
"dateformat": "^5.0.3",
60-
"expo-audio": "~55.0.15",
61-
"expo-image": "~55.0.11",
62-
"expo-video": "~55.0.18",
60+
"expo-audio": "~56.0.12",
61+
"expo-image": "~56.0.11",
62+
"expo-video": "~56.1.4",
6363
"lodash.isequal": "^4.5.0",
6464
"lodash.isnumber": "^3.0.3",
6565
"lodash.omit": "^4.5.0",
@@ -70,20 +70,20 @@
7070
"react-native-date-picker": "^5.0.7",
7171
"react-native-deck-swiper": "^2.0.17",
7272
"react-native-dropdown-picker": "^5.4.7-beta.1",
73-
"react-native-gesture-handler": "~2.30.0",
73+
"react-native-gesture-handler": "~2.31.1",
7474
"react-native-keyboard-aware-scroll-view": "^0.9.5",
7575
"react-native-markdown-display": "^7.0.2",
7676
"react-native-modal-datetime-picker": "^18.0.0",
77-
"react-native-pager-view": "8.0.0",
78-
"react-native-reanimated": "4.2.1",
77+
"react-native-pager-view": "8.0.1",
78+
"react-native-reanimated": "4.3.1",
7979
"react-native-select-dropdown": "4.0.1",
8080
"react-native-shadow-2": "^7.1.1",
81-
"react-native-svg": "15.15.3",
81+
"react-native-svg": "15.15.4",
8282
"react-native-swipe-list-view": "^3.2.9",
8383
"react-native-tab-view": "^3.4.0",
8484
"react-native-web-swiper": "^2.2.4",
85-
"react-native-webview": "13.16.0",
86-
"react-native-worklets": "0.7.4",
85+
"react-native-webview": "13.16.1",
86+
"react-native-worklets": "0.8.3",
8787
"react-native-youtube-iframe": "^2.3.0",
8888
"react-youtube": "^10.1.0",
8989
"uuid": "^11.0.3"
@@ -108,8 +108,8 @@
108108
},
109109
"jest": {
110110
"preset": "jest-expo",
111+
"globalSetup": "<rootDir>/../../jest/global-setup.js",
111112
"setupFilesAfterEnv": [
112-
"@testing-library/jest-native/extend-expect",
113113
"./jest-setup.js"
114114
],
115115
"testPathIgnorePatterns": [
@@ -119,8 +119,9 @@
119119
".*\\.test\\.skip\\.tsx$"
120120
],
121121
"transformIgnorePatterns": [
122-
"node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg|dateformat)"
123-
],
124-
"testEnvironment": "node"
122+
"/node_modules/(?!(.pnpm|react-native|@react-native|@react-native-community|expo|@expo|@expo-google-fonts|react-navigation|@react-navigation|@sentry/react-native|native-base|standard-navigation|dateformat|uuid))",
123+
"/node_modules/react-native-reanimated/plugin/",
124+
"/node_modules/@react-native/babel-preset/"
125+
]
125126
}
126127
}

packages/core/src/__tests__/Debouncing.test.tsx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ beforeEach(() => jest.clearAllMocks());
1616
describe("Text Input debouncing test", () => {
1717
test.each([200, 500, 1000])(
1818
"should onChangeTextDelayed be called once with %s delay in TextInput",
19-
(delay) => {
19+
async (delay) => {
2020
const Wrapper: React.FC = () => {
2121
const [value, setValue] = React.useState("");
2222
return (
@@ -29,14 +29,14 @@ describe("Text Input debouncing test", () => {
2929
);
3030
};
3131

32-
render(<Wrapper />);
33-
testDebounce("first", "second", delay);
32+
await render(<Wrapper />);
33+
await testDebounce("first", "second", delay);
3434
}
3535
);
3636

3737
test.each([200, 500, 1000])(
3838
"should onChangeTextDelayed be called once with %s delay in TextField",
39-
(delay) => {
39+
async (delay) => {
4040
const Wrapper: React.FC = () => {
4141
const [value, setValue] = React.useState("");
4242
return (
@@ -52,14 +52,14 @@ describe("Text Input debouncing test", () => {
5252
);
5353
};
5454

55-
render(<Wrapper />);
56-
testDebounce("first", "second", delay);
55+
await render(<Wrapper />);
56+
await testDebounce("first", "second", delay);
5757
}
5858
);
5959

6060
test.each([200, 500, 1000])(
6161
"should onChangeTextDelayed be called once with %s delay in NumberInput",
62-
(delay) => {
62+
async (delay) => {
6363
const Wrapper: React.FC = () => {
6464
const [value, setValue] = React.useState<number | undefined>(0);
6565
return (
@@ -72,14 +72,14 @@ describe("Text Input debouncing test", () => {
7272
);
7373
};
7474

75-
render(<Wrapper />);
76-
testDebounce(1, 23, delay);
75+
await render(<Wrapper />);
76+
await testDebounce(1, 23, delay);
7777
}
7878
);
7979

8080
test.each([200, 500, 1000])(
8181
"should onChangeTextDelayed be called once with %s delay in PinInput",
82-
(delay) => {
82+
async (delay) => {
8383
const Wrapper: React.FC = () => {
8484
const [value, setValue] = React.useState("");
8585
return (
@@ -92,27 +92,27 @@ describe("Text Input debouncing test", () => {
9292
);
9393
};
9494

95-
render(<Wrapper />);
96-
testDebounce("first", "second", delay);
95+
await render(<Wrapper />);
96+
await testDebounce("first", "second", delay);
9797
}
9898
);
9999
});
100100

101-
function testDebounce(
101+
async function testDebounce(
102102
valueOne: string | number,
103103
valueTwo: string | number,
104104
delay: number
105105
) {
106106
const textInput = screen.getByTestId("native-text-input");
107107

108-
act(() => fireEvent.changeText(textInput, valueOne));
109-
act(() => fireEvent.changeText(textInput, valueTwo));
108+
await fireEvent.changeText(textInput, String(valueOne));
109+
await fireEvent.changeText(textInput, String(valueTwo));
110110

111-
act(() => jest.advanceTimersByTime(delay / 2));
111+
await act(() => jest.advanceTimersByTime(delay / 2));
112112
//Should not have been called at this point, since delay has not passed
113113
expect(onChangeTextDelayed).toHaveBeenCalledTimes(0);
114114

115-
act(() => jest.advanceTimersByTime(delay / 2));
115+
await act(() => jest.advanceTimersByTime(delay / 2));
116116
expect(onChangeTextDelayed).toHaveBeenCalledTimes(1);
117117
expect(onChangeTextDelayed).toHaveBeenCalledWith(valueTwo);
118118
}

0 commit comments

Comments
 (0)