Handles Expo Router's file-based navigation patterns, covering Stack configuration, native tabs, and screen-level options. You'll want this when setting up navigation in React Native apps using Expo's routing system. The skill emphasizes minimal configuration and auto-discovery, which means it'll steer you away from explicitly listing every screen and toward letting the file structure do the work. Includes specifics on dynamic headers with useLayoutEffect and platform-native tabs with SF Symbols. The patterns here are opinionated about keeping navigation configuration close to each screen rather than centralizing everything, which matches how Expo Router actually wants you to work.

skills.sh installs
134
last updated
Aug 21, 2026

Install

$ npx -y skills add jchaselubitz/drill-app --skill expo-router --agent claude-code

Installs into .claude/skills of the current project.

Files

Expo Router Patterns

Stack Navigator Configuration

Root Layout Setup

Use screenOptions on the Stack component to set defaults for all screens. Do NOT explicitly list every screen - routes are auto-discovered from the file structure.

// app/_layout.tsx
import { Stack } from 'expo-router';

export default function RootLayout() {
  return (
    <Stack screenOptions={{ headerShown: false }} />
  );
}

Per-Screen Configuration

Individual screens configure their own options using <Stack.Screen> within the component file:

// app/lesson/[id].tsx
import { Stack } from 'expo-router';

export default function LessonScreen() {
  return (
    <View>
      <Stack.Screen
        options={{
          title: 'Lesson',
          headerShown: true,
          headerBackTitle: 'Back',
        }}
      />
      {/* Screen content */}
    </View>
  );
}

Dynamic Header Configuration

Use useNavigation with setOptions for dynamic header content like buttons:

import { useNavigation } from 'expo-router';
import { useLayoutEffect } from 'react';

export default function Screen() {
  const navigation = useNavigation();

Sponsors

Details

Repository
github.com/jchaselubitz/drill-app
Categories
Mobile Development, CLI & Terminal
First seen
Jun 3, 2026
1membranedev avatarmobile-text-alertsmembranedev/application-skillsMobile Text Alerts integration. Manage Accounts. Use when the user wants to interact with Mobile Text Alerts data.130skills.sh installs
2absolutelyskilled avatarmobile-testingabsolutelyskilled/absolutelyskilledmobile testing125skills.sh installs
3charleswiltgen avataraxiom-xcode-mcp-refcharleswiltgen/axiomReference — all 20 Xcode MCP tools with parameters, return schemas, and examples119skills.sh installs
4sickn33 avatarandroid_ui_verificationsickn33/antigravity-awesome-skillsandroid ui verification119skills.sh installs
5dhruvanbhalara avatarflutter-localizationdhruvanbhalara/skillsImplement internationalization using Flutter's built-in l10n with ARB files and ICU message syntax. Use when adding multi-language support, managing translation115skills.sh installs
6charleswiltgen avataraxiom-xcode-mcp-setupcharleswiltgen/axiomXcode MCP setup — enable mcpbridge, per-client config, permission handling, multi-Xcode targeting, troubleshooting113skills.sh installs