Files
wehub-resource-sync d48cda4081
CI / Test (ubuntu-latest, Node 18.x, bun) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, npm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, pnpm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, yarn) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 20.x, bun) (push) Failing after 17m13s
CI / Test (ubuntu-latest, Node 20.x, npm) (push) Failing after 18m42s
CI / Test (ubuntu-latest, Node 20.x, pnpm) (push) Failing after 15m0s
CI / Test (ubuntu-latest, Node 20.x, yarn) (push) Failing after 49m44s
CI / Test (ubuntu-latest, Node 22.x, bun) (push) Failing after 51m55s
CI / Test (ubuntu-latest, Node 22.x, pnpm) (push) Failing after 21m57s
CI / Test (ubuntu-latest, Node 22.x, npm) (push) Failing after 37m39s
CI / Test (ubuntu-latest, Node 22.x, yarn) (push) Failing after 34m7s
CI / Validate Components (push) Failing after 37m15s
CI / Python Tests (push) Failing after 10m1s
CI / Security Scan (push) Failing after 10m1s
CI / Lint (push) Failing after 17m12s
CI / Coverage (push) Failing after 20m19s
CI / Test (macos-latest, Node 18.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, yarn) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:55:55 +08:00

2.1 KiB

paths
paths
**/*.ts
**/*.tsx

React Native / Expo Production Readiness

Extends the ECC philosophy to ship-grade concerns that style/pattern rules cannot encode by themselves. A clean codebase is necessary but not sufficient for production — these items are mandatory before release.

Architecture

  • Ship on the New Architecture (Fabric + TurboModules). It is the default in recent Expo SDKs and is mandatory (cannot be disabled) from SDK 55+. Audit native deps for compatibility.
  • Pin the Expo SDK version; upgrade deliberately with npx expo install --check and test on both platforms.

Build & Release (EAS)

  • Use EAS Build for production binaries and EAS Submit for store delivery. Do not rely on local ad-hoc builds for release.
  • Keep separate build profiles (development, preview, production) in eas.json.
  • Manage signing credentials via EAS; never commit keystores or provisioning profiles.

Over-the-Air Updates

  • Use EAS Update (expo-updates) for JS-only fixes, with a defined runtime version policy.
  • Never push native changes via OTA — those require a new store build.
  • Roll out gradually and keep the ability to roll back.

Observability

  • Integrate crash + error reporting (e.g. Sentry via @sentry/react-native) in production builds.
  • Add structured logging and, where useful, analytics — but strip verbose logs from release.
  • Capture and surface failed network/mutation states; do not fail silently.

Configuration & Versioning

  • Bump version and ios.buildNumber / android.versionCode per release.
  • Public config via EXPO_PUBLIC_*; real secrets via EAS secrets only.
  • Validate required config at startup and fail fast with a clear message.

Pre-Release Gate

Before shipping, all must pass:

  • tsc --noEmit clean
  • npx expo lint clean
  • Tests green, coverage >= 80% (see testing.md)
  • npx expo-doctor healthy
  • Critical-flow E2E (Maestro/Detox) pass on a real build
  • No secrets in bundle (see security.md)
  • Crash reporting active and verified
  • Tested on physical iOS and Android devices, not just simulators