stack-expo · git:20261015.86234b5 · 2026-10-15 · sha256 99a4ce21745a5d55

stack-expo git:20261015.86234b5A

Immutable. This exact content never changes and is served at /api/v1/blob/99a4ce21745a5d55.

---
name: stack-expo
description: Conventions for the Expo / React Native stack (Expo Router screens per task, components/<f>, lib owners). Use when adding a screen, component, navigation or API call in this app.
---
# Expo stack
Setup: `.uak/stacks/expo/STACK.md`.

| Rule | Why |
|---|---|
| One task = one route file or folder in `app/` + `components/<f>/`; `_layout.tsx` belongs to setup | disjoint claims |
| Native modules only with `npx expo install` and through the owner of `package.json`/`app.json` | config plugins change the build |
| API calls through `lib/api.ts` with a timeout and a labeled mock (`demo_data: true`) | the demo survives no network at the venue |
| Test on web first (`expo export --platform web` in smoke), then on one real device before the demo | the gate has no simulator |
| Every list has loading, empty and error states; tap targets at least 44 pt | reviewers check them |

```bash
bash .uak/bin/q npx tsc --noEmit
```