Introduction
Welcome to Rocapine Onboarding Studio SDK - A CMS-driven onboarding system for React Native mobile apps.
Build beautiful, customizable onboarding flows that update instantly without app releases.
🏗️ Architecture Philosophy
Onboarding Studio is headless-first, meaning the core SDK provides all the data fetching, caching, and state management you need, while giving you complete control over the UI.
Headless Core
The @rocapine/react-native-onboarding package provides:
- Data fetching from your CMS
- Caching and offline support
- Progress tracking
- Type-safe hooks and utilities
- No UI components included
Optional Pre-built Components
The @rocapine/react-native-onboarding-ui package offers:
- Ready-to-use screen components for all page types
- Pre-styled components that work out of the box
- Fully customizable through theming and component overrides
- Perfect for rapid prototyping or when you want a quick start
Choose Your Approach
Option 1: Use Pre-built Components (Recommended for most users)
import { OnboardingPage } from "@rocapine/react-native-onboarding-ui";
// Use the pre-built component
<OnboardingPage step={step} onContinue={handleContinue} />
Option 2: Build Your Own UI (Headless approach)
import { useOnboardingStep } from "@rocapine/react-native-onboarding";
// Use the hooks to build custom UI
const { step } = useOnboardingStep({ stepNumber: 1 });
// Render your own custom UI based on step.type and step.payload
<YourCustomQuestionScreen step={step} />
You can even mix both approaches - use pre-built components for some screens and custom renderers for others!
✨ Features
- 🎨 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
📚 Documentation Sections
Getting Started
- Getting Started - Installation, setup, and your first onboarding flow
Core Concepts
- Core Concepts - How the SDK works, caching, progress tracking
- API Reference - Complete API documentation
- Page Types - Available page types and their features
Customization
Learn how to customize your onboarding experience with three levels of flexibility:
- 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
Support
- Troubleshooting - Common issues and solutions
🚀 Quick Example
import {
OnboardingProvider,
OnboardingStudioClient,
useOnboardingQuestions,
} from "@rocapine/react-native-onboarding";
import {
OnboardingPage,
ProgressBar,
} from "@rocapine/react-native-onboarding-ui";
// Initialize client
const client = new OnboardingStudioClient("your-project-id", {
appVersion: "1.0.0",
});
// Setup provider
<OnboardingProvider
client={client}
locale="en"
customAudienceParams={{ onboardingId: "your-onboarding-id" }}
>
<ProgressBar />
<YourApp />
</OnboardingProvider>
// Use in your screens
export default function OnboardingScreen() {
const { step, isLastStep } = useOnboardingQuestions({ stepNumber: 1 });
return <OnboardingPage step={step} onContinue={handleContinue} />;
}
🤝 Contributing
Want to contribute to the SDK? Check out our Contributing Guide.
📧 Support
- Email: support@rocapine.com
- Issues: GitHub Issues
- Documentation: Rocapine Docs
📄 License
MIT