Skip to content

KonstantinKai/reelkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

200 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReelKit — Headless virtualized slider engine

Single-item slider for TikTok/Instagram Reels-style experiences.
Virtualized · Touch-first · Zero dependencies · Framework-agnostic

npm MIT License TypeScript Bundle size
Star on GitHub

0.x.x — ReelKit is under active development. APIs may change between minor versions until 1.0.

Features

  • Virtualized — only 3 slides in DOM, handles 10,000+ items
  • Touch first — native swipe with momentum and snap
  • Zero dependencies — ~6.0 kB gzip core
  • Keyboard & wheel — arrow keys, scroll, and swipe navigation built in
  • Loop mode — infinite circular scrolling
  • SSR ready — works with Next.js, Remix, and any SSR setup
  • Auto-size — omit size prop, uses CSS + ResizeObserver
  • TypeScript — strict types, no @types needed

Packages

Package Description JS (gzip)
@reelkit/core Framework-agnostic slider engine 6.0 kB
@reelkit/react React components and hooks 3.9 kB
@reelkit/react-reel-player Full-screen video reel player 4.3 kB
@reelkit/react-lightbox Image & video gallery lightbox 3.1 kB
@reelkit/stories-core Framework-agnostic stories engine 1.7 kB
@reelkit/react-stories-player Instagram-style stories player 5.6 kB
@reelkit/angular Angular standalone components 13.8 kB
@reelkit/angular-reel-player Full-screen video reel player 17.3 kB
@reelkit/angular-lightbox Image & video gallery lightbox 14.0 kB

Try It

React Demo   Angular Demo   React   Angular

Quick Start

npm install @reelkit/react
import { useState } from 'react';
import { Reel, ReelIndicator } from '@reelkit/react';

function App() {
  return (
    <Reel
      className="my-reel"
      count={100}
      direction="vertical"
      itemBuilder={(i) => (
        <div style={{ width: '100%', height: '100%' }}>Slide {i + 1}</div>
      )}
    >
      <ReelIndicator />
    </Reel>
  );
}

By default, Reel measures its own size from CSS via ResizeObserver — no explicit width/height props needed. Just set the container size with CSS:

.my-reel {
  width: 100%;
  height: 100dvh;
}

Documentation

Full documentation, interactive demos, and API reference at reelkit.dev.

Development

proto use            # sync Node.js version (requires proto)
npm install          # install dependencies
npm run build        # build all packages
npm test             # run all tests
npm run check        # format + lint + typecheck
npm run fmt          # fix formatting

See CONTRIBUTING.md for the full guide.

Support

If ReelKit saved you some time, a star on GitHub would mean a lot — it's a small thing, but it really helps the project get noticed.

Star on GitHub   Support ReelKit

License

MIT

About

Single-item slider for TikTok/Instagram Reels-style experiences. Virtualized, touch-first, zero dependencies.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors