{
  "name": "react-native-starter",
  "version": "1.0.2",
  "description": "Production-ready React Native starter — TypeScript (strict), feature-first architecture, theme tokens, i18n (EN/DE/RU), offline-first, pluggable transport, Biome, Jest, GitHub Actions.",
  "keywords": [
    "react-native",
    "typescript",
    "starter",
    "template",
    "boilerplate",
    "feature-first",
    "offline-first",
    "react-navigation",
    "tanstack-query",
    "zustand",
    "mmkv",
    "i18n",
    "biome",
    "sentry"
  ],
  "homepage": "https://github.com/maximcoding/react-native-starter#readme",
  "repository": {
    "type": "git",
    "url": "https://github.com/maximcoding/react-native-starter.git"
  },
  "author": "Maxim Livshitz",
  "license": "MIT",
  "private": true,
  "scripts": {
    "start": "react-native start --reset-cache",
    "env:ensure": "node scripts/ensure-env.cjs",
    "ios": "node scripts/ensure-env.cjs && react-native run-ios",
    "android": "node scripts/ensure-env.cjs && node scripts/wait-for-android-device.cjs && react-native run-android",
    "android:devices": "adb devices",
    "android:uninstall": "adb uninstall com.reactnativestarter || true",
    "npx:ios": "node scripts/ensure-env.cjs && npx react-native run-ios",
    "npx:android": "node scripts/ensure-env.cjs && node scripts/wait-for-android-device.cjs && npx react-native run-android",
    "doctor": "npx react-native doctor",
    "pod-install": "npx pod-install ios",
    "lint": "biome check .",
    "format": "biome check . --write",
    "test": "jest",
    "gen:icons": "node scripts/generate-icons.js",
    "gen:app-icon": "node scripts/generate-app-icon.cjs",
    "cache:clean": "npm cache clean --force",
    "clean:auto": "react-native clean-project-auto",
    "clean": "react-native clean-project",
    "watchman:shutdown": "watchman shutdown-server",
    "watchman:delete": "watchman watch-del-all",
    "adb": "adb reverse tcp:9090 tcp:9090 && adb reverse tcp:3000 tcp:3000 && adb reverse tcp:9001 tcp:9001 && adb reverse tcp:8081 tcp:8081",
    "release": "standard-version",
    "release:patch": "npm run release -- --release-as patch",
    "release:minor": "npm run release -- --release-as minor",
    "release:major": "npm run release -- --release-as major",
    "android:key:generate": "keytool -genkey -v -keystore maxim.keystore -alias android_key -keyalg RSA -keysize 2048 -validity 10000",
    "android:key:move": "mv maxim.keystore android/app",
    "android:assets": "mkdir -p android/app/src/main/assets/ && react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/",
    "android:build:bundle": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res",
    "android:build:debug": "node scripts/ensure-env.cjs && cd android && ./gradlew assembleDebug && cd .. && open android/app/build/outputs/apk/debug/",
    "android:build:release": "node scripts/ensure-env.cjs && cd android && ./gradlew assembleRelease && cd .. && open android/app/build/outputs/apk/release/",
    "android:build:release:store": "node scripts/ensure-env.cjs && npx react-native build-android --mode=release",
    "android:clean": "node scripts/ensure-env.cjs && rm -rf android/app/.cxx android/app/build android/build",
    "android:clean:gradle": "node scripts/ensure-env.cjs && cd android && ./gradlew clean -x :app:externalNativeBuildCleanDebug -x :app:externalNativeBuildCleanDebugOptimized -x :app:externalNativeBuildCleanRelease && cd ..",
    "gradle:wrapper": "cd android && gradle wrapper && cd ..",
    "gradle:debug": "node scripts/ensure-env.cjs && cd android && ./gradlew assembleDebug && cd ..",
    "gradle:stop": "cd android && ./gradlew --stop && cd ..",
    "gradle:clean": "node scripts/ensure-env.cjs && rm -rf android/app/.cxx android/app/build android/build",
    "gradle:clean:build": "cd android && ./gradlew cleanBuildCache && cd ..",
    "debug:key": "cd android && ./gradlew signingReport && cd ..",
    "reactotron:android": "adb reverse tcp:9090 tcp:9090",
    "link": "npx react-native-asset",
    "i18n:extract": "i18next 'App.tsx' 'src/**/*.{ts,tsx}' --config src/i18n/i18next-parser.config.cjs",
    "i18n:types": "node src/i18n/generate-i18n-types.cjs",
    "i18n:all": "npm run i18n:extract && npm run i18n:types",
    "prepare": "husky",
    "check:icons": "node scripts/check-icons-stale.js",
    "check:imports": "node scripts/check-import-paths.js",
    "android:rebuild": "node scripts/ensure-env.cjs && rm -rf android/app/build android/app/.cxx android/build android/.gradle && cd android && ./gradlew :app:assembleDebug && cd .. && node scripts/wait-for-android-device.cjs && npx react-native run-android",
    "bootsplash:generate": "node scripts/bootsplash-generate.cjs"
  },
  "dependencies": {
    "@react-native-clipboard/clipboard": "^1.14.1",
    "@react-native-community/netinfo": "^11.4.1",
    "@react-native-vector-icons/ionicons": "^12.3.0",
    "@react-native/new-app-screen": "0.82.1",
    "@react-navigation/bottom-tabs": "^7.8.11",
    "@react-navigation/native": "^7.1.24",
    "@react-navigation/native-stack": "^7.8.5",
    "@sentry/react-native": "^8.5.0",
    "@shopify/flash-list": "^2.2.0",
    "@tanstack/react-query": "^5.90.12",
    "@tanstack/react-query-persist-client": "^5.90.14",
    "apisauce": "^2.1.3",
    "i18next": "^25.7.1",
    "i18next-resources-to-backend": "^1.2.1",
    "react": "19.1.1",
    "react-i18next": "^16.3.5",
    "react-native": "0.82.1",
    "react-native-bootsplash": "^6.3.11",
    "react-native-config": "^1.6.1",
    "react-native-gesture-handler": "^2.29.1",
    "react-native-localize": "^3.6.0",
    "react-native-mmkv": "4.3.0",
    "react-native-nitro-modules": "0.35.0",
    "react-native-reanimated": "^4.2.0",
    "react-native-safe-area-context": "^5.6.2",
    "react-native-screens": "^4.18.0",
    "react-native-svg": "^15.15.1",
    "react-native-svg-transformer": "^1.5.2",
    "react-native-vector-icons": "^10.3.0",
    "react-native-webview": "^13.16.1",
    "react-native-worklet": "^0.0.0",
    "react-native-worklets": "^0.7.1",
    "zod": "^4.1.13",
    "zustand": "^5.0.2"
  },
  "devDependencies": {
    "@babel/core": "^7.25.2",
    "@babel/plugin-transform-export-namespace-from": "^7.27.1",
    "@babel/preset-env": "^7.25.3",
    "@babel/runtime": "^7.25.0",
    "@biomejs/biome": "^2.4.8",
    "@react-native-community/cli": "20.0.0",
    "@react-native-community/cli-platform-android": "20.0.0",
    "@react-native-community/cli-platform-ios": "20.0.0",
    "@react-native/babel-preset": "0.82.1",
    "@react-native/metro-config": "0.82.1",
    "@react-native/typescript-config": "0.82.1",
    "@types/jest": "^29.5.14",
    "@types/node": "^24.10.2",
    "@types/react": "^19.1.1",
    "@types/react-native-vector-icons": "^6.4.18",
    "@types/react-test-renderer": "^19.1.0",
    "babel-plugin-module-resolver": "^5.0.2",
    "husky": "^9.1.7",
    "i18next-parser": "^9.3.0",
    "jest": "^29.6.3",
    "lint-staged": "^16.2.7",
    "prettier": "^3.8.1",
    "react-test-renderer": "19.1.1",
    "sharp": "0.34.2",
    "standard-version": "^9.5.0",
    "typescript": "^5.8.3"
  },
  "overrides": {
    "react-native-nitro-modules": "0.35.0"
  },
  "engines": {
    "node": ">=20"
  }
}
