If you’re using Expo Router for file-based navigation, follow the Expo Router Setup guide instead.
Installation
Install Dependencies
Storybook’s default UI depends on
react-native-reanimated and react-native-worklets. If they’re not already installed:Expo handles the babel plugin configuration automatically.
Configure Metro
Generate a metro config file if you don’t have one:Wrap your config with
withStorybook, using EXPO_PUBLIC_STORYBOOK_ENABLED to control inclusion:metro.config.js
Chain with other wrappers if needed:
withStorybook(withNativeWind(config), { ... })Create Entrypoint
Conditionally render Storybook based on the environment variable. Since
withStorybook replaces Storybook imports with empty modules when disabled, you can safely import Storybook at the top level:App.tsx
Next Steps
Writing Stories
Learn how to write your first story
Metro Configuration
Explore advanced Metro config options