{ "name": "@follow/mobile", "version": "0.5.0", "private": true, "main": "src/main.tsx", "scripts": { "android": "expo run:android", "bump": "vv", "dev": "npm run start", "e2e:android": "sh ./e2e/run-maestro.sh android", "e2e:bootstrap:ios:auth": "tsx scripts/e2e-prod-ios-auth-bootstrap.ts", "e2e:bootstrap:ios:prod-auth": "pnpm run e2e:bootstrap:ios:auth", "e2e:doctor": "sh -c 'for f in e2e/flows/shared/*.yaml e2e/flows/android/*.yaml e2e/flows/ios/*.yaml; do maestro check-syntax $f; done'", "e2e:ios": "sh ./e2e/run-maestro.sh ios", "e2e:ios:bootstrap": "sh ./e2e/run-maestro.sh ios bootstrap-auth", "eas-build-post-install": "rm -rf $TMPDIR/metro-cache", "eas-build-pre-install": "command -v pod >/dev/null 2>&1 && pod repo update || echo 'CocoaPods not found, skipping pod repo update'", "ios": "expo run:ios", "ios:device": "expo run:ios --device", "start": "expo start --dev-client", "start:clean": "expo start --dev-client --clear", "typecheck": "tsc --noEmit", "update": "tsx scripts/expo-update.ts", "update:bundle": "node ../../.github/scripts/build-ota-release.mjs", "update:export": "expo export -p ios -p android --output-dir dist", "web": "expo start --web" }, "dependencies": { "@better-auth/expo": "1.5.5", "@expo/metro-runtime": "55.0.9", "@expo/react-native-action-sheet": "4.1.1", "@follow-app/client-sdk": "catalog:", "@follow/components": "workspace:*", "@follow/constants": "workspace:*", "@follow/database": "workspace:*", "@follow/hooks": "workspace:*", "@follow/models": "workspace:*", "@follow/shared": "workspace:*", "@follow/store": "workspace:*", "@follow/tracker": "workspace:*", "@follow/types": "workspace:*", "@follow/utils": "workspace:*", "@gorhom/portal": "1.0.14", "@hookform/resolvers": "5.2.2", "@react-native-community/image-editor": "4.3.0", "@react-native-firebase/analytics": "24.0.0", "@react-native-firebase/app": "24.0.0", "@react-native-firebase/app-check": "24.0.0", "@react-native-firebase/messaging": "24.0.0", "@react-native-masked-view/masked-view": "0.3.2", "@react-native-menu/menu": "2.0.0", "@react-native-picker/picker": "2.11.4", "@shikijs/themes": "3.22.0", "@shopify/flash-list": "2.0.2", "@tanstack/query-sync-storage-persister": "5.90.22", "@tanstack/react-query": "5.90.21", "@tanstack/react-query-persist-client": "5.90.22", "@types/qrcode": "1.5.6", "better-auth": "1.5.5", "camelcase-keys": "10.0.2", "dayjs": "1.11.19", "dnum": "2.17.0", "es-toolkit": "1.44.0", "expo": "~55.0.15", "expo-apple-authentication": "55.0.13", "expo-application": "55.0.14", "expo-background-task": "~55.0.16", "expo-blur": "55.0.14", "expo-build-properties": "55.0.13", "expo-clipboard": "55.0.13", "expo-constants": "~55.0.14", "expo-dev-client": "~55.0.27", "expo-device": "~55.0.15", "expo-document-picker": "55.0.13", "expo-file-system": "55.0.16", "expo-glass-effect": "55.0.10", "expo-haptics": "55.0.14", "expo-iap": "2.5.0", "expo-image": "55.0.8", "expo-image-manipulator": "55.0.15", "expo-image-picker": "~55.0.18", "expo-linear-gradient": "55.0.13", "expo-linking": "~55.0.13", "expo-localization": "55.0.13", "expo-media-library": "55.0.14", "expo-network": "55.0.13", "expo-notifications": "~55.0.19", "expo-secure-store": "55.0.13", "expo-sharing": "55.0.18", "expo-splash-screen": "~55.0.18", "expo-sqlite": "55.0.15", "expo-status-bar": "55.0.5", "expo-store-review": "~55.0.13", "expo-symbols": "55.0.7", "expo-system-ui": "55.0.15", "expo-task-manager": "55.0.14", "expo-updates": "55.0.20", "expo-video": "55.0.15", "expo-web-browser": "55.0.14", "foxact": "0.2.52", "franc-min": "6.2.0", "i18next": "25.8.6", "jotai": "2.17.1", "lru-cache": "11.2.6", "nanoid": "5.1.6", "nativewind": "4.2.1", "ofetch": "1.5.1", "posthog-react-native": "4.34.0", "qrcode": "1.5.4", "react": "19.2.0", "react-dom": "19.2.0", "react-error-boundary": "6.1.0", "react-freeze": "1.0.4", "react-hook-form": "7.71.1", "react-i18next": "16.5.4", "react-native": "0.83.4", "react-native-awesome-slider": "2.9.0", "react-native-bouncy-checkbox": "4.1.4", "react-native-color-matrix-image-filters": "8.0.2", "react-native-css-interop": "0.2.1", "react-native-device-info": "15.0.1", "react-native-edge-to-edge": "1.7.0", "react-native-gesture-handler": "2.30.1", "react-native-image-colors": "2.5.1", "react-native-ios-context-menu": "3.2.1", "react-native-ios-utilities": "5.2.0", "react-native-keyboard-controller": "1.20.7", "react-native-otp-entry": "1.8.5", "react-native-pager-view": "8.0.0", "react-native-reanimated": "4.2.1", "react-native-root-siblings": "5.0.1", "react-native-safe-area-context": "5.6.2", "react-native-screens": "4.23.0", "react-native-sheet-transitions": "0.1.2", "react-native-svg": "15.15.3", "react-native-track-player": "4.1.1", "react-native-uikit-colors": "0.6.2", "react-native-volume-manager": "2.0.8", "react-native-web": "0.21.2", "react-native-webview": "13.16.0", "react-native-worklets": "0.7.4", "shiki": "3.22.0", "tailwindcss": "3.4.17", "title-case": "4.3.2", "use-sync-external-store": "1.6.0", "usehooks-ts": "3.1.1", "zeego": "3.0.6", "zod": "3.25.76", "zustand": "5.0.11" }, "devDependencies": { "@babel/core": "7.29.0", "@follow/configs": "workspace:*", "@tailwindcss/typography": "0.5.19", "@types/react": "19.2.14", "babel-plugin-inline-import": "3.0.0", "eas-cli": "16.26.0", "expo-drizzle-studio-plugin": "0.2.1", "nbump": "2.1.8", "pathe": "2.0.3", "postcss": "8.5.6", "sf-symbols-typescript": "2.2.0", "typescript": "catalog:" }, "appName": "Folo", "expo": { "install": { "exclude": [ "react-native-worklets" ] }, "autolinking": { "nativeModulesDir": "./native" }, "doctor": { "appConfigFieldsNotSyncedCheck": { "enabled": false }, "reactNativeDirectoryCheck": { "enabled": true, "exclude": [ "react-native-track-player", "follow-native", "react-native-color-matrix-image-filters" ], "listUnknownPackages": false } } } }