Skip to content

Commit 54d6ab3

Browse files
authored
Merge pull request #71 from RonasIT/PRD-2460-update-expo-56
PRD-2460: Expo 56
2 parents a588c4e + f3b14f2 commit 54d6ab3

22 files changed

Lines changed: 5164 additions & 10928 deletions

File tree

.npmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
node-linker=hoisted
2+
legacy-peer-deps=true

apps/mobile/.babelrc.js

Lines changed: 0 additions & 6 deletions
This file was deleted.

apps/mobile/app.config.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ const createConfig = (): Omit<ExpoConfig, 'extra'> & { extra: { eas: EASConfig }
3333
scheme: process.env.EXPO_PUBLIC_APP_SCHEME as string,
3434
owner: process.env.EXPO_PUBLIC_APP_OWNER as string,
3535
version: '1.5.0',
36+
userInterfaceStyle: 'automatic',
3637
orientation: 'portrait',
3738
icon: './assets/icon.png',
3839
runtimeVersion: '1.5.0',
@@ -111,9 +112,9 @@ const createConfig = (): Omit<ExpoConfig, 'extra'> & { extra: { eas: EASConfig }
111112
{
112113
android: {
113114
androidGradlePluginVersion: '8.3.2',
114-
compileSdkVersion: 35,
115+
compileSdkVersion: 36,
115116
targetSdkVersion: 35,
116-
buildToolsVersion: '35.0.0',
117+
buildToolsVersion: '36.0.0',
117118
ndkVersion: '27.1.12297006',
118119
packagingOptions: {
119120
jniLibs: {

apps/mobile/app/_layout.tsx

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { SplashScreen, Stack, useNavigationContainerRef } from 'expo-router';
2525
import { ReactElement, useEffect } from 'react';
2626
import { GestureHandlerRootView } from 'react-native-gesture-handler';
2727
import { KeyboardProvider } from 'react-native-keyboard-controller';
28+
import { SafeAreaProvider } from 'react-native-safe-area-context';
2829
import '../global.css';
2930
import 'reflect-metadata';
3031
import 'expo-dev-client';
@@ -119,25 +120,27 @@ function RootLayout(): ReactElement | null {
119120
}
120121

121122
return (
122-
<KeyboardProvider>
123-
<GestureHandlerRootView>
124-
<PersistQueryClientProvider
125-
client={queryClient}
126-
persistOptions={{
127-
persister: queryPersister,
128-
maxAge: persistStorageConfig.maxAge,
129-
dehydrateOptions: {
130-
shouldDehydrateQuery: (query) => query.meta?.persist !== false,
131-
},
132-
}}>
133-
<ToastProvider>
134-
<BottomSheetModalProvider>
135-
<App />
136-
</BottomSheetModalProvider>
137-
</ToastProvider>
138-
</PersistQueryClientProvider>
139-
</GestureHandlerRootView>
140-
</KeyboardProvider>
123+
<SafeAreaProvider>
124+
<KeyboardProvider>
125+
<GestureHandlerRootView style={{ flex: 1 }}>
126+
<PersistQueryClientProvider
127+
client={queryClient}
128+
persistOptions={{
129+
persister: queryPersister,
130+
maxAge: persistStorageConfig.maxAge,
131+
dehydrateOptions: {
132+
shouldDehydrateQuery: (query) => query.meta?.persist !== false,
133+
},
134+
}}>
135+
<ToastProvider>
136+
<BottomSheetModalProvider>
137+
<App />
138+
</BottomSheetModalProvider>
139+
</ToastProvider>
140+
</PersistQueryClientProvider>
141+
</GestureHandlerRootView>
142+
</KeyboardProvider>
143+
</SafeAreaProvider>
141144
);
142145
}
143146

apps/mobile/babel.config.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,14 @@ module.exports = function (api) {
2424
],
2525
'react-native-worklets/plugin',
2626
],
27+
overrides: [
28+
{
29+
test: (filename) => !!filename && /libs[\\/]shared[\\/]data-access[\\/]/.test(filename),
30+
plugins: [
31+
['@babel/plugin-proposal-decorators', { legacy: true }],
32+
['@babel/plugin-transform-class-properties', { loose: true }],
33+
],
34+
},
35+
],
2736
};
2837
};

apps/mobile/metro.config.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,12 @@ module.exports = withNxMetro(mergeConfig(defaultConfig, customConfig), {
4040
extensions: [],
4141
// Specify folders to watch, in addition to Nx defaults (workspace libraries and node_modules)
4242
watchFolders: [monorepoRoot],
43-
}).then((config) => withNativeWind(config, { input: './global.css', inlineRem: 16 }));
43+
}).then((config) => {
44+
// withNxMetro narrows resolver.nodeModulesPaths to the workspace root only. Re-add Expo's
45+
// defaults (app-level + root node_modules) so module resolution and expo-doctor stay happy.
46+
config.resolver.nodeModulesPaths = Array.from(
47+
new Set([...(defaultConfig.resolver.nodeModulesPaths ?? []), ...(config.resolver.nodeModulesPaths ?? [])]),
48+
);
49+
50+
return withNativeWind(config, { input: './global.css', inlineRem: 16 });
51+
});

apps/mobile/package.json

Lines changed: 50 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "0.0.1",
44
"private": true,
55
"scripts": {
6-
"start": "cross-env EXPO_PUBLIC_APP_ENV=development npx expo start",
6+
"start": "cross-env EXPO_PUBLIC_APP_ENV=development npx expo start --clear",
77
"start:prod": "cross-env EXPO_PUBLIC_APP_ENV=production npx expo start",
88
"build:dev": "eas build --no-wait -p all --profile=development",
99
"build:internal": "npm run build:dev -- --profile=internal",
@@ -26,68 +26,79 @@
2626
"dependencies": {
2727
"@hookform/resolvers": "^5.1.1",
2828
"@likashefqet/react-native-image-zoom": "^4.3.0",
29-
"@react-native-community/netinfo": "11.4.1",
30-
"@react-native-cookies/cookies": "^6.2.1",
29+
"@react-native-community/netinfo": "12.0.1",
3130
"@react-native-google-signin/google-signin": "^15.0.0",
32-
"@react-navigation/drawer": "^7.3.9",
3331
"@ronas-it/react-native-common-modules": "^1.1.0",
34-
"@ronas-it/rtkq-entity-api": "^0.4.10",
32+
"@ronas-it/rtkq-entity-api": "^1.1.1",
3533
"@sentry/react-native": "~7.11.0",
3634
"@shopify/flash-list": "2.0.2",
35+
"@expo/ui": "~56.0.16",
3736
"@tanstack/react-query": "^5.80.6",
3837
"@tanstack/react-query-persist-client": "^5.87.4",
3938
"babel-plugin-module-resolver": "^5.0.2",
4039
"clsx": "^2.1.1",
41-
"expo": "~54.0.34",
42-
"expo-asset": "~12.0.13",
43-
"expo-audio": "~1.1.1",
44-
"expo-build-properties": "~1.0.10",
45-
"expo-clipboard": "~8.0.8",
46-
"expo-constants": "~18.0.13",
47-
"expo-crypto": "~15.0.9",
48-
"expo-dev-client": "~6.0.21",
49-
"expo-document-picker": "~14.0.8",
50-
"expo-file-system": "~19.0.22",
51-
"expo-haptics": "~15.0.8",
52-
"expo-image": "~3.0.11",
53-
"expo-image-picker": "~17.0.11",
54-
"expo-insights": "~0.10.8",
55-
"expo-linear-gradient": "~15.0.8",
56-
"expo-linking": "~8.0.12",
57-
"expo-localization": "~17.0.8",
58-
"expo-media-library": "~18.2.1",
59-
"expo-router": "~6.0.23",
60-
"expo-sharing": "~14.0.8",
61-
"expo-speech": "~14.0.8",
62-
"expo-splash-screen": "~31.0.13",
63-
"expo-status-bar": "~3.0.9",
64-
"expo-updates": "~29.0.17",
40+
"expo": "^56.0.0",
41+
"expo-asset": "~56.0.15",
42+
"expo-audio": "~56.0.11",
43+
"expo-build-properties": "~56.0.16",
44+
"expo-clipboard": "~56.0.3",
45+
"expo-constants": "~56.0.16",
46+
"expo-crypto": "~56.0.4",
47+
"expo-dev-client": "~56.0.18",
48+
"expo-document-picker": "~56.0.4",
49+
"expo-file-system": "~56.0.7",
50+
"expo-haptics": "~56.0.3",
51+
"expo-image": "~56.0.9",
52+
"expo-image-picker": "~56.0.15",
53+
"expo-insights": "~56.0.15",
54+
"expo-linear-gradient": "~56.0.4",
55+
"expo-linking": "~56.0.13",
56+
"expo-localization": "~56.0.6",
57+
"expo-media-library": "~56.0.6",
58+
"expo-router": "~56.2.8",
59+
"expo-sharing": "~56.0.15",
60+
"expo-speech": "~56.0.3",
61+
"expo-splash-screen": "~56.0.10",
62+
"expo-status-bar": "~56.0.4",
63+
"expo-updates": "~56.0.17",
6564
"immer": "^10.1.1",
6665
"lodash-es": "^4.17.21",
6766
"luxon": "^3.6.1",
6867
"nativewind": "^4.1.23",
69-
"react": "19.1.0",
68+
"react": "19.2.3",
7069
"react-hook-form": "^7.57.0",
71-
"react-native": "0.81.5",
70+
"react-native": "0.85.3",
7271
"react-native-compressor": "^1.12.0",
7372
"react-native-extended-stylesheet": "^0.12.0",
74-
"react-native-gesture-handler": "~2.28.0",
75-
"react-native-keyboard-controller": "1.21.8",
73+
"react-native-gesture-handler": "~2.31.1",
74+
"react-native-keyboard-controller": "1.21.6",
7675
"react-native-mmkv": "^3.2.0",
7776
"react-native-modal": "^14.0.0-rc.1",
78-
"react-native-reanimated": "~4.1.1",
79-
"react-native-safe-area-context": "~5.6.0",
80-
"react-native-screens": "~4.16.0",
81-
"react-native-svg": "15.12.1",
77+
"react-native-nitro-cookies": "^1.1.0",
78+
"react-native-nitro-modules": "^0.35.9",
79+
"react-native-reanimated": "4.3.1",
80+
"react-native-safe-area-context": "~5.7.0",
81+
"react-native-screens": "4.25.2",
82+
"react-native-svg": "15.15.4",
8283
"react-native-web": "^0.21.0",
8384
"reflect-metadata": "^0.2.2",
8485
"tailwind-merge": "^3.3.0",
8586
"tailwindcss": "^3.4.17",
8687
"yup": "^1.6.1"
8788
},
8889
"devDependencies": {
90+
"@babel/plugin-proposal-decorators": "^7.29.7",
91+
"@babel/plugin-transform-class-properties": "^7.29.7",
8992
"@types/lodash-es": "^4.17.12",
90-
"@types/luxon": "^3.6.2"
93+
"@types/luxon": "^3.6.2",
94+
"react-refresh": "^0.18.0"
9195
},
92-
"main": "expo-router/entry"
96+
"main": "expo-router/entry",
97+
"expo": {
98+
"doctor": {
99+
"reactNativeDirectoryCheck": {
100+
"listUnknownPackages": false
101+
}
102+
}
103+
}
93104
}

libs/mobile/chat/features/chat/src/lib/components/chat-bottom-button/component.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ReactElement } from 'react';
2+
import { useReanimatedKeyboardAnimation } from 'react-native-keyboard-controller';
23
import { interpolate, SharedValue, useAnimatedStyle } from 'react-native-reanimated';
34
import { AnimatedView, IconButton } from '@open-webui-react-native/mobile/shared/ui/ui-kit';
45

@@ -8,8 +9,14 @@ interface ChatBottomButtonProps {
89
}
910

1011
export default function ChatBottomButton({ isVisible, onPress }: ChatBottomButtonProps): ReactElement | null {
12+
//NOTE: height is 0 when the keyboard is closed and -keyboardHeight when open, so it lifts the button above the keyboard
13+
const { height: keyboardHeight } = useReanimatedKeyboardAnimation();
14+
1115
const animatedStyle = useAnimatedStyle(() => ({
12-
transform: [{ scale: interpolate(isVisible.value, [0, 1], [0, 1]) }],
16+
transform: [
17+
{ translateY: keyboardHeight.value ? keyboardHeight.value + 15 : 0 },
18+
{ scale: interpolate(isVisible.value, [0, 1], [0, 1]) },
19+
],
1320
}));
1421

1522
return (

libs/mobile/chat/features/menu-list/src/lib/component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { useIsFocused } from '@react-navigation/native';
21
import { useTranslation } from '@ronas-it/react-native-common-modules/i18n';
2+
import { useIsFocused } from 'expo-router';
33
import { ReactElement, useCallback, useEffect, useRef, useState } from 'react';
44
import {
55
ChatActionsMenuSheet,

libs/mobile/shared/data-access/file-system-service/src/service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { i18n } from '@ronas-it/react-native-common-modules/i18n';
22
import * as DocumentPicker from 'expo-document-picker';
3+
import { Directory, File, Paths } from 'expo-file-system';
34
import * as FileSystem from 'expo-file-system/legacy';
4-
import { Directory, File, Paths } from 'expo-file-system/next';
55
import * as Sharing from 'expo-sharing';
66
import { ToastService } from '@open-webui-react-native/shared/utils/toast-service';
77
import { FileExtension, MimeType, UtiType } from './enums';

0 commit comments

Comments
 (0)