Census — what shipped apps actually use
Download counts can be gamed (a single vendor's CI once produced a 60× "adoption surge"); the dependency choices of real, active, production open-source apps can't. The census fetches each cohort app's package.json, runs the corpus's own detectors over it, and reports observed adoption per decision — with honest denominators: React-Native-only decisions are measured against the RN apps only. Counts are evidence, not verdicts — mature apps carry legacy weight (Redux, styled-components) that the context-keyed recommendations already account for.
| decision | apps using the domain | observed adoption (apps shipping each option) |
|---|---|---|
| typescript | 28/34 (82%) | TypeScript ×28 |
| state | 24/34 (71%) | Redux (react-redux) ×15 · Redux (classic) ×13 · Redux Toolkit ×8 · Zustand ×4 · Jotai ×4 · MobX ×4 · Valtio ×1 |
| data | 15/34 (44%) | TanStack Query ×11 · Apollo Client ×2 · SWR ×2 · Zero ×1 |
| nav | 24/34 (71%) | React Navigation ×13 · React Router ×9 · TanStack Router ×2 · Expo Router ×1 |
| meta-frameworks | 5/34 (15%) | Next.js ×5 · TanStack Start ×1 |
| forms | 21/34 (62%) | Zod ×14 · React Hook Form ×12 · Formik ×2 · TanStack Form ×1 · Valibot ×1 |
| networking | 7/34 (21%) | axios ×7 · nitro-fetch ×1 |
| desktop | 2/20 (10%) | Electron ×2 |
| styling | 19/34 (56%) | Tailwind ×10 · styled-components ×6 · Emotion ×3 · Tamagui ×1 |
| component-libs | 11/20 (55%) | Radix UI ×7 · Mantine ×3 · React Aria ×1 |
| animation | 23/34 (68%) | Gesture Handler ×12 · Reanimated ×12 · Worklets ×8 · Lottie ×7 · framer-motion / Motion ×7 · Skia ×3 · Motion ×3 · Moti ×2 |
| lists | 19/34 (56%) | FlashList ×8 · TanStack Virtual ×8 · TanStack Table ×6 · react-window ×5 · Legend List ×2 |
| i18n | 15/34 (44%) | i18next ×8 · react-i18next ×8 · react-intl ×4 · Lingui ×3 |
| charts | 11/34 (32%) | Recharts ×5 · visx ×3 · D3 ×3 · Victory Native ×2 · d3-force ×1 · Chart.js ×1 |
| editors | 9/34 (26%) | TipTap ×5 · ProseMirror ×2 · Lexical ×2 · BlockNote ×1 · Slate ×1 |
| svg | 14/34 (41%) | react-native-svg ×14 · vector-icons (scoped) ×4 · svg-transformer ×4 · @expo/vector-icons (deprecated SDK 56) ×2 · react-native-vector-icons (legacy) ×2 |
| maps | 2/34 (6%) | Mapbox RN ×2 · react-map-gl ×1 |
| polish | 13/14 (93%) | haptic-feedback ×6 · expo-haptics ×5 · bootsplash ×5 · expo-splash-screen ×4 · sonner-native (toasts) ×2 |
| native | 12/14 (86%) | Expo (managed native) ×12 · Nitro Modules ×7 · Expo Modules ×2 |
| media | 12/34 (35%) | QR generation (qrcode-svg) ×6 · VisionCamera ×6 · expo-camera ×5 · expo-image-picker ×3 · expo-video (playback) ×2 · react-native-webrtc ×2 · expo-av (DEPRECATED → expo-video/expo-audio) ×1 |
| storage | 12/34 (35%) | AsyncStorage ×11 · Keychain ×8 · MMKV ×5 · WatermelonDB ×2 · expo-secure-store (secrets) ×1 |
| keyboard | 9/14 (64%) | keyboard-controller ×9 |
| build | 28/34 (82%) | Metro ×10 · esbuild ×10 · Vite ×9 · webpack ×7 · Rspack ×4 |
| testing | 31/34 (91%) | Jest ×22 · React Testing Library ×14 · RN Testing Library ×11 · Storybook ×11 · MSW ×9 · Playwright ×8 · Vitest ×6 · Detox ×3 |
| dx | 25/34 (74%) | ESLint ×18 · Prettier ×14 · husky (git hooks) ×11 · lint-staged ×9 · Turborepo ×2 · lefthook ×1 · Biome ×1 · Nx ×1 |
| observability | 18/34 (53%) | Sentry ×16 · Bugsnag ×2 |
| ota | 3/14 (21%) | EAS Update ×3 |
| ai-ui | 3/34 (9%) | Vercel AI SDK ×3 |
| ai-devtools | 4/34 (12%) | Reactotron ×4 · agent-device ×1 |
The cohort
Curated in tools/census-cohort.json: real end-user products, actively developed, fetch-verified before inclusion — not frameworks, libraries, or demos.
Artsy (eigen) · Berty · Bluesky · BlueWallet · Comm · Expensify · Joplin Mobile · Ledger Live Mobile · Mattermost Mobile · MetaMask Mobile · Rainbow Wallet · Rocket.Chat RN · Uniswap Mobile · Zeus LN · Appsmith · Cal.com · Documenso · Dub · Excalidraw (app) · Firefox Profiler · Formbricks · Grafana · Infisical · Joplin Desktop · Mastodon (web) · Metabase · Outline · Plane · PostHog (frontend) · Sentry (frontend) · Signal Desktop · Supabase Studio · tldraw.com · Twenty CRM
Reading the numbers
- A high count for a non-default option usually means legacy weight in mature codebases — the entry's when-clauses ("already on X → keep it") are where that reconciles.
- Repeated snapshots diff against the previous baseline, so the CLI reports adoption velocity: what the cohort adopted or dropped since last time.
- This is the corpus's second empirical anchor:
signalsasks npm, the census asks production. The two disagreeing is a flag worth reading.