← ClaudeAtlas

expo-mobilelisted

Stack context for Expo / React Native projects — Expo Router, secure storage, permissions, and mobile-specific conventions
SilviaAre95/wayworks · ★ 1 · AI & Automation · score 75
Install: claude install-skill SilviaAre95/wayworks
# Stack Profile: Expo / React Native This profile is automatically loaded when working in an Expo project. ## Architecture Conventions - **Expo Router** for navigation (file-based, like Next.js App Router) - **expo-secure-store** for tokens and sensitive data — never AsyncStorage for secrets - **Strict TypeScript**; Zod validation at API boundaries (shared schemas with the web app when in a monorepo) - Shared logic lives in a shared workspace package, not duplicated per platform ## Mobile-Specific Patterns - Handle permissions gracefully: request in context, explain why, degrade with a user-facing message when denied (camera, notifications, location) - Design for offline-first where data allows; show explicit loading/stale states - Deep links: define the scheme in `app.json` and test cold-start routing - Push: expo-notifications tokens are per-device — store server-side keyed to the user ## Testing - **jest-expo** is the Jest preset, and its major version is locked to the Expo SDK major (SDK 57 ↔ jest-expo ~57). A mismatched jest-expo fails `npm install` with an `ERESOLVE` peer-dependency conflict on `expo`. - Install and upgrade test dependencies with `npx expo install jest-expo jest` — never plain `npm install`/`yarn add`, which pull latest and break the SDK pairing - After any SDK upgrade, run `npx expo install --check` (or `--fix`) to catch stale SDK-paired packages, jest-expo included - **@testing-library/react-native** for component tests; keep `react-test-render