A CMS-driven onboarding system for React Native mobile apps.
Build beautiful, customizable onboarding flows that update instantly without app releases.
- π¨ Pre-built Components - Ready-to-use screens (ratings, pickers, carousels, media content, and more)
- π CMS-Driven - Update onboarding flows remotely without app releases
- π± React Native - Works with Expo and bare React Native projects
- π― Type-Safe - Full TypeScript support with runtime validation
- πΎ Offline Support - Built-in caching with AsyncStorage
- π Themeable - Customizable colors, typography, and styling
- π§ Extensible - Three levels of customization from theme tokens to complete renderer overrides
npm install @rocapine/react-native-onboardingimport {
OnboardingProvider,
OnboardingStudioClient,
ProgressBar,
} from "@rocapine/react-native-onboarding";
const client = new OnboardingStudioClient("your-project-id", {
appVersion: "1.0.0",
});
export default function RootLayout() {
return (
<OnboardingProvider
client={client}
locale="en"
customAudienceParams={{ onboardingId: "your-onboarding-id" }}
>
<ProgressBar />
<YourApp />
</OnboardingProvider>
);
}import {
useOnboardingQuestions,
OnboardingPage,
} from "@rocapine/react-native-onboarding";
export default function OnboardingScreen() {
const { step, isLastStep } = useOnboardingQuestions({ stepNumber: 1 });
const handleContinue = () => {
if (isLastStep) {
router.push("/home");
} else {
router.push(`/onboarding/${stepNumber + 1}`);
}
};
return <OnboardingPage step={step} onContinue={handleContinue} />;
}That's it! π
Complete documentation for using the SDK in your app:
- Getting Started - Installation, setup, and your first onboarding flow
- Core Concepts - How the SDK works, caching, progress tracking
- API Reference - Complete API documentation
- Page Types - Available page types and their features
Learn how to customize your onboarding experience:
- Customization Overview - Choose your customization level
- Level 1: Theming - Colors, typography, and semantic styles
- Level 2: Custom Components - Replace specific UI components
- Level 3: Custom Renderers - Complete screen control
- Troubleshooting - Common issues and solutions
Want to contribute to the SDK?
- Contributing Guide - Development setup, architecture, and contribution guidelines
Customize colors, typography, and semantic styles:
<OnboardingProvider
theme={{
colors: { primary: "#FF5733" },
typography: { fontFamily: { title: "CustomFont-Bold" } },
}}
/>Replace specific UI components:
<OnboardingProvider
customComponents={{
QuestionAnswerButton: CustomButton,
QuestionAnswersList: AnimatedList,
}}
/>Complete control over entire screens:
export default function OnboardingScreen() {
const { step } = useOnboardingQuestions({ stepNumber });
if (step.id === "custom-screen") {
return <CustomRenderer step={step} onContinue={handleContinue} />;
}
return <OnboardingPage step={step} onContinue={handleContinue} />;
}- Question - Interactive questions with single or multiple choice answers
- MediaContent - Display images or videos with title and description
- Carousel - Multi-slide horizontal pagination with page indicators
- Picker - Type-specific input pickers for structured data
- Loader - Sequential progress animation with optional carousel
- Ratings - App store rating prompts with social proof
- Commitment - User commitment and agreement screens
Learn more about page types β
We're actively working on the following features:
- π¨ More Screen Templates - Additional pre-built screen types for common onboarding patterns
- π Analytics Integration - Built-in analytics to track onboarding completion and user engagement
- π Asset Storage Management - Improved handling of images, videos, and animations with optimized loading and caching
- β
Onboarding Completion Status - Better handling of
userHasCompletedonboarding status with persistence and state management
Install these only if you're using the specific screen types:
| Screen Type | Package | Install Command |
|---|---|---|
| Picker | @react-native-picker/picker |
npx expo install @react-native-picker/picker |
| Ratings | expo-store-review |
npx expo install expo-store-review |
| Commitment (signature) | @shopify/react-native-skia |
npx expo install @shopify/react-native-skia |
Check out the example/ directory for a complete working example:
cd example/
npm install
npm startWe welcome contributions! Please see our Contributing Guide for details.
- Email: support@rocapine.com
- Issues: GitHub Issues
- Documentation: Rocapine Docs
MIT Β© Rocapine