PromptArchPromptArch.ai
React Native + Expo

Cursor rule: Expo screens & state

Nota: A

An auto-attached .mdc rule for screen thinness, typed route params, three-state rendering, and the query/store boundary.

---
description: Expo Router screen and state-management conventions
globs: app/**/*.tsx,components/**/*.tsx,stores/**/*.ts
alwaysApply: false
---

# Screen and state rules

- Screens are thin: data via hooks from `@/hooks/queries`, layout via shared
  components. A screen file over ~150 lines needs extraction.
- Server data = TanStack Query; client-only state = Zustand. Never mirror one
  into the other - it desyncs on refetch.
- Type route params:

```tsx
const { trailId } = useLocalSearchParams<{ trailId: string }>();
const { data, isPending, error } = useTrail(trailId);
if (error) return <ErrorState retry={refetch} />;
```

- Every data-bearing screen renders all three states: pending, error, empty.
  Follow @app/(tabs)/profile.tsx for the pattern.
- Platform forks use `.ios.tsx` / `.android.tsx` files, not `Platform.OS`
  conditionals inside render.

Estes exemplos são publicados sob CC0. Use livremente, sem atribuição. São fornecidos como estão, sem garantia de qualquer tipo: revise e adapte ao seu projeto antes de usar, pois você é responsável pelo resultado de aplicá-los.

Leve o PromptArch para sua equipe

Implemente o PromptArch como ferramenta interna em todas as áreas da sua empresa. Obtenha contas de equipe com créditos pré-carregados compartilhados e domínios personalizados para sua organização.

Fale Conosco
Cursor rule: Expo screens & state - Example | PromptArch | PromptArch