expo

Guides building Expo mobile applications with React Native, Expo Router, and native device features.

Updated Apr 20, 2026
One-click install
npx skills add https://github.com/AmirEmad11/instabot --skill expo-amiremad11
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: expo
Source: https://github.com/AmirEmad11/instabot/tree/main/.local/skills/expo
Command: npx skills add https://github.com/AmirEmad11/instabot --skill expo-amiremad11

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Building mobile apps with Expo involves many platform-specific pitfalls—crashing libraries, incorrect safe area handling, keyboard issues, and web incompatibility—that slow down development and produce broken apps. ## Core Features & Use Cases - Architecture & Routing Guidance: Enforces Expo Router file-based routing, React Query for server state, React context patterns, and TypeScript best practices. - React Native Pitfall Prevention: Covers UUID generation, safe area insets, keyboard handling, chat FlatList patterns, font loading, and library version pinning (e.g., react-native-maps 1.18.0). - Device Features & Permissions: Provides permission request flows for camera, location, notifications, contacts, and file uploads using real device capabilities. - Use Case: When asked to build a habit tracker mobile app, follow the first_build reference to generate the icon, plan screens, write all files in one batch, and produce a polished Expo Go compatible app. ## Quick Start Use the expo skill to build a mobile app with Expo Router, native device features, and a polished mobile-native UI.

Frequently Asked Questions about expo

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a mobile app with Expo Router?

Expo Router uses file-based routing where every file in the app/ directory becomes a route. Use _layout.tsx files for shared layouts, (group) directories for layout groups, and [param].tsx for dynamic routes with useLocalSearchParams().

How do I handle keyboard avoiding in React Native forms?

Use react-native-keyboard-controller instead of the built-in KeyboardAvoidingView. For forms use KeyboardAwareScrollViewCompat with bottomOffset, and for chat UIs use KeyboardAvoidingView with behavior="padding" plus an inverted FlatList.

Does react-native-maps work with Expo Go?

Yes, but only version 1.18.0 is compatible with Expo Go—pin it exactly in package.json. Do not add react-native-maps to the plugins array in app.json, as that will crash the app.

Why does the uuid package crash on iOS and Android?

The uuid package requires crypto.getRandomValues(), which is unavailable in React Native. Use Date.now() combined with Math.random(), or expo-crypto's Crypto.randomUUID() pinned to version 15.0.x.

Can I publish an Expo app to Google Play from Replit?

No, Android publishing is not currently supported on Replit. Replit's Expo Launch flow handles production builds and App Store submission for iOS only, triggered via the Publish button.

How do I request camera and location permissions in Expo?

Use permission hooks like Camera.useCameraPermissions() or Location.useForegroundPermissions(). Show a request button when not granted, and if denied with canAskAgain false, show an Open Settings button guarded by a platform check.