Expo Kanban
v1.0.8MIT LicenseTypeScript

React Native Expo Kanban

Drag-and-drop kanban boards for React Native.

A controlled kanban board component for Expo apps. Bring your own cards, keep your own state, and let Reanimated handle the motion.

$ npm install react-native-expo-kanban

Overview

Create kanban screens for Android, iOS, and Expo

The board renders one column at a time on phones and pages horizontally as cards are dragged toward the edge. Cards lift on long-press, follow your finger, and drop into the column under the viewport.

  • Controlled columns — you own the data and the drop logic
  • Custom cards and headers with render props
  • Drag preview, drop hover states, and edge pagination
  • TypeScript generics for items and column headers
Read the usage guide
Kanban board with cards being dragged between columns
Long-press a card to lift it, then drag it to another column.

10

GitHub stars

2

Forks

1.1k

Total npm downloads

MIT

License

Features

Everything you need for a kanban screen

The component handles gestures, drag previews, and pagination. Your app keeps ownership of data, rendering, and business rules.

Drag and drop

Long-press a card, drag across columns, and drop. Edge pagination auto-scrolls the board while you move.

Custom rendering

renderItem and renderHeader are fully controlled. Your cards, your typography, your design system.

Built on Reanimated

Gestures and drop animations run on the UI thread, keeping interactions fluid even with dense columns.

Made for Expo

Works with Expo Go and development builds. The package has no native modules of its own.

Controlled data model

Columns are a plain array. Move items in onDragEnd and the board re-renders from your state.

TypeScript support

Generic props keep item and header shapes type-safe across renderItem, renderHeader, and onDragEnd.

Demo

Drag, page, and drop between columns

Dragging near either edge pages the board to the next column. Releasing a card over a new column fires onDragEnd, while a drop in the same column springs the preview back into place.

Every interaction runs through Reanimated's shared values, so the drag preview stays smooth on both platforms.

Explore examples
Full interaction demo of the kanban board
Column pagination, drag preview, and drop state.

Quick start

From install to dragging in four steps

  1. 1Install the package and its peer dependencies.
  2. 2Describe columns as an array of headers and items.
  3. 3Render your cards and column headers.
  4. 4Move the item in onDragEnd to update your state.
Installation guide
BoardScreen.tsx
import React, { useState } from 'react';
import ReactNativeKanbanBoard from 'react-native-expo-kanban';

export default function BoardScreen() {
  const [columns, setColumns] = useState(initialColumns);

  return (
    <ReactNativeKanbanBoard
      columnData={columns}
      renderItem={(item, isDragged) => (
        <LeadCard item={item} isDragged={isDragged} />
      )}
      renderHeader={(header) => <ColumnHeader {...header} />}
      onDragEnd={({ fromColumnIndex, toColumnIndex, itemId }) => {
        setColumns((prev) =>
          moveCard(prev, fromColumnIndex, toColumnIndex, itemId)
        );
      }}
      columnWidth={320}
      gapBetweenColumns={12}
    />
  );
}

Ready to add a kanban board?

Install the package, render your cards, and handle one callback. The board takes care of gestures and column pagination.