Use Cursor's browser aria snapshots to audit a page for accessibility issues — missing labels, broken tab order, contrast, and ARIA misuse.
The English summary is being prepared. Showing the original description.
Build mobile apps with React Native and Expo — navigation, platform-specific code, performance, and native modules.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Build production-quality mobile apps with React Native and Expo.
Expo (recommended for most projects):
npx create-expo-app@latest my-app
cd my-app
npx expo start
Bare React Native (when you need full native control):
npx @react-native-community/cli init MyApp
Use Expo unless you need a custom native module that Expo doesn't support.
Use expo-router (file-based routing) or @react-navigation/native:
app/
├── _layout.tsx # Root layout (tabs, stack, drawer)
├── index.tsx # Home screen
├── (tabs)/
│ ├── _layout.tsx # Tab navigator
│ ├── home.tsx
│ ├── profile.tsx
│ └── settings.tsx
└── [id].tsx # Dynamic route
import { Platform } from 'react-native';
const styles = StyleSheet.create({
shadow: Platform.select({
ios: { shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.1 },
android: { elevation: 4 },
}),
});
For larger differences, use platform-specific files:
Component.ios.tsxComponent.android.tsxUse StyleSheet.create for performance (styles are sent to native once):
const styles = StyleSheet.create({
container: { flex: 1, padding: 16 },
title: { fontSize: 24, fontWeight: '700' },
});
For a Tailwind-like experience, use nativewind:
<View className="flex-1 p-4">
<Text className="text-2xl font-bold">Hello</Text>
</View>
FlatList over ScrollView for long lists:
<FlatList
data={items}
keyExtractor={(item) => item.id}
renderItem={({ item }) => <ItemRow item={item} />}
initialNumToRender={10}
maxToRenderPerBatch={5}
windowSize={5}
/>
Memoize expensive components:
const ItemRow = React.memo(({ item }: { item: Item }) => (
<View><Text>{item.name}</Text></View>
));
Avoid:
renderItemexpo-image handles this)| Need | Library |
|---|---|
| Navigation | expo-router or @react-navigation/native |
| State | zustand, jotai, or React context |
| Data fetching | @tanstack/react-query |
| Images | expo-image |
| Icons | @expo/vector-icons |
| Storage | expo-secure-store (sensitive), @react-native-async-storage/async-storage (general) |
| Animations | react-native-reanimated |
| Gestures | react-native-gesture-handler |
| Forms | react-hook-form + zod |
expo-dev-client for custom native modules with Exporeact-native-safe-area-contextKeyboardAvoidingView)expo-updates for OTA updates in productionNo reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Use Cursor's browser aria snapshots to audit a page for accessibility issues — missing labels, broken tab order, contrast, and ARIA misuse.
The English summary is being prepared. Showing the original description.
Add PostHog analytics to a web application, including event tracking, page views, feature flags, and session replay.
The English summary is being prepared. Showing the original description.
Generate OpenAPI/Swagger documentation for an API, including endpoint schemas, request/response types, and interactive docs UI.
The English summary is being prepared. Showing the original description.
Add authentication to a web application using NextAuth.js (Auth.js), including OAuth providers, session management, and protected routes.
The English summary is being prepared. Showing the original description.
Dockerize an application with a production-ready Dockerfile, docker-compose setup, and .dockerignore.
The English summary is being prepared. Showing the original description.
Set up Playwright end-to-end testing in a project, including test configuration, example tests, and CI integration.
The English summary is being prepared. Showing the original description.