Skip to content

frzkn/react-native-spoiler-view

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-spoiler-view

Telegram-style spoiler effect for React Native. Hide sensitive content behind animated particles that burst away on tap.

Demo 1 Demo 2

Features

  • Tap to reveal with particle burst from touch point
  • Smooth 60fps Skia-powered animations
  • Fully customizable (colors, particle count, speed)
  • Works on iOS and Android
  • Controlled and uncontrolled modes

Installation

npm install react-native-spoiler-view
# or
yarn add react-native-spoiler-view

Peer Dependencies

This library requires these peer dependencies:

npm install @shopify/react-native-skia react-native-reanimated react-native-gesture-handler

Follow the installation guides for each:

Usage

Basic (Uncontrolled)

Tap to reveal, tap again to hide:

import { SpoilerView } from 'react-native-spoiler-view';

<SpoilerView>
  <Text>This is a secret message!</Text>
</SpoilerView>

Controlled Mode

Control reveal state externally:

const [revealed, setRevealed] = useState(false);

<SpoilerView
  revealed={revealed}
  onReveal={() => setRevealed(true)}
>
  <Text>Hidden until revealed</Text>
</SpoilerView>

<Button title="Reveal" onPress={() => setRevealed(true)} />

Custom Styling

<SpoilerView
  config={{
    particleCount: 300,
    particleColor: 'rgba(255, 100, 100, 1)',
    particleSizeRange: [0.5, 1.5],
    revealDuration: 400,
    burstSpeed: 200,
  }}
>
  <Image source={secretImage} />
</SpoilerView>

Props

Prop Type Default Description
children ReactNode required Content to hide
revealed boolean undefined Controlled reveal state
enabled boolean true Enable tap gesture
onReveal () => void - Called when revealed
onHide () => void - Called when hidden
config Partial<SpoilerConfig> - Customize appearance
style ViewStyle - Container style

Config Options

interface SpoilerConfig {
  particleCount: number;      // Number of particles (default: 200)
  particleDensity?: number;   // Particles per px² (overrides count)
  particleSizeRange: [number, number]; // [min, max] radius (default: [0.4, 0.9])
  particleColor: string;      // Particle color (default: 'rgba(80, 80, 80, 1)')
  overlayColor: string;       // Background overlay (default: 'transparent')
  revealDuration: number;     // Animation duration in ms (default: 600)
  burstSpeed: number;         // Particle burst speed (default: 150)
}

How It Works

License

MIT

About

✨ Telegram-style spoiler effect for React Native with particle burst animations

Resources

License

Stars

Watchers

Forks

Packages

No packages published