Skip to content
Native Animation
Chrome Orb Assistant animation preview

This preview uses fictional demo content. See the props below for the customization options available in this component.

npx nativeanimation add chrome-orb-assistant
GlassSkia

Chrome Orb Assistant

An assistant onboarding and voice flow with a shared hero transition and configurable artwork, history, copy, and colors.

$9 for this animation

Add to your project

Copy the component and its assets into your app with the Native Animation CLI, or paste the agent prompt into Claude Code, Codex or Cursor once the MCP server is connected.

About this animation

An assistant onboarding and voice flow with a shared hero transition and configurable artwork, history, copy, and colors.

Why this one

The chrome bust carries the welcome screen into the premium card, while the orb gives the listening state a distinct focal point. The screens remain connected through one interruptible progress value.

How it works

  1. Draw the reflective sphere and its depth-occluded band in a compact Skia shader.
  2. Derive band speed, width, pulse, and rings from the host-supplied level.
  3. Keep the listening clock on shared values, pause it offscreen, and freeze decorative motion when reduced motion is enabled.

Orb rendering

The dark glass sphere uses a compact Skia shader with violet and teal reflections, Fresnel edges, an upper-left specular highlight, and internal stars. A twisted gold band rotates every six seconds at rest, with depth occlusion against the sphere. level increases rotation speed and band width, pulses the sphere up to 1.06×, and emits violet rings. Drive level with your own microphone adapter; this component does not request microphone permission. The local chrome hero floats, responds to touch with spring parallax, and receives a highlight clipped to its alpha silhouette on both welcome and Premium screens.

Reduced motion freezes the orb, rings, float, sweep, and parallax. The orb Canvas mounts on the first listening visit and pauses its clock offscreen while preserving the exit fade; animation runs on shared values without React updates per frame.

Install

Copy this folder into your project, excluding demo/.

npx expo install expo-blur expo-linear-gradient @expo/vector-icons @shopify/react-native-skia react-native-reanimated react-native-worklets

Icons: Feather from @expo/vector-icons (Lucide-compatible family).

Usage

import ChromeOrbAssistant from './chrome-orb-assistant';

<ChromeOrbAssistant
  heroImage={require('./assistant.webp')}
  onUpgrade={() => openUpgrade()}
/>

The ref exposes goTo('onboarding' | 'home' | 'listening'). Supply the chrome hero locally. Omit orbImage for the animated Skia orb, or supply local artwork to override it. level accepts a Reanimated shared value from 0 to 1.

Props

PropTypeDefaultPurpose
assistantNamestringVela AIHeader name.
heroImageImageSourcePropTypeRequiredChrome hero artwork.
orbImageDataSourceParamAnimated Skia orbOptional local artwork override.
onboardingobjectBuilt-in copyWelcome title, subtitle, CTA, and sign-in line.
premiumobjectBuilt-in copyPlan title, body, and CTA.
actionsobjectBuilt-in labelsChat and talk action labels.
history{ id, text }[]Three sample rowsRecent conversation list.
listeningobjectBuilt-in copyListening title and hint.
colorsobjectViolet themeBackground, accent, and text colors.
levelSharedValue<number>undefinedVoice level from 0 to 1.
onStart, onUpgrade, onClose() => voidundefinedPrimary flow callbacks.
onHistoryPress(id: string) => voidundefinedSelected history row callback.
style, testIDRN propsundefinedRoot customization and testing.

Compatibility

Targets Expo SDK 58, React Native 0.88.0, Reanimated 4.7.1, and Skia 2.14.0. Supports iOS, Android, and web. Expo Go includes these modules. Local image assets are supplied by the consumer.

Accessibility

All controls expose button roles and descriptive labels. Reduced motion uses the same screen transitions with a short timing fade and disables the animated listening dots.