rit3zh GitHub avatar

expo-coverflow-carousel

rit3zh

A React Native component that recreates the iPod-style Cover Flow carousel with realistic 3D perspective, live Skia shader reflections, and smooth gesture-based navigation.

Stars

28

7-day growth

No data

Forks

4

Open issues

0

License

MIT

Last updated

2026-07-08

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It brings a true 3D Cover Flow experience to React Native using real-time Skia shaders for reflections and a responsive layout engine, which is rare in the ecosystem.

Who it is for

  • React Native developers building music or media apps
  • Expo developers seeking advanced animated UI components
  • Mobile engineers wanting to implement vintage Cover Flow interactions
  • Hobbyists exploring 3D transformations and shaders in React Native

Use cases

  • Browsing album artwork in a music player
  • Showcasing product images in a 3D carousel
  • Creating a nostalgic UI for media galleries
  • Demonstrating complex gesture handling and 3D animations in Expo

Strengths

  • Genuine 3D cover rotation and stacking via Reanimated and perspective transforms
  • Live Skia shader reflections that dynamically mirror, fade, and blur each cover
  • Responsive layout that automatically adjusts card size, spacing, and tilt to screen width
  • Uses expo-image for efficient caching and smooth loading of artwork

Considerations

  • Depends on several heavy peer dependencies (Skia, Reanimated, Gesture Handler) that increase bundle size and complexity
  • Currently a demo repository rather than a publishable npm package, requiring manual setup
  • Optimized for album-shaped covers; may need adaptation for other aspect ratios or use cases

README quick start

expo-coverflow-carousel

iPod-style Cover Flow carousel for React Native.

✨ Features

  • 🎠 True Cover Flow perspective — cards rotate on the Y axis and stack in 3D space; the centered cover flattens to face you while its neighbors tilt away
  • 🪞 Live Skia reflections — each cover casts a real mirrored, gradient-faded, blurred reflection rendered by a react-native-skia runtime shader, not a static image
  • 👆 Pan to scroll, tap to select — flick through the deck with momentum, or tap any side cover to spring it to center
  • 📐 Responsive layout engine — card size, spacing, tilt, and reflection height are all derived from screen width (or an explicit size), so it looks right on any device
  • 🖼️ expo-image under the hood — memory-disk caching, transitions, and recycling keys for smooth, flicker-free covers
  • 🧠 TypeScript-first, fully typed surface

⚙️ Installation

git clone https://github.com/rit3zh/expo-coverflow-carousel
cd expo-coverflow-carousel
bun install
bun start -c

Peer dependencies (already wired up in this template):

bun add react-native-reanimated react-native-gesture-handler react-native-safe-area-context react-native-worklets @shopify/react-native-skia expo-image

🚀 Usage

Wrap your app once with GestureHandlerRootView and SafeAreaProvider, then drop a `` anywhere in the tree.

// app/_layout.tsx
import { Stack } from "expo-router";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import { SafeAreaProvider } from "react-native-safe-area-context";

export default function RootLayout() {
  return (
    
      
        
      
    
  );
}

The simplest possible carousel — a backdrop and a deck of covers:

import { Coverflow } from "@/components";
import { albums } from "@/data/albums";

export function Example() {
  return (
    
      
      
    
  );
}

Preview

https://github.com/user-attachments/assets/23ac1880-5d08-4b67-bfa5-77246213c3ab

The album shape

albums is any array matching the Album interface. Only image_url is required to render a cover — the rest powers your own now-playing UI.

interface Album {
  position: number;
  title: string;
  artists: string;
  album: string;
  image_url: string;
}

Reacting to the active cover

onIndexChange fires whenever the deck settles on a new cov

Description

🍣 iPod-style cover-flow carousel.

Related repositories

Similar projects matched by category, topics, and programming language.

TanStack
Featured
TanStack GitHub avatar

router

TanStack Router is a type-safe, data-driven React router with built-in caching, prefetching, and nested layouts, while TanStack Start extends it into a full-stack SSR framework.

Web DevelopmentFrontend Frameworks
14,861
vercel-labs
Featured
vercel-labs GitHub avatar

scriptc

scriptc compiles ordinary TypeScript into small, fast native executables without needing Node.js, V8, or any JavaScript runtime in the binary.

Developer ToolsCode Quality & Build
1,985
Jakubantalik
Featured
Jakubantalik GitHub avatar

thinking-orbs

A React component library that renders six hand-tuned animated thought orb loading indicators on a plain 2D canvas, with two purpose-tuned sizes and automatic theme detection for AI and agent UIs.

AI & Machine LearningAI Agents
1,191