mobile-navigation

Implements Expo Router navigation patterns including tabs, focus mode, safe areas, and gestures.

3|1|Updated Jan 12, 2026
One-click install
npx skills add https://github.com/nghyane/VSTEP --skill mobile-navigation-nghyane
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: mobile-navigation
Source: https://github.com/nghyane/VSTEP/tree/main/apps/mobile-v2/.agents/skills/mobile-navigation
Command: npx skills add https://github.com/nghyane/VSTEP --skill mobile-navigation-nghyane

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires expo-router, @expo/vector-icons.

What problem does it solve? Building consistent navigation in a React Native app with Expo Router requires coordinating stack layouts, tab bars, route guards, safe area insets, and gesture behavior, and mistakes in any of these cause broken back behavior or UI clipped by device notches. ## Core Features & Use Cases - App Shell Structure: Defines the root layout with auth and query providers, an auth group for login/register, and a four-tab layout (Overview, Practice, Exams, Profile) with a custom tab bar. - Focus Mode & Gesture Control: Configures fullscreen exam and session screens with hidden headers and disabled swipe-back gestures to prevent accidental exits. - Route Guards & Safe Areas: Enforces auth and profile redirects using useSegments and useEffect, and applies useSafeAreaInsets padding to scroll views and fixed bottom elements. - Use Case: When adding a new exam screen to the mobile app, follow these patterns to hide the header, disable the back gesture, and pad the bottom content above the home indicator. ## Quick Start Ask the assistant to add a new screen to the Expo Router app following the mobile navigation patterns for tabs, safe area, and gesture settings.

Frequently Asked Questions about mobile-navigation

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

FAQPage Schema
How do I set up tab navigation with Expo Router?▼

Create a _layout.tsx inside a (tabs) group that returns a Tabs component from expo-router with one Tabs.Screen per route. You can pass a custom tabBar prop to render a CustomTabBar component instead of the default bar.

How to disable swipe back gesture on a screen in Expo Router?▼

Set gestureEnabled: false in the screen's options within the Stack layout, for example Stack.Screen name="exam/[id]" options={{ gestureEnabled: false }}. This is recommended for exam and onboarding screens to prevent accidental exits.

How do I implement auth route guards with Expo Router?▼

Use useSegments and useRouter inside the root _layout.tsx to detect the current route group and redirect unauthenticated users. Always perform the redirect inside useEffect, never in the render body, to avoid navigation during render errors.

Does Expo Router handle safe area insets automatically?▼

No, you must apply useSafeAreaInsets manually. Add insets.bottom plus spacing to ScrollView contentContainerStyle and to fixed bottom elements so content is not hidden behind the home indicator.

What is the difference between router.push and router.replace?▼

router.push adds a new screen onto the stack so the user can navigate back, while router.replace swaps the current screen so back navigation skips it. Use replace after login or onboarding where returning is undesirable.