A react-native-copilot alternative

react-native-copilot and rn-tourguide are the long-standing options for React Native app tours. @wrack/react-native-tour-guide is a newer, lightweight alternative focused on the things those make you do by hand.

Comparison

Capability react-native-tour-guide react-native-copilot rn-tourguide react-native-spotlight-tour
Auto shape-matching spotlight (per-corner) Circle/rect only
Auto-scroll to off-screen targets Partial
Smart tooltip positioning + safe-area Manual Partial Partial
Runs in Expo Go (no dev build) ⚠️ ⚠️ ⚠️
Native dependencies Zero (svg peer) Some react-native-svg Some
Fabric-safe overlay (no white film) ⚠️ ⚠️
Built-in themes + createTheme() ✅ (4) Partial Partial
“Show once” persistence hook DIY DIY DIY
TypeScript
Bundle size < 50KB Larger Medium Medium

When to pick which

  • react-native-copilot — you want the most-referenced, battle-tested default and are fine tuning positions and shapes yourself.
  • rn-tourguide — you like the copilot API and want nicer SVG visuals.
  • react-native-spotlight-tour — you want a minimal, well-documented spotlight and rectangles/circles are enough.
  • react-native-tour-guide — you want the spotlight to match your real component shapes, need auto-scroll on long screens, and want it to just work in Expo Go with zero native deps.

Migrating the mental model

Both are provider + step based. Where copilot wraps components in walkthroughable/copilotStep HOCs, this library uses plain refs and a startTour(steps) call:

const { startTour } = useTourGuide();
startTour([
  { id: 'a', targetRef: aRef, title: 'Step 1', description: '...', targetStyle: styles.a },
  { id: 'b', targetRef: bRef, title: 'Step 2', description: '...', targetStyle: styles.b },
]);

FAQ

What’s the best react-native-copilot alternative for React Native tours?

react-native-copilot is the most-referenced, battle-tested default. @wrack/react-native-tour-guide is a lighter alternative that adds an automatic shape-matching spotlight, auto-scroll to off-screen targets, four built-in themes, and a show-once persistence hook — and runs in Expo Go with zero native dependencies beyond react-native-svg. Pick copilot for maximum maturity; pick this if you want those extras without hand-rolling them.

How is it different from react-native-copilot?

Where copilot wraps components in walkthroughable / copilotStep HOCs and leaves shape, positioning, and scrolling largely to you, this library uses plain refs and a startTour(steps) call, matches the spotlight to each target’s border radius automatically (including per-corner radii), and auto-scrolls so the target and its tooltip both fit on screen. It also ships under 50KB with zero native dependencies.

Do I have to rewrite my copilotStep components to migrate?

Not substantially. Both are provider + step based, so the structure carries over: you replace the walkthroughable / copilotStep HOCs with plain refs listed in a startTour(steps) call. Custom function components used as tour targets need forwardRef so the ref reaches the underlying view.

Does it run in Expo Go?

Yes. Its only required dependency is react-native-svg, which Expo ships, so there are no native modules to link and no custom development build is needed — it runs in Expo Go and in bare React Native CLI projects alike.

See also