hyperb1iss

mobile

0
0
# Install this skill:
npx skills add hyperb1iss/hyperskills --skill "mobile"

Install specific skill from multi-skill repository

# Description

Use this skill when building mobile applications, React Native apps, Expo projects, iOS/Android development, or cross-platform mobile features. Activates on mentions of React Native, Expo, mobile app, iOS, Android, Swift, Kotlin, Flutter, app store, push notifications, deep linking, mobile navigation, or native modules.

# SKILL.md


name: mobile
description: Use this skill when building mobile applications, React Native apps, Expo projects, iOS/Android development, or cross-platform mobile features. Activates on mentions of React Native, Expo, mobile app, iOS, Android, Swift, Kotlin, Flutter, app store, push notifications, deep linking, mobile navigation, or native modules.


Mobile Development

Build native-quality mobile apps with React Native and Expo.

Quick Reference

Expo SDK 53+ (2026 Standard)

New Architecture is DEFAULT - No opt-in required.

# Create new project
npx create-expo-app@latest my-app
cd my-app
npx expo start

Key Changes:

  • Hermes engine default (JSC deprecated)
  • Fabric renderer + Bridgeless mode
  • All expo-* packages support New Architecture
  • expo-video replaces expo-av for video
  • expo-audio replaces expo-av for audio

Project Structure

app/
β”œβ”€β”€ (tabs)/           # Tab navigation group
β”‚   β”œβ”€β”€ index.tsx     # Home tab
β”‚   β”œβ”€β”€ profile.tsx   # Profile tab
β”‚   └── _layout.tsx   # Tab layout
β”œβ”€β”€ [id].tsx          # Dynamic route
β”œβ”€β”€ _layout.tsx       # Root layout
└── +not-found.tsx    # 404 page
// app/_layout.tsx
import { Stack } from "expo-router";

export default function Layout() {
  return (
    <Stack>
      <Stack.Screen name="(tabs)" options={{ headerShown: false }} />
      <Stack.Screen name="modal" options={{ presentation: "modal" }} />
    </Stack>
  );
}

Deep Linking

// Navigate programmatically
import { router } from "expo-router";
router.push("/profile/123");
router.replace("/home");
router.back();

Native Modules (New Architecture)

Turbo Modules - Synchronous, type-safe native access:

// specs/NativeCalculator.ts
import type { TurboModule } from "react-native";
import { TurboModuleRegistry } from "react-native";

export interface Spec extends TurboModule {
  multiply(a: number, b: number): number;
}

export default TurboModuleRegistry.getEnforcing<Spec>("Calculator");

Styling

NativeWind (Tailwind for RN)

import { View, Text } from "react-native";

export function Card() {
  return (
    <View className="bg-white rounded-xl p-4 shadow-lg">
      <Text className="text-lg font-bold text-gray-900">Title</Text>
    </View>
  );
}

State Management

Same as web - TanStack Query for server state, Zustand for client:

import { useQuery } from "@tanstack/react-query";

function ProfileScreen() {
  const { data: user } = useQuery({
    queryKey: ["user"],
    queryFn: fetchUser,
  });
  return <UserProfile user={user} />;
}

OTA Updates

// app.config.js
export default {
  expo: {
    updates: {
      url: "https://u.expo.dev/your-project-id",
      fallbackToCacheTimeout: 0,
    },
    runtimeVersion: {
      policy: "appVersion",
    },
  },
};

Push Notifications

import * as Notifications from "expo-notifications";

// Request permissions
const { status } = await Notifications.requestPermissionsAsync();

// Get push token
const token = await Notifications.getExpoPushTokenAsync({
  projectId: "your-project-id",
});

// Schedule local notification
await Notifications.scheduleNotificationAsync({
  content: { title: "Reminder", body: "Check the app!" },
  trigger: { seconds: 60 },
});

Performance Tips

  1. Use FlashList over FlatList for long lists
  2. Avoid inline styles - Use StyleSheet.create or NativeWind
  3. Optimize images - Use expo-image with caching
  4. Profile with Flipper or React DevTools

Build & Deploy

# Development build
npx expo run:ios
npx expo run:android

# Production build (EAS)
eas build --platform all --profile production

# Submit to stores
eas submit --platform ios
eas submit --platform android

Agents

  • mobile-app-builder - Full mobile development expertise

Deep Dives

Examples

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.