authorgravatar for saiansh2525@gmail.comYash Singh <saiansh2525@gmail.com> 2026-06-04 00:08:34-05:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-06-03 22:08:34-07:00
logdca93d0ee8556c3e179ae04339a104feb9e82c8e
tree6bd5fbe455545db34abca4cb5a75aaa244d043e1
parent1288909b6611436e8cb2c4084f9e197408caa8b4
signature Signed by PGP key B5690EEEBB952194

chore: setup eas ci (#2911)

Co-authored-by: Julius Marminge <julius@mac.lan>

10 files changed, 255 insertions(+), 6 deletions(-)

.github/workflows/mobile-eas-preview.yml created+78
...@@ -0,0 +1,78 @@
1name: Mobile EAS Preview
2
3on:
4 pull_request:
5
6jobs:
7 preview:
8 name: EAS Preview
9 runs-on: blacksmith-8vcpu-ubuntu-2404
10 permissions:
11 contents: read
12 pull-requests: write
13 env:
14 APP_VARIANT: preview
15 NODE_OPTIONS: --max-old-space-size=8192
16 MOBILE_VERSION_POLICY: fingerprint
17 steps:
18 - id: expo-token
19 name: Check for EXPO_TOKEN
20 env:
21 EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
22 run: |
23 if [ -n "$EXPO_TOKEN" ]; then
24 echo "present=true" >> "$GITHUB_OUTPUT"
25 else
26 echo "present=false" >> "$GITHUB_OUTPUT"
27 echo "EXPO_TOKEN is not available; skipping EAS preview."
28 fi
29
30 - name: Checkout
31 if: steps.expo-token.outputs.present == 'true'
32 uses: actions/checkout@v6
33 with:
34 fetch-depth: 0
35
36 - name: Setup Vite+
37 if: steps.expo-token.outputs.present == 'true'
38 uses: voidzero-dev/setup-vp@v1
39 with:
40 node-version-file: package.json
41 cache: true
42 run-install: true
43
44 - name: Expose pnpm
45 if: steps.expo-token.outputs.present == 'true'
46 run: |
47 pnpm_version="$(node --print "require('./package.json').packageManager.split('@').pop()")"
48 vp_pnpm_bin="$HOME/.vite-plus/package_manager/pnpm/$pnpm_version/pnpm/bin"
49 echo "$vp_pnpm_bin" >> "$GITHUB_PATH"
50 "$vp_pnpm_bin/pnpm" --version
51
52 - name: Setup EAS
53 if: steps.expo-token.outputs.present == 'true'
54 uses: expo/expo-github-action@v8
55 with:
56 eas-version: latest
57 token: ${{ secrets.EXPO_TOKEN }}
58 packager: pnpm
59
60 - name: Pull preview environment variables
61 if: steps.expo-token.outputs.present == 'true'
62 working-directory: apps/mobile
63 env:
64 EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
65 run: eas env:pull preview --non-interactive
66
67 - name: Deploy with fingerprint check
68 if: steps.expo-token.outputs.present == 'true'
69 uses: expo/expo-github-action/continuous-deploy-fingerprint@main
70 env:
71 EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
72 with:
73 profile: preview:dev
74 branch: pr-${{ github.event.pull_request.number }}
75 platform: all
76 environment: preview
77 working-directory: apps/mobile
78 github-token: ${{ secrets.GITHUB_TOKEN }}
apps/mobile/.fingerprintignore created+24
...@@ -0,0 +1,24 @@
1# Expo artifacts
2.expo/
3.eas/
4
5# Build outputs
6android/
7ios/
8dist/
9web-build/
10
11# Test files
12**/*.test.ts
13**/*.test.tsx
14
15# Docs
16*.md
17
18# Local env
19.env
20.env.local
21.env*.local
22
23# TypeScript
24*.tsbuildinfo
apps/mobile/README.md+9
...@@ -61,6 +61,14 @@ The native lint task runs SwiftLint for Swift plus ktlint and detekt for Kotlin....@@ -61,6 +61,14 @@ The native lint task runs SwiftLint for Swift plus ktlint and detekt for Kotlin.
6161
62## EAS Builds62## EAS Builds
6363
64CI uses Expo fingerprinting with the `preview:dev` profile to reuse an existing compatible build when possible, or start a new internal EAS build when native runtime inputs change. Production and default local builds continue to use the `appVersion` runtime policy.
65
66Create a PR preview dev-client build manually:
67
68```bash
69vp run eas:ios:preview:dev
70```
71
64Create a cloud dev-client build:72Create a cloud dev-client build:
6573
66```bash74```bash
...@@ -77,5 +85,6 @@ Android equivalents:...@@ -77,5 +85,6 @@ Android equivalents:
7785
78```bash86```bash
79vp run eas:android:dev87vp run eas:android:dev
88vp run eas:android:preview:dev
80vp run eas:android:preview89vp run eas:android:preview
81```90```
apps/mobile/app.config.ts+2-1
...@@ -53,10 +53,11 @@ const variant = VARIANT_CONFIG[APP_VARIANT];...@@ -53,10 +53,11 @@ const variant = VARIANT_CONFIG[APP_VARIANT];
53const config: ExpoConfig = {53const config: ExpoConfig = {
54 name: variant.appName,54 name: variant.appName,
55 slug: "t3-code",55 slug: "t3-code",
56 platforms: ["ios", "android"],
56 scheme: variant.scheme,57 scheme: variant.scheme,
57 version: "0.1.0",58 version: "0.1.0",
58 runtimeVersion: {59 runtimeVersion: {
59 policy: "appVersion",60 policy: process.env.MOBILE_VERSION_POLICY ?? "appVersion",
60 },61 },
61 orientation: "portrait",62 orientation: "portrait",
62 icon: "./assets/icon.png",63 icon: "./assets/icon.png",
apps/mobile/eas.json+15
...@@ -17,13 +17,28 @@...@@ -17,13 +17,28 @@
17 "APP_VARIANT": "preview"17 "APP_VARIANT": "preview"
18 },18 },
19 "channel": "preview",19 "channel": "preview",
20 "environment": "preview",
20 "distribution": "internal"21 "distribution": "internal"
21 },22 },
23 "preview:dev": {
24 "env": {
25 "APP_VARIANT": "preview",
26 "MOBILE_VERSION_POLICY": "fingerprint"
27 },
28 "channel": "preview",
29 "environment": "preview",
30 "developmentClient": true,
31 "distribution": "internal",
32 "android": {
33 "buildType": "apk"
34 }
35 },
22 "production": {36 "production": {
23 "env": {37 "env": {
24 "APP_VARIANT": "production"38 "APP_VARIANT": "production"
25 },39 },
26 "channel": "production",40 "channel": "production",
41 "environment": "production",
27 "autoIncrement": true42 "autoIncrement": true
28 }43 }
29 },44 },
apps/mobile/package.json+3
...@@ -16,6 +16,7 @@...@@ -16,6 +16,7 @@
16 "android:prod": "APP_VARIANT=production EXPO_NO_GIT_STATUS=1 expo prebuild --clean --platform android && expo run:android",16 "android:prod": "APP_VARIANT=production EXPO_NO_GIT_STATUS=1 expo prebuild --clean --platform android && expo run:android",
17 "eas:android:dev": "eas build --profile development -p android",17 "eas:android:dev": "eas build --profile development -p android",
18 "eas:android:preview": "eas build --profile preview -p android",18 "eas:android:preview": "eas build --profile preview -p android",
19 "eas:android:preview:dev": "eas build --profile preview:dev -p android",
19 "eas:android:prod": "eas build --profile production -p android",20 "eas:android:prod": "eas build --profile production -p android",
20 "ios": "EXPO_NO_GIT_STATUS=1 expo prebuild --clean --platform ios && expo run:ios",21 "ios": "EXPO_NO_GIT_STATUS=1 expo prebuild --clean --platform ios && expo run:ios",
21 "ios:dev": "APP_VARIANT=development EXPO_NO_GIT_STATUS=1 expo prebuild --clean --platform ios && expo run:ios",22 "ios:dev": "APP_VARIANT=development EXPO_NO_GIT_STATUS=1 expo prebuild --clean --platform ios && expo run:ios",
...@@ -23,9 +24,11 @@...@@ -23,9 +24,11 @@
23 "ios:prod": "APP_VARIANT=production EXPO_NO_GIT_STATUS=1 expo prebuild --clean --platform ios && expo run:ios",24 "ios:prod": "APP_VARIANT=production EXPO_NO_GIT_STATUS=1 expo prebuild --clean --platform ios && expo run:ios",
24 "eas:ios:dev": "eas build --profile development -p ios",25 "eas:ios:dev": "eas build --profile development -p ios",
25 "eas:ios:preview": "eas build --profile preview -p ios",26 "eas:ios:preview": "eas build --profile preview -p ios",
27 "eas:ios:preview:dev": "eas build --profile preview:dev -p ios",
26 "eas:ios:prod": "eas build --profile production -p ios",28 "eas:ios:prod": "eas build --profile production -p ios",
27 "eas:dev": "eas build --profile development",29 "eas:dev": "eas build --profile development",
28 "eas:preview": "eas build --profile preview",30 "eas:preview": "eas build --profile preview",
31 "eas:preview:dev": "eas build --profile preview:dev",
29 "eas:prod": "eas build --profile production",32 "eas:prod": "eas build --profile production",
30 "config:dev": "APP_VARIANT=development expo config",33 "config:dev": "APP_VARIANT=development expo config",
31 "config:preview": "APP_VARIANT=preview expo config",34 "config:preview": "APP_VARIANT=preview expo config",
package.json+2
...@@ -67,6 +67,7 @@...@@ -67,6 +67,7 @@
67 "sync:repos": "node scripts/sync-reference-repos.ts"67 "sync:repos": "node scripts/sync-reference-repos.ts"
68 },68 },
69 "devDependencies": {69 "devDependencies": {
70 "@babel/plugin-transform-react-jsx": "7.28.6",
70 "@effect/tsgo": "catalog:",71 "@effect/tsgo": "catalog:",
71 "@oxlint/plugins": "^1.63.0",72 "@oxlint/plugins": "^1.63.0",
72 "@types/node": "catalog:",73 "@types/node": "catalog:",
...@@ -99,6 +100,7 @@...@@ -99,6 +100,7 @@
99 ]100 ]
100 },101 },
101 "patchedDependencies": {102 "patchedDependencies": {
103 "@expo/metro-config@56.0.13": "patches/@expo%2Fmetro-config@56.0.13.patch",
102 "@pierre/diffs@1.1.20@1.1.20": "patches/@pierre%2Fdiffs@1.1.20.patch",104 "@pierre/diffs@1.1.20@1.1.20": "patches/@pierre%2Fdiffs@1.1.20.patch",
103 "effect@4.0.0-beta.73@4.0.0-beta.73": "patches/effect@4.0.0-beta.73.patch",105 "effect@4.0.0-beta.73@4.0.0-beta.73": "patches/effect@4.0.0-beta.73.patch",
104 "react-native-nitro-modules@0.35.9@0.35.9": "patches/react-native-nitro-modules@0.35.9.patch"106 "react-native-nitro-modules@0.35.9@0.35.9": "patches/react-native-nitro-modules@0.35.9.patch"
patches/@expo%2Fmetro-config@56.0.13.patch created+93
...@@ -0,0 +1,93 @@
1diff --git a/build/serializer/sourceMap.js b/build/serializer/sourceMap.js
2index 4cc9aa4..703dfe0 100644
3--- a/build/serializer/sourceMap.js
4+++ b/build/serializer/sourceMap.js
5@@ -20,6 +20,20 @@ function loadRemapping() {
6 }
7 return _remapping;
8 }
9+let _sourceMapCodec;
10+function loadSourceMapCodec() {
11+ if (!_sourceMapCodec) {
12+ _sourceMapCodec = require('@jridgewell/sourcemap-codec');
13+ }
14+ return _sourceMapCodec;
15+}
16+let _traceMapping;
17+function loadTraceMapping() {
18+ if (!_traceMapping) {
19+ _traceMapping = require('@jridgewell/trace-mapping');
20+ }
21+ return _traceMapping;
22+}
23 let _Generator;
24 function loadGenerator() {
25 if (!_Generator) {
26@@ -199,6 +213,58 @@ function patchMetroSourceMapStringForPackedMaps() {
27 stock.sourceMapString = sourceMapString;
28 stock.sourceMapStringNonBlocking = sourceMapStringNonBlocking;
29 }
30+// Hermes can emit mappings for Metro trailer/debug lines that have no
31+// corresponding Metro source-map line. @jridgewell/remapping assumes every
32+// referenced generated line exists, so strip those invalid bridge segments.
33+function getGeneratedLineCount(map) {
34+ const { TraceMap, decodedMappings } = loadTraceMapping();
35+ return decodedMappings(new TraceMap(map)).length;
36+}
37+function dropInvalidOriginalSegments(map, maxOriginalLine) {
38+ const { TraceMap, decodedMappings } = loadTraceMapping();
39+ const decoded = decodedMappings(new TraceMap(map));
40+ let didChange = false;
41+ const filtered = decoded.map((line) => {
42+ const filteredLine = line.filter((segment) => {
43+ if (segment.length < 4) {
44+ return true;
45+ }
46+ const sourceIndex = segment[1];
47+ const sourceLine = segment[2];
48+ const sourceColumn = segment[3];
49+ return (sourceIndex >= 0 &&
50+ sourceIndex < map.sources.length &&
51+ sourceLine >= 0 &&
52+ sourceLine < maxOriginalLine &&
53+ sourceColumn >= 0);
54+ });
55+ if (filteredLine.length !== line.length) {
56+ didChange = true;
57+ }
58+ return filteredLine;
59+ });
60+ if (!didChange) {
61+ return map;
62+ }
63+ return {
64+ ...map,
65+ mappings: loadSourceMapCodec().encode(filtered),
66+ };
67+}
68+function sanitizeSourceMapsForComposition(maps) {
69+ let sanitized = maps;
70+ for (let index = 1; index < maps.length; index++) {
71+ const maxOriginalLine = getGeneratedLineCount(sanitized[index - 1]);
72+ const next = dropInvalidOriginalSegments(sanitized[index], maxOriginalLine);
73+ if (next !== sanitized[index]) {
74+ if (sanitized === maps) {
75+ sanitized = maps.slice();
76+ }
77+ sanitized[index] = next;
78+ }
79+ }
80+ return sanitized;
81+}
82 // `maps[0]` is the original-most transform; `maps[maps.length - 1]` is
83 // the most recent. Built on `@jridgewell/remapping` instead of mozilla's
84 // `SourceMapConsumer`-based composer.
85@@ -226,7 +292,7 @@ function composeSourceMaps(maps) {
86 return { ...map, ignoreList: map.x_google_ignoreList };
87 });
88 // Metro convention is original-first; remapping is most-recent first.
89- const reversed = normalized.slice().reverse();
90+ const reversed = sanitizeSourceMapsForComposition(normalized).slice().reverse();
91 const composed = loadRemapping()(reversed, () => null);
92 // Re-emit as a plain object — remapping returns a `SourceMap` class
93 // instance, which doesn't round-trip JSON cleanly.
pnpm-lock.yaml+28-5
...@@ -49,6 +49,9 @@ overrides:...@@ -49,6 +49,9 @@ overrides:
49packageExtensionsChecksum: sha256-MDpMSm2Rk8Y7FDIbaAgFkT45PZBPV7JBzjTAft+noEM=49packageExtensionsChecksum: sha256-MDpMSm2Rk8Y7FDIbaAgFkT45PZBPV7JBzjTAft+noEM=
5050
51patchedDependencies:51patchedDependencies:
52 '@expo/metro-config@56.0.13':
53 hash: 8cb08b5bb7051ed9d2dbe46a2c293c5a1e17f1bd6ddf30de27909e18c921ff46
54 path: patches/@expo%2Fmetro-config@56.0.13.patch
52 '@pierre/diffs@1.1.20':55 '@pierre/diffs@1.1.20':
53 hash: e4e35ba95100de3708f900e0d9ea62bca732b1e4486024b5055f48cd128dd9e056 hash: e4e35ba95100de3708f900e0d9ea62bca732b1e4486024b5055f48cd128dd9e0
54 path: patches/@pierre%2Fdiffs@1.1.20.patch57 path: patches/@pierre%2Fdiffs@1.1.20.patch
...@@ -63,6 +66,9 @@ importers:...@@ -63,6 +66,9 @@ importers:
6366
64 .:67 .:
65 devDependencies:68 devDependencies:
69 '@babel/plugin-transform-react-jsx':
70 specifier: 7.28.6
71 version: 7.28.6(@babel/core@7.29.7)
66 '@effect/tsgo':72 '@effect/tsgo':
67 specifier: 'catalog:'73 specifier: 'catalog:'
68 version: 0.11.474 version: 0.11.4
...@@ -1223,6 +1229,12 @@ packages:...@@ -1223,6 +1229,12 @@ packages:
1223 peerDependencies:1229 peerDependencies:
1224 '@babel/core': ^7.0.0-01230 '@babel/core': ^7.0.0-0
12251231
1232 '@babel/plugin-transform-react-jsx@7.28.6':
1233 resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==}
1234 engines: {node: '>=6.9.0'}
1235 peerDependencies:
1236 '@babel/core': ^7.0.0-0
1237
1226 '@babel/plugin-transform-react-jsx@7.29.7':1238 '@babel/plugin-transform-react-jsx@7.29.7':
1227 resolution: {integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==}1239 resolution: {integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==}
1228 engines: {node: '>=6.9.0'}1240 engines: {node: '>=6.9.0'}
...@@ -8196,6 +8208,17 @@ snapshots:...@@ -8196,6 +8208,17 @@ snapshots:
8196 '@babel/core': 7.29.78208 '@babel/core': 7.29.7
8197 '@babel/helper-plugin-utils': 7.29.78209 '@babel/helper-plugin-utils': 7.29.7
81988210
8211 '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.7)':
8212 dependencies:
8213 '@babel/core': 7.29.7
8214 '@babel/helper-annotate-as-pure': 7.29.7
8215 '@babel/helper-module-imports': 7.29.7
8216 '@babel/helper-plugin-utils': 7.29.7
8217 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7)
8218 '@babel/types': 7.29.7
8219 transitivePeerDependencies:
8220 - supports-color
8221
8199 '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7)':8222 '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7)':
8200 dependencies:8223 dependencies:
8201 '@babel/core': 7.29.78224 '@babel/core': 7.29.7
...@@ -8607,7 +8630,7 @@ snapshots:...@@ -8607,7 +8630,7 @@ snapshots:
8607 '@expo/json-file': 10.2.08630 '@expo/json-file': 10.2.0
8608 '@expo/log-box': 56.0.12(@expo/dom-webview@56.0.5)(expo@56.0.8)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.16)(react@19.2.3))(react@19.2.3)8631 '@expo/log-box': 56.0.12(@expo/dom-webview@56.0.5)(expo@56.0.8)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.16)(react@19.2.3))(react@19.2.3)
8609 '@expo/metro': 56.0.08632 '@expo/metro': 56.0.0
8610 '@expo/metro-config': 56.0.13(expo@56.0.8)(typescript@6.0.3)8633 '@expo/metro-config': 56.0.13(patch_hash=8cb08b5bb7051ed9d2dbe46a2c293c5a1e17f1bd6ddf30de27909e18c921ff46)(expo@56.0.8)(typescript@6.0.3)
8611 '@expo/metro-file-map': 56.0.38634 '@expo/metro-file-map': 56.0.3
8612 '@expo/osascript': 2.6.08635 '@expo/osascript': 2.6.0
8613 '@expo/package-manager': 1.12.18636 '@expo/package-manager': 1.12.1
...@@ -8800,7 +8823,7 @@ snapshots:...@@ -8800,7 +8823,7 @@ snapshots:
8800 react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.16)(react@19.2.3)8823 react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.16)(react@19.2.3)
8801 stacktrace-parser: 0.1.118824 stacktrace-parser: 0.1.11
88028825
8803 '@expo/metro-config@56.0.13(expo@56.0.8)(typescript@6.0.3)':8826 '@expo/metro-config@56.0.13(patch_hash=8cb08b5bb7051ed9d2dbe46a2c293c5a1e17f1bd6ddf30de27909e18c921ff46)(expo@56.0.8)(typescript@6.0.3)':
8804 dependencies:8827 dependencies:
8805 '@babel/code-frame': 7.29.78828 '@babel/code-frame': 7.29.7
8806 '@babel/core': 7.29.78829 '@babel/core': 7.29.7
...@@ -9831,7 +9854,7 @@ snapshots:...@@ -9831,7 +9854,7 @@ snapshots:
9831 '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7)9854 '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7)
9832 '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7)9855 '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7)
9833 '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7)9856 '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7)
9834 '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7)9857 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.7)
9835 '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7)9858 '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7)
9836 '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7)9859 '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7)
9837 '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7)9860 '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7)
...@@ -11092,7 +11115,7 @@ snapshots:...@@ -11092,7 +11115,7 @@ snapshots:
11092 '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7)11115 '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7)
11093 '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7)11116 '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7)
11094 '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7)11117 '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7)
11095 '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7)11118 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.7)
11096 '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7)11119 '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7)
11097 '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.7)11120 '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.7)
11098 '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7)11121 '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7)
...@@ -11959,7 +11982,7 @@ snapshots:...@@ -11959,7 +11982,7 @@ snapshots:
11959 '@expo/local-build-cache-provider': 56.0.8(typescript@6.0.3)11982 '@expo/local-build-cache-provider': 56.0.8(typescript@6.0.3)
11960 '@expo/log-box': 56.0.12(@expo/dom-webview@56.0.5)(expo@56.0.8)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.16)(react@19.2.3))(react@19.2.3)11983 '@expo/log-box': 56.0.12(@expo/dom-webview@56.0.5)(expo@56.0.8)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.16)(react@19.2.3))(react@19.2.3)
11961 '@expo/metro': 56.0.011984 '@expo/metro': 56.0.0
11962 '@expo/metro-config': 56.0.13(expo@56.0.8)(typescript@6.0.3)11985 '@expo/metro-config': 56.0.13(patch_hash=8cb08b5bb7051ed9d2dbe46a2c293c5a1e17f1bd6ddf30de27909e18c921ff46)(expo@56.0.8)(typescript@6.0.3)
11963 '@ungap/structured-clone': 1.3.111986 '@ungap/structured-clone': 1.3.1
11964 babel-preset-expo: 56.0.14(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo@56.0.8)(react-refresh@0.14.2)11987 babel-preset-expo: 56.0.14(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo@56.0.8)(react-refresh@0.14.2)
11965 expo-asset: 56.0.15(expo@56.0.8)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.16)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)11988 expo-asset: 56.0.15(expo@56.0.8)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.16)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
pnpm-workspace.yaml+1
...@@ -57,6 +57,7 @@ packageExtensions:...@@ -57,6 +57,7 @@ packageExtensions:
57 dependencies:57 dependencies:
58 "@vitest/runner": "catalog:"58 "@vitest/runner": "catalog:"
59patchedDependencies:59patchedDependencies:
60 "@expo/metro-config@56.0.13": patches/@expo%2Fmetro-config@56.0.13.patch
60 "@pierre/diffs@1.1.20": patches/@pierre%2Fdiffs@1.1.20.patch61 "@pierre/diffs@1.1.20": patches/@pierre%2Fdiffs@1.1.20.patch
61 effect@4.0.0-beta.73: patches/effect@4.0.0-beta.73.patch62 effect@4.0.0-beta.73: patches/effect@4.0.0-beta.73.patch
62 react-native-nitro-modules@0.35.9: patches/react-native-nitro-modules@0.35.9.patch63 react-native-nitro-modules@0.35.9: patches/react-native-nitro-modules@0.35.9.patch