Skip to content

Commit 2df3451

Browse files
authored
chore: upgrade to Expo SDK 55 (#424)
* chore: upgrade to Expo SDK 55 - Upgrade expo to ^55.0.0, react to 19.2.0, react-native to 0.83.2 - Enable React Compiler (experiments.reactCompiler: true) - Remove redundant config: newArchEnabled, jsEngine (both are defaults) - Remove implicit deps: @babel/core, babel-preset-expo, expo-constants - Replace legacy sentry-expo hook with @sentry/react-native/expo plugin - Add required config plugins: datetimepicker, sentry, expo-sharing - Update safe deps: moment, react-native-collapsible, eslint-plugin-react, eslint-plugin-import, @types/react-native-vector-icons, @types/webpack-env * fix: NO Emission scroll on android Add dynamic bottom padding to the `NoEmission` `ScrollView` content using `useTabBarBottomPadding`.
1 parent 47d489a commit 2df3451

5 files changed

Lines changed: 1910 additions & 2045 deletions

File tree

app.config.js

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,14 @@ module.exports = () => {
1717
"microphonePermission": "Allow $(PRODUCT_NAME) to access your microphone",
1818
"recordAudioAndroid": true
1919
}
20-
]
20+
],
21+
"@react-native-community/datetimepicker",
22+
["@sentry/react-native/expo", {
23+
"organization": process.env.SENTRY_ORG || "nmf",
24+
"project": process.env.SENTRY_PROJECT || "nmf-earth",
25+
}],
26+
"expo-sharing"
2127
],
22-
newArchEnabled: true,
2328
slug: "not-my-fault-earth",
2429
privacy: "public",
2530
platforms: ["ios", "android"],
@@ -34,7 +39,6 @@ module.exports = () => {
3439
fallbackToCacheTimeout: 0,
3540
},
3641
assetBundlePatterns: ["**/*"],
37-
jsEngine: "hermes",
3842
ios: {
3943
icon: "./assets/images/ios.icon.png",
4044
bundleIdentifier: "nmf.earth",
@@ -46,21 +50,14 @@ module.exports = () => {
4650
package: "nmf.earth",
4751
versionCode: buildNumber,
4852
},
49-
hooks: {
50-
postPublish: [
51-
{
52-
file: "sentry-expo/upload-sourcemaps",
53-
config: {
54-
organization: "nmf",
55-
project: "nmf-earth",
56-
},
57-
},
58-
],
59-
},
53+
6054
extra: {
6155
eas: {
6256
projectId: "9e1873d6-966a-49a3-83bc-10254ac6fb27"
6357
}
58+
},
59+
experiments: {
60+
reactCompiler: true
6461
}
6562
};
6663
};

app/components/NoEmission/NoEmission.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { useNavigation } from "@react-navigation/native";
44

55
import { t } from "utils";
66
import { navigate } from "navigation";
7+
import { useTabBarBottomPadding } from "hooks/useTabBarBottomPadding";
78

89
import Text from "../Text";
910
import StickersImage from "../StickersImage";
@@ -13,9 +14,14 @@ import styles from "./NoEmission.styles";
1314
const NoEmission: React.FC = () => {
1415
const navigation = useNavigation();
1516
const navigator = navigate(navigation);
17+
const bottomPadding = useTabBarBottomPadding();
1618

1719
return (
18-
<ScrollView style={styles.container} contentInsetAdjustmentBehavior="automatic">
20+
<ScrollView
21+
style={styles.container}
22+
contentInsetAdjustmentBehavior="automatic"
23+
contentContainerStyle={{ paddingBottom: bottomPadding }}
24+
>
1925
<StickersImage sticker="earth" />
2026
<View style={styles.textView}>
2127
<Text.H1 style={styles.header}>{t("NO_EMISSION_COMPONENT_TITLE")}</Text.H1>

app/components/NoEmission/__tests__/__snapshots__/NoEmissions.test.tsx.snap

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
exports[`renders correctly NoEmission 1`] = `
44
<ScrollView
5+
contentContainerStyle={
6+
{
7+
"paddingBottom": 0,
8+
}
9+
}
510
contentInsetAdjustmentBehavior="automatic"
611
ref={null}
712
style={

package.json

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -29,89 +29,87 @@
2929
"@expo/vector-icons": "^15.0.3",
3030
"@native-html/render": "^1.0.0-alpha.0",
3131
"@react-native-async-storage/async-storage": "2.2.0",
32-
"@react-native-community/datetimepicker": "8.4.4",
33-
"@react-native-community/slider": "5.0.1",
32+
"@react-native-community/datetimepicker": "8.6.0",
33+
"@react-native-community/slider": "5.1.2",
3434
"@react-native-masked-view/masked-view": "0.3.2",
3535
"@react-navigation/bottom-tabs": "^7.8.12",
3636
"@react-navigation/material-top-tabs": "^7.4.10",
3737
"@react-navigation/native": "^7.1.25",
3838
"@react-navigation/native-stack": "^7.2.0",
3939
"@react-navigation/stack": "^7.6.12",
4040
"@reduxjs/toolkit": "1.8.6",
41-
"@sentry/react-native": "~7.2.0",
41+
"@sentry/react-native": "~7.11.0",
4242
"babel-plugin-module-resolver": "^5.0.2",
4343
"carbon-footprint": "1.6.0",
44-
"expo": "~54.0.29",
45-
"expo-application": "~7.0.8",
46-
"expo-asset": "~12.0.11",
47-
"expo-camera": "~17.0.10",
48-
"expo-constants": "~18.0.12",
49-
"expo-device": "~8.0.10",
50-
"expo-document-picker": "~14.0.8",
51-
"expo-file-system": "~19.0.21",
52-
"expo-font": "~14.0.10",
53-
"expo-linking": "~8.0.10",
54-
"expo-localization": "~17.0.8",
55-
"expo-notifications": "~0.32.15",
56-
"expo-sharing": "~14.0.8",
57-
"expo-status-bar": "~3.0.9",
58-
"expo-store-review": "~9.0.9",
59-
"expo-updates": "~29.0.15",
60-
"expo-web-browser": "~15.0.10",
44+
"expo": "^55.0.0",
45+
"expo-application": "~55.0.8",
46+
"expo-asset": "~55.0.8",
47+
"expo-camera": "~55.0.9",
48+
"expo-device": "~55.0.9",
49+
"expo-document-picker": "~55.0.8",
50+
"expo-file-system": "~55.0.10",
51+
"expo-font": "~55.0.4",
52+
"expo-linking": "~55.0.7",
53+
"expo-localization": "~55.0.8",
54+
"expo-notifications": "~55.0.10",
55+
"expo-sharing": "~55.0.11",
56+
"expo-status-bar": "~55.0.4",
57+
"expo-store-review": "~55.0.8",
58+
"expo-updates": "~55.0.12",
59+
"expo-web-browser": "~55.0.9",
6160
"i18n-js": "3.5.1",
6261
"lodash.throttle": "4.1.1",
63-
"moment": "2.24.0",
62+
"moment": "2.30.1",
6463
"ramda": "0.27.0",
65-
"react": "19.1.0",
66-
"react-dom": "19.1.0",
67-
"react-native": "0.81.5",
68-
"react-native-collapsible": "1.5.2",
69-
"react-native-gesture-handler": "~2.28.0",
64+
"react": "19.2.0",
65+
"react-dom": "19.2.0",
66+
"react-native": "0.83.2",
67+
"react-native-collapsible": "1.6.2",
68+
"react-native-gesture-handler": "~2.30.0",
7069
"react-native-globalize": "4.5.1",
7170
"react-native-keyboard-aware-scroll-view": "0.9.5",
7271
"react-native-modal-datetime-picker": "14.0.1",
73-
"react-native-pager-view": "6.9.1",
72+
"react-native-pager-view": "8.0.0",
7473
"react-native-progress": "5.0.1",
75-
"react-native-reanimated": "~4.1.1",
74+
"react-native-reanimated": "4.2.1",
75+
"react-native-render-html": "^6.3.4",
7676
"react-native-safe-area-context": "~5.6.0",
77-
"react-native-screens": "4.19.0",
78-
"react-native-svg": "15.12.1",
79-
"react-native-worklets": "0.5.1",
77+
"react-native-screens": "~4.23.0",
78+
"react-native-svg": "15.15.3",
79+
"react-native-worklets": "0.7.2",
8080
"react-redux": "8.0.4",
8181
"redux": "4.2.0",
8282
"redux-persist": "6.0.0",
8383
"redux-thunk": "2.4.1",
8484
"uuid": "3.4.0"
8585
},
8686
"devDependencies": {
87-
"@babel/core": "7.26.0",
8887
"@testing-library/react-native": "14.0.0-alpha.1",
8988
"@types/i18n-js": "3.0.2",
9089
"@types/jest": "29.5.14",
9190
"@types/node": "18.11.7",
9291
"@types/ramda": "0.26.39",
93-
"@types/react": "~19.1.10",
92+
"@types/react": "~19.2.10",
9493
"@types/react-dom": "~19.1.7",
95-
"@types/react-native-vector-icons": "6.4.6",
94+
"@types/react-native-vector-icons": "6.4.18",
9695
"@types/uuid": "3.4.6",
97-
"@types/webpack-env": "1.18.0",
96+
"@types/webpack-env": "1.18.8",
9897
"@typescript-eslint/eslint-plugin": "^8.49.0",
9998
"@typescript-eslint/parser": "^8.49.0",
100-
"babel-preset-expo": "~54.0.0",
10199
"dotenv": "16.0.3",
102100
"eslint": "^8.57.0",
103101
"eslint-config-prettier": "8.5.0",
104102
"eslint-import-resolver-typescript": "3.5.2",
105-
"eslint-plugin-import": "2.26.0",
103+
"eslint-plugin-import": "2.32.0",
106104
"eslint-plugin-jest": "27.1.3",
107105
"eslint-plugin-prettier": "4.2.1",
108-
"eslint-plugin-react": "7.31.10",
106+
"eslint-plugin-react": "7.37.5",
109107
"eslint-plugin-react-hooks": "4.6.0",
110108
"front-matter": "3.1.0",
111109
"glob": "7.1.6",
112110
"husky": "4.2.5",
113111
"jest": "~29.7.0",
114-
"jest-expo": "~54.0.16",
112+
"jest-expo": "~55.0.9",
115113
"markdown-it": "10.0.0",
116114
"mockdate": "3.0.5",
117115
"prettier": "2.1.2",

0 commit comments

Comments
 (0)