Skip to content
Back to skills

Mobile React Native

ASecurity

Use when building, migrating, or reviewing a React Native (or Expo) mobile app — especially enterprise apps on Azure. Triggers on React Native, Expo, EAS, New Architecture, Fabric, TurboModules, JSI, Codegen, Hermes, Metro, FlashList, Reanimated, React Navigation / Expo Router, TanStack/React Query, Zustand, Redux Toolkit, Jotai, Detox vs Maestro E2E testing, CodePush / EAS Update OTA, react-native-msal / Entra ID auth, and Sentry/App Insights crash & observability. Also triggers on App Cente...

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentsjavascripttypescriptjavac++reactazuretestinggitapibackend

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add the-vibey-project/vibey --skill mobile-react-native --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mobile React Native?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mobile React Native
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/the-vibey-project-mobile-react-native/badge)](https://www.skillsdirectory.com/skills/the-vibey-project-mobile-react-native)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mobile-react-native
description: Use when building, migrating, or reviewing a React Native (or Expo) mobile app — especially enterprise apps on Azure. Triggers on React Native, Expo, EAS, New Architecture, Fabric, TurboModules, JSI, Codegen, Hermes, Metro, FlashList, Reanimated, React Navigation / Expo Router, TanStack/React Query, Zustand, Redux Toolkit, Jotai, Detox vs Maestro E2E testing, CodePush / EAS Update OTA, react-native-msal / Entra ID auth, and Sentry/App Insights crash & observability. Also triggers on App Center retirement and re-platforming RN CI/CD.
---

# React Native (Primary Enterprise Mobile Platform)

Reference state: mid-2026. Fast-moving version/EOL claims (RN 0.82, Expo SDK 55) should be
reverified at implementation time.

## Adopt the New Architecture now — the legacy Bridge is end-of-life

The New Architecture replaces the asynchronous, JSON-serializing Bridge with four pillars:

- **JSI** — synchronous C++ JS↔native interface (no serialization round-trip).
- **TurboModules** — lazily loaded native modules.
- **Fabric** — the new concurrent renderer.
- **Codegen** — generates type-safe native interfaces from JS specs.

Timeline:
- **RN 0.76 (Oct 23, 2024)** made the New Architecture the **default**; shipped React Native
  DevTools (zero-config, replaces Flipper), a **~15× faster** Metro resolver and ~4× faster
  warm builds, and New-Architecture-only style props `boxShadow` and `filter`. Meta coordinated
  compatibility "with over 850 library maintainers."
- **RN 0.80 (June 12, 2025)** brought React 19.1, **froze** the legacy architecture, and
  deprecated JavaScriptCore in favor of **Hermes** (Hermes is required).
- **RN 0.82** drops the legacy architecture entirely.
- **Expo SDK 53+** defaults to the New Architecture; **SDK 55 (RN 0.83) cannot disable it**.

Migration reality: audit **every third-party native module** for New Architecture
compatibility. Run `npx expo-doctor` to validate against the React Native Directory. Reported
gains (faster cold start, lower memory) are directional vendor/community figures, not controlled
Meta benchmarks.

## Project structure & state management

- **Structure:** feature-first / domain-driven modularization.
- **Split server state from client state:**
  - **Server state** → TanStack Query / React Query v5 (caching, background refetch,
    `useInfiniteQuery` for pagination).
  - **Client state** → **Zustand** (lightweight global state, selective subscriptions);
    **Redux Toolkit + RTK Query** for large apps needing middleware/devtools/time-travel and
    offline-first optimistic-write pipelines; **Jotai** for atomic/scoped state.
- **Type safety:** TypeScript **strict mode** + **Zod** for runtime schema validation at API
  boundaries.

## Navigation

- **React Navigation v7** (stack, native-stack, bottom-tabs, drawer) with typed routes,
  deep-linking config, and conditional navigators keyed on auth state for auth flows.
- **Expo Router** (file-based; v5 on SDK 53, v7 on SDK 55) — higher-level alternative with
  guarded route groups and prefetching.

## Performance

- Replace `FlatList` with Shopify's **FlashList** for large lists.
- `useMemo` / `useCallback` / `React.memo` to control re-renders.
- **Reanimated 3** (UI-thread animations) + **Gesture Handler 2** for 60fps interactions.

## Testing

- **Unit/component (~70% of pyramid):** Jest + React Native Testing Library.
- **E2E:** **Maestro** (YAML, black-box via the accessibility layer, no native build changes,
  sub-1% flakiness) is now generally preferred over **Detox** (gray-box, synchronizes with the
  JS thread, sub-2% flakiness, deeper RN integration but heavy native setup). Jupiter's fintech
  case study found Detox succeeded "only 2 out of 10 times on physical devices" and switched to
  Maestro, slashing MPIN entry from 18s to under 1s via `runScript`.

## Expo / EAS

- **EAS Build** (cloud iOS/Android builds), **EAS Submit** (store submission), **EAS Update**
  (OTA; Hermes-bytecode diffing makes updates substantially smaller in SDK 55).
- **Continuous Native Generation** (`prebuild`) gives managed-to-bare flexibility.

## Azure integration (auth)

- **`react-native-msal`** wraps MSAL for iOS/Android; supports Entra ID and Azure AD B2C /
  External ID.
- iOS config: `CFBundleURLSchemes` = `msauth.$(PRODUCT_BUNDLE_IDENTIFIER)`;
  `LSApplicationQueriesSchemes` = `msauthv2`, `msauthv3`. MSAL uses `ASWebAuthenticationSession`.
- Android config: `BrowserTabActivity` intent filter.
- Use **OAuth 2.0 Authorization Code + PKCE** via the system browser (AppAuth pattern) —
  implicit flow is prohibited; refresh tokens must rotate. **Validate RS256 JWTs server-side**
  against the tenant JWKS endpoint. (See `mobile-security` for full auth/MFA detail.)

## Crash / observability

- **Sentry React Native SDK** (App Start, slow/frozen frames, Hermes profiling, session replay)
  is the leading App Center crash replacement; Firebase Crashlytics and Bugsnag are alternatives.
- Sentry propagates **W3C Trace Context** for end-to-end traces to the backend.
- **OpenTelemetry → Azure Monitor Application Insights** via `@azure/monitor-opentelemetry-exporter`.
  Caveat: **OTel auto-instrumentation does NOT work on Hermes/JSC** — create spans manually and
  correlate to backend traces via W3C Trace Context.

## Re-platform off App Center (retired March 31, 2025)

Visual Studio App Center was retired except for Analytics & Diagnostics (extended runway,
~June 2026 → end of March 2027 — confirm the live date). Replace its pillars:

| App Center function | Replacement |
|---|---|
| CI/CD builds | Azure DevOps Pipelines or GitHub Actions + Fastlane (certs in Azure Key Vault) |
| OTA | CodePush (standalone) or EAS Update with mandatory-update enforcement |
| Crash/perf | Sentry (or Crashlytics) |
| Analytics | Azure Monitor |

## Cross-cutting

a11y via `accessibilityLabel`/`accessibilityRole`/screen-reader props; Universal Links (iOS) /
App Links (Android) via AASA / Digital Asset Links; **Turborepo or Nx** for monorepos; i18n via
**i18next + react-native-localize**. Note: Microsoft does **not** officially support the Intune
App SDK on React Native (see `mobile-azure-deployment`).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…