suiss/uim · Block

Onboarding

A paged onboarding flow with illustrations, a page indicator and Continue and Skip buttons.

Onboarding is an open-source mobile screen from suiss/uim for React Native and Expo, with SwiftUI and Jetpack Compose versions built from the same design tokens. The @esuiss/uim CLI copies its source into your project, so you own the code.

iOS
Onboarding on iOS in light mode

A Carousel of pages, each with an icon illustration, a title and a description. A BottomBar holds a PageIndicator you can tap to jump to a page, a Continue Button that moves to the next page and becomes Get started on the last, and a Skip button.

Installation

$ pnpm dlx @esuiss/uim@latest add onboarding

The CLI also adds what it builds on: Bottom Bar, Button, Carousel, Icon, Page Indicator, Screen, Text.

Manual

  1. Install the dependencies:
npx expo install cn phosphor-react-native react-native-svg
  1. Add the pieces it builds on: Bottom Bar, Button, Carousel, Icon, Page Indicator, Screen, Text.

  2. Copy the source into components/blocks/onboarding.tsx:

uniwind/components/blocks/onboarding.tsx
import { cn } from "cn"
import {
  BellRingingIcon,
  CloudIcon,
  type Icon as PhosphorIcon,
  ShieldCheckIcon,
  SparkleIcon,
} from "phosphor-react-native"
import type * as React from "react"
import { View } from "react-native"
import { BottomBar, BottomBarContent } from "@/components/ui/bottom-bar"
import { Button } from "@/components/ui/button"
import {
  Carousel,
  CarouselContent,
  CarouselItem,
  1. Update the import paths to match your project.

Usage

import { Onboarding } from "@/components/blocks/onboarding"
<Onboarding />

Pass your own pages (each with a title, description and optional illustration), or edit DEFAULT_PAGES. onDone is called from Get started and Skip.