Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
ee1d84c
feat: expo 54 migration
vitalyiegorov Sep 17, 2025
19bfc93
feat: expo 54 migration
vitalyiegorov Sep 17, 2025
4457d6d
feat: expo 54 migration
vitalyiegorov Sep 17, 2025
988dcef
feat: expo 54 migration
vitalyiegorov Sep 17, 2025
c10d2ce
feat: expo 54 migration
vitalyiegorov Sep 17, 2025
217366a
feat: expo 54 migration
vitalyiegorov Sep 17, 2025
476509d
Merge branch 'main' of github.com:vitalyiegorov/suuudokuuu into expo54
vitalyiegorov Sep 17, 2025
e352809
fix(app): fix sharing
vitalyiegorov Sep 17, 2025
1f4fe21
ci: fix ios simulator
vitalyiegorov Sep 17, 2025
43ccc49
ci: fix ios/android
vitalyiegorov Sep 17, 2025
e06f6a2
ci: fix ios/android
vitalyiegorov Sep 17, 2025
8c036ad
ci: fix ios/android
vitalyiegorov Sep 18, 2025
3ca4276
ci: fix ios/android
vitalyiegorov Sep 18, 2025
76b0507
ci: fix ios/android
vitalyiegorov Sep 18, 2025
31091aa
ci: fix ios/android
vitalyiegorov Sep 18, 2025
35c7a4d
ci: fix ios/android
vitalyiegorov Sep 18, 2025
43574c9
ci: fix ios/android
vitalyiegorov Sep 18, 2025
48aea84
ci: fix ios/android
vitalyiegorov Sep 20, 2025
15c73c7
ci: fix ios/android
vitalyiegorov Sep 20, 2025
522a0ca
Update merge-request.yml
vitalyiegorov Sep 20, 2025
5912f0e
Update merge-request.yml
vitalyiegorov Sep 20, 2025
8528741
ci: fix e2e jobs
liaugust Sep 20, 2025
7d8bde7
ci: fix e2e job
liaugust Sep 20, 2025
d23e690
ci: fix e2e job
liaugust Sep 20, 2025
8be710f
ci: fix e2e job
liaugust Sep 20, 2025
b82bd44
ci: fix e2e job
liaugust Sep 20, 2025
95ba66c
ci: fix e2e job
liaugust Sep 20, 2025
f4a5392
ci: fix e2e job
liaugust Sep 20, 2025
adcc40b
ci: fix e2e job
liaugust Sep 21, 2025
e969797
ci: fix e2e job
liaugust Sep 21, 2025
e9824a1
ci: fix sharing
vitalyiegorov Sep 21, 2025
5a050a9
ci: fix e2e job
liaugust Sep 21, 2025
c50d690
ci: fix e2e job
liaugust Sep 21, 2025
8c15667
ci: fix e2e job
liaugust Sep 21, 2025
175237b
ci: fix e2e job
liaugust Sep 21, 2025
8a62b33
ci: fix e2e job
liaugust Sep 21, 2025
8053f96
ci: fix e2e job
liaugust Sep 21, 2025
91bf505
ci: fix android
vitalyiegorov Sep 22, 2025
c5f1828
ci: fix android
vitalyiegorov Sep 22, 2025
8439bf0
ci: fix android
vitalyiegorov Sep 22, 2025
a8467c8
ci: fix android
vitalyiegorov Sep 22, 2025
f9f17c1
ci: fix me
vitalyiegorov Sep 22, 2025
2466f6a
ci: fix me
vitalyiegorov Sep 22, 2025
e14fbe6
ci: fix e2e job
liaugust Sep 22, 2025
bd76409
ci: fix e2e job
liaugust Sep 22, 2025
7917ce1
ci: fix e2e job
liaugust Sep 22, 2025
254dccf
ci: fix me
vitalyiegorov Sep 22, 2025
3bc9921
ci: update gradle cache
vitalyiegorov Sep 22, 2025
3935210
ci: update gradle cache
vitalyiegorov Sep 22, 2025
fab25d6
ci: update gradle cache
vitalyiegorov Sep 22, 2025
19fbb8f
ci: update gradle cache
vitalyiegorov Sep 22, 2025
0f59a01
ci: update gradle cache
vitalyiegorov Sep 22, 2025
22c21ca
ci: update gradle cache
vitalyiegorov Sep 22, 2025
6ebe000
ci: update gradle cache
vitalyiegorov Sep 22, 2025
50e30fa
ci: update gradle cache
vitalyiegorov Sep 22, 2025
000fa2b
ci: update gradle cache
vitalyiegorov Sep 22, 2025
da88dbc
ci: update gradle cache
vitalyiegorov Sep 22, 2025
d4c3b45
ci: update gradle cache
vitalyiegorov Sep 22, 2025
5a00e0e
ci: update gradle cache
vitalyiegorov Sep 22, 2025
dcc8db7
ci: fix e2e job
liaugust Sep 22, 2025
e00c060
ci: fix e2e job
liaugust Sep 22, 2025
9d63ab9
ci: fix e2e job
liaugust Sep 22, 2025
cb40a23
ci: fix e2e job
liaugust Sep 23, 2025
3cb4752
ci: update gradle cache
vitalyiegorov Sep 23, 2025
4944103
ci: update gradle cache
vitalyiegorov Sep 23, 2025
41a644e
ci: update gradle cache and tests
vitalyiegorov Sep 23, 2025
ee38444
ci: update gradle cache and tests
vitalyiegorov Sep 23, 2025
daf7d11
ci: update gradle cache and tests
vitalyiegorov Sep 23, 2025
f805adc
ci: update gradle cache and tests
vitalyiegorov Sep 23, 2025
cc765f2
ci: fix concurrency
vitalyiegorov Sep 23, 2025
c87c585
ci: fix concurrency
vitalyiegorov Sep 23, 2025
7564a66
ci: fix concurrency
vitalyiegorov Sep 23, 2025
04573d4
ci: fix concurrency
vitalyiegorov Sep 23, 2025
71bfb77
ci: fix concurrency
vitalyiegorov Sep 23, 2025
b2ff092
ci: fix concurrency
vitalyiegorov Sep 23, 2025
3257a23
ci: fix concurrency
vitalyiegorov Sep 23, 2025
366234b
ci: fix concurrency
vitalyiegorov Sep 23, 2025
76ff883
ci: fix concurrency
vitalyiegorov Sep 23, 2025
6d16b2d
ci: fix concurrency
vitalyiegorov Sep 23, 2025
dde13a3
ci: fix concurrency
vitalyiegorov Sep 23, 2025
35b8a31
ci: fix concurrency
vitalyiegorov Sep 23, 2025
7ff730e
ci: added expo prebuild
vitalyiegorov Sep 23, 2025
e8b8f44
ci: added expo prebuild
vitalyiegorov Sep 23, 2025
b27a20f
ci: added expo prebuild
vitalyiegorov Sep 23, 2025
1d7ffd8
ci: fix e2e job
liaugust Sep 23, 2025
3536725
ci: fix e2e job
liaugust Sep 23, 2025
6bc1aaf
ci: fix e2e job
liaugust Sep 23, 2025
adab28e
ci: added expo prebuild
vitalyiegorov Sep 24, 2025
7cf6a30
Merge remote-tracking branch 'origin/expo54' into expo54
vitalyiegorov Sep 24, 2025
12ba421
test: remove startRecording
vitalyiegorov Sep 24, 2025
42bf4ac
test: remove startRecording
vitalyiegorov Sep 24, 2025
d194fbe
test: remove startRecording
vitalyiegorov Sep 24, 2025
136492a
test: remove startRecording
vitalyiegorov Sep 24, 2025
39f0b03
test: remove startRecording
vitalyiegorov Sep 24, 2025
c34a91b
ci: fix e2e job
liaugust Sep 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 89 additions & 47 deletions .github/workflows/merge-request.yml → .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
name: Merge Request
name: Pull Request
env:
MAESTRO_DRIVER_STARTUP_TIMEOUT: "120000"
TURBO_TEAM: vitalyiegorov
TURBO_TOKEN: ${{ secrets.VERCEL_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_TITLE: ${{ github.event.pull_request.title }}
MAESTRO_CLI_NO_ANALYTICS: false
RCT_USE_PREBUILT_RNCORE: 1
RCT_USE_RN_DEP: 1

concurrency:
group: pr-${{ github.event.pull_request.number }}
cancel-in-progress: true

on: pull_request

Expand Down Expand Up @@ -49,6 +56,7 @@ jobs:
uses: codecov/codecov-action@v3

eas-deploy:
if: false
name: EAS Deploy
needs: code-quality
runs-on: ubuntu-latest
Expand Down Expand Up @@ -184,78 +192,95 @@ jobs:
});
}


e2e-ios:
needs: [code-quality, eas-deploy]
# needs: [code-quality, eas-deploy]
needs: [ code-quality ]
name: E2E Tests on iOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '11'

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22.x
cache: yarn

- name: Select Xcode 16
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16'
- name: Install dependencies
run: |
yarn install

- name: Setup EAS
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}

- name: Install dependencies
run: yarn install
- name: Expo Prebuild
working-directory: packages/app
run: npx expo prebuild -p ios --clean

- name: Select Xcode 16.4
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.4'

- name: Cache Xcode DerivedData
uses: actions/cache@v4
with:
path: ~/Library/Developer/Xcode/DerivedData
key: xcode-deriveddata-${{ runner.os }}-${{ github.sha }}
restore-keys: xcode-deriveddata-${{ runner.os }}-

- name: Cache iOS dependencies
uses: actions/cache@v4
with:
path: |
~/Library/Caches/CocoaPods
~/.cocoapods
/packages/app/ios/Pods
key: pods-${{ runner.os }}-${{ github.sha }}
restore-keys: pods-${{ runner.os }}-

- name: Start iOS Simulator
uses: futureware-tech/simulator-action@v4
with:
model: 'iPhone 15 Pro'
model: 'iPhone 16 Pro'

- name: Build and install app
working-directory: packages/app
run: |
eas build --profile=e2e --platform ios --non-interactive --local --output app.tar.gz
eas build:run --profile=e2e --platform ios --path app.tar.gz
eas build --profile=e2e --platform ios --non-interactive --local --output app.ios.tar.gz
eas build:run --profile=e2e --platform ios --path app.ios.tar.gz

- name: Install Maestro
run: |
curl -fsSL "https://get.maestro.mobile.dev" | bash
export MAESTRO_VERSION=2.0.3; curl -fsSL "https://get.maestro.mobile.dev" | bash
echo "$HOME/.maestro/bin" >> $GITHUB_PATH

- name: Run Maestro UI tests
working-directory: tests/app-tests
run: |
maestro test flows -e APP_ID=com.vitalyiegorov.suuudokuuu.preview --format junit --output ./report.xml --debug-output ./
maestro test flows -e APP_ID=com.vitalyiegorov.suuudokuuu.preview --format junit --config config.yaml --debug-output ./

- name: Upload report
- name: Upload Maestro artifacts (report, logs, videos, screenshots)
if: always()
uses: actions/upload-artifact@v4
with:
name: "maestro-ios-report"
name: maestro-ios-artifacts
include-hidden-files: true
path: |
tests/app-tests/.maestro/tests
tests/app-tests/report.xml
tests/app-tests/.maestro/**
tests/app-tests/*.mp4

e2e-android:
needs: [ code-quality, eas-deploy ]
# needs: [ code-quality, eas-deploy ]
needs: [ code-quality ]
name: E2E Tests on Android
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'

- name: Enable KVM group perms
run: |
Expand All @@ -276,20 +301,21 @@ jobs:
token: ${{ secrets.EXPO_TOKEN }}

- name: Install dependencies
run: yarn install

- name: Gradle cache
uses: gradle/actions/setup-gradle@v3
run: |
yarn install

- name: Build app
- name: Expo Prebuild
working-directory: packages/app
run: |
eas build --profile=e2e --platform android --non-interactive --local --output app.apk
run: npx expo prebuild -p android --clean

- name: Install Maestro
run: |
curl -fsSL "https://get.maestro.mobile.dev" | bash
echo "$HOME/.maestro/bin" >> $GITHUB_PATH
- name: Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('packages/app/android/**/*.gradle*', 'packages/app/android/gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: ${{ runner.os }}-gradle-

- name: AVD cache
uses: actions/cache@v4
Expand All @@ -298,13 +324,26 @@ jobs:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-33
key: avd-34

- name: Build app
working-directory: packages/app
run: |
eas build --profile=e2e --platform android --non-interactive --local --output app.android.apk

- name: Install Maestro
run: |
export MAESTRO_VERSION=2.0.3; curl -fsSL "https://get.maestro.mobile.dev" | bash
echo "$HOME/.maestro/bin" >> $GITHUB_PATH

- name: Create AVD and Generate Snapshot for Caching
- name: Сreate AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
api-level: 34
target: aosp_atd
channel: canary
arch: x86_64
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: false
Expand All @@ -313,21 +352,24 @@ jobs:
- name: Start emulator and run Maestro tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
api-level: 34
target: aosp_atd
channel: canary
arch: x86_64
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
working-directory: tests/app-tests
script: |
cd ../../packages/app && eas build:run --platform android --path app.apk
maestro test flows -e APP_ID=com.vitaliiyehorov.suuudokuuu.preview --format junit --output ./report.xml --debug-output ./
cd ../../packages/app && eas build:run --platform android --path app.android.apk
maestro test flows -e APP_ID=com.vitaliiyehorov.suuudokuuu.preview --config config.yaml --format junit --output ./report.xml --debug-output ./ && killall -INT crashpad_handler

- name: Upload Report
- name: Upload Maestro artifacts (report, logs, videos, screenshots)
if: always()
uses: actions/upload-artifact@v4
with:
name: "maestro-android-report"
name: maestro-android-artifacts
include-hidden-files: true
path: |
tests/app-tests/.maestro/tests
tests/app-tests/report.xml
tests/app-tests/.maestro/**
tests/app-tests/*.mp4
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ packages/app/android
packages/app/ios

.maestro
*.mp4
report.xml
build-*.tar.gz
*.app
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
7 changes: 3 additions & 4 deletions knip.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,10 @@
"@expo/fingerprint",
"metro-minify-terser",
"react-compiler-runtime",
"react-dom",
"react-native-gesture-handler",
"babel-jest",
"babel-plugin-react-compiler",
"@lingui/babel-plugin-lingui-macro"
"@lingui/babel-plugin-lingui-macro",
"eas-build-cache-provider"
],
"ignoreBinaries": ["run"]
"ignoreBinaries": ["run", "expo"]
}
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@
"lint-staged": "^16.1.2",
"prettier": "^3.6.2",
"sort-package-json": "^3.4.0",
"turbo": "^2.5.5",
"typescript": "^5.8.3"
"turbo": "^2.5.6",
"typescript": "~5.9.2"
},
"packageManager": "[email protected]",
"engines": {
Expand Down
6 changes: 3 additions & 3 deletions packages/app/app.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,11 @@ export default ({ config }) => ({
},
plugins: [
['expo-router', { origin: 'https://www.suuudokuuu.com/' }],
['expo-font', { fonts: ['../../node_modules/@expo-google-fonts/inter/Inter_900Black.ttf'] }],
['expo-build-properties', { android: { targetSdkVersion: 35 } }]
['expo-font', { fonts: ['../../node_modules/@expo-google-fonts/inter/Inter_900Black.ttf'] }]
],
experiments: {
reactCompiler: true
reactCompiler: true,
buildCacheProvider: 'eas'
},
runtimeVersion: {
policy: 'fingerprint'
Expand Down
2 changes: 1 addition & 1 deletion packages/app/babel.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ module.exports = function (api) {

return {
presets: ['babel-preset-expo'],
plugins: ['macros', 'react-native-reanimated/plugin', '@lingui/babel-plugin-lingui-macro']
plugins: ['macros', 'react-native-worklets/plugin', '@lingui/babel-plugin-lingui-macro']
};
};
3 changes: 3 additions & 0 deletions packages/app/eas.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
"extends": "preview",
"ios": {
"simulator": true
},
"android": {
"gradleCommand": ":app:assembleRelease -x lint -x lintVitalAnalyzeRelease -x lintAnalyzeRelease"
}
},
"production": {
Expand Down
58 changes: 30 additions & 28 deletions packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,53 +9,55 @@
"i18n:sync": "yarn i18n:extract && yarn i18n:compile",
"ios": "expo run:ios",
"lint": "run -T eslint --fix src",
"prebuild": "expo prebuild --clean",
"start": "expo start --dev-client -c",
"ts": "run -T tsc -p .",
"web": "expo start --web"
},
"dependencies": {
"@expo-google-fonts/inter": "^0.2.3",
"@expo/fingerprint": "~0.13.4",
"@expo/fingerprint": "~0.15.1",
"@lingui/core": "^5.3.3",
"@lingui/react": "^5.3.3",
"@react-native-async-storage/async-storage": "2.1.2",
"@react-native-async-storage/async-storage": "2.2.0",
"@react-navigation/native": "^7.0.14",
"@reduxjs/toolkit": "^2.5.0",
"@rnw-community/shared": "^1.3.0",
"@suuudokuuu/generator": "workspace:*",
"date-fns": "^2.30.0",
"expo": "^53.0.20",
"expo-build-properties": "^0.14.8",
"expo-constants": "~17.1.7",
"expo-dev-client": "~5.2.4",
"expo-device": "^7.1.4",
"expo-font": "~13.3.2",
"expo-haptics": "~14.1.4",
"expo-linking": "~7.1.7",
"expo-localization": "^16.1.6",
"expo-router": "~5.1.4",
"expo-sharing": "^13.1.5",
"expo-splash-screen": "~0.30.10",
"expo-status-bar": "~2.2.3",
"expo-system-ui": "~5.0.10",
"expo-updates": "~0.28.17",
"expo": "^54.0.8",
"expo-constants": "~18.0.9",
"expo-dev-client": "~6.0.12",
"expo-device": "~8.0.7",
"expo-font": "~14.0.8",
"expo-haptics": "~15.0.7",
"expo-linking": "~8.0.8",
"expo-localization": "~17.0.7",
"expo-router": "~6.0.6",
"expo-sharing": "~14.0.7",
"expo-splash-screen": "~31.0.10",
"expo-status-bar": "~3.0.8",
"expo-system-ui": "~6.0.7",
"expo-updates": "~29.0.10",
"lucide-react-native": "^0.525.0",
"react": "19.0.0",
"react": "19.1.0",
"react-compiler-runtime": "19.0.0-beta-63e3235-20250105",
"react-dom": "19.0.0",
"react-native": "0.79.5",
"react-native-gesture-handler": "~2.24.0",
"react-native-reanimated": "~3.17.4",
"react-native-safe-area-context": "5.4.0",
"react-native-screens": "~4.11.1",
"react-native-svg": "15.11.2",
"react-native-web": "^0.20.0",
"react-dom": "19.1.0",
"react-native": "0.81.4",
"react-native-gesture-handler": "~2.28.0",
"react-native-reanimated": "^4.1.0",
"react-native-safe-area-context": "~5.6.0",
"react-native-screens": "~4.16.0",
"react-native-svg": "15.12.1",
"react-native-web": "^0.21.0",
"react-native-worklets": "^0.5.1",
"react-redux": "^9.2.0",
"redux-persist": "^6.0.0"
},
"devDependencies": {
"@types/react": "~19.0.10",
"@types/react": "~19.1.10",
"babel-plugin-macros": "^3.1.0",
"babel-plugin-react-compiler": "19.0.0-beta-af1b7da-20250417"
"babel-plugin-react-compiler": "19.0.0-beta-af1b7da-20250417",
"eas-build-cache-provider": "^16.4.2"
}
}
Loading
Loading