@hello-pangea/dnd

Beautiful, accessible drag and drop for lists in React, with keyboard and screen reader support built in.

Library
npm
v18.0.1
4,019stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
61/100Good
Development Activity52
Maintenance32
Community60
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
87/100Excellent
Architecture88
Code Quality92
Innovation78
Learning Curve90

@hello-pangea/dnd is a community-maintained continuation of react-beautiful-dnd, providing a small set of components — DragDropContext, Droppable, and Draggable — for building natural-feeling drag and drop interactions with vertical and horizontal lists in React. Rather than exposing low-level drag primitives like react-dnd, it targets the specific, common case of reordering and moving items between lists, and does the accessibility work (keyboard operation, screen reader announcements, focus retention) that most drag and drop libraries leave to the consumer.

Under the hood it runs a Redux-backed state machine that reconciles pointer, touch, and keyboard input through a pluggable sensor API, measures dimensions via css-box-model, and recalculates displacement and auto-scroll behavior on every frame without inserting extra wrapper DOM nodes. The result is a library that plugs into existing markup (including semantic tables) and keeps working with server-side rendering, virtualized lists of thousands of items, and multi-drag selections.

What You Get

  • DragDropContext, Droppable, and Draggable components that wrap existing markup without adding extra DOM nodes
  • Built-in mouse, touch, and keyboard sensors, plus a sensor API for scripted or custom input sources
  • Automatic screen reader announcements and full keyboard operability for drag interactions out of the box
  • Virtual list support capable of handling ten thousand items at 60fps
  • Auto-scrolling of both the dragged container and the window during a drag, including with the keyboard
  • TypeScript type definitions for every public API, published alongside the compiled bundle

Common Use Cases

  • Reordering rows in a task list, playlist, or todo app
  • Kanban-style boards where cards move between columns
  • Reordering rows in a semantic HTML table
  • Drag-to-reorder form fields or configurable dashboard widgets

Under The Hood

Architecture The library is split into a pure state layer and a DOM-facing view layer. State transitions run through a single reducer (src/state/reducer.ts) driven by typed actions (src/state/action-creators.ts) inside a small Redux store (src/state/create-store.ts); pure helpers like get-displaced-by, get-displacement-groups, and patch-dimension-map recompute which draggables move as a result of a drag without touching the DOM. The view layer’s marshals (use-draggable-publisher, use-droppable-publisher, dimension-marshal) measure real elements via css-box-model and publish those dimensions into the store, while DragDropContextApp wires context providers down to Droppable/Draggable consumers. Input itself is abstracted behind a sensor API (use-sensor-marshal, mouse/touch/keyboard sensors) that all funnel into the same reducer actions, so a mouse drag, a touch drag, and a scripted drag are indistinguishable to the state machine. Because nearly every consumer subscribes to derived state from this one reducer, changes to the core dimension/displacement model ripple through the whole view layer.

Tech Stack Written in TypeScript (99% of the codebase) with React as a peer dependency supporting both React 18 and 19 test matrices, using Redux 5 and react-redux 9 for internal state, css-box-model for measuring boxes, and raf-schd for scheduling animation-frame work. The published package is built with Rollup into CommonJS and ESM bundles plus .d.ts types, transformed through Babel for both the build and the Jest test suite, and developed against Storybook 8 for interactive examples with Chromatic wired in for visual regression testing.

Code Quality Testing is extensive and layered: Jest-driven unit tests cover state and view logic (test/unit/state, test/unit/view, test/unit/integration), dedicated typing tests exercise the public TypeScript API (test/typings), a documentation-consistency suite checks the docs against the code (test/unit/docs), and Cypress drives real browser end-to-end tests. The project enforces strict typing, ESLint with typescript-eslint, Stylelint, and Prettier, all gated by Husky pre-commit hooks and commitlint-enforced Conventional Commits, with CircleCI running the full validate-and-test matrix (including both supported React versions) on every change.

What Makes It Unique Most React drag and drop libraries expose low-level primitives and leave accessibility to the consumer; this one narrows its scope to lists specifically and treats keyboard operability and screen reader announcements as default behavior rather than an add-on. It also avoids wrapping dragged elements in extra DOM nodes, so drag handles compose cleanly with existing flexbox layouts, focus management, and even semantic tables, while still supporting virtualized lists and a scriptable sensor API for non-standard input sources.

Used by 15 apps in this directory

TypeScript
98%
AGPL 3.0

Checkmate

Devops · Analytics · Monitoring

10,794

Self-hosted uptime and infrastructure monitoring with multi-protocol checks, global geo-coverage, and beautiful real-time dashboards.

View details
91
Repo Health
82
Technical
68
Dependency
Built with
TypeScript98%
Updated yesterday
TypeScript
99%
AGPL 3.0

Cherry Studio

AI Assistants

51,521

All-in-one AI desktop client with 300+ assistants and multi-model support

View details
89
Repo Health
84
Technical
71
Dependency
Built with
TypeScript99%
Updated today
TypeScript
88%
MIT

DevTools-X

Developer Tools

1,534

41 offline-first developer utilities in a single 10MB cross-platform desktop app — no Electron, no cloud, no compromise.

View details
50
Repo Health
68
Technical
68
Dependency
Built with
TypeScript88%
Updated 3 months ago
TypeScript
92%
AGPL 3.0

Documenso

Digital Signiture

14,913

Self-hosted, open-source DocuSign alternative with legally binding PDF signatures, multi-party workflows, and a full REST and tRPC API.

View details
93
Repo Health
79
Technical
71
Dependency
Built with
TypeScript92%
Updated today
TypeScript
49%
AGPL 3.0

Grafana

Monitoring · Analytics

76,643

The open-source observability platform that unifies metrics, logs, and traces from any data source into dynamic, queryable dashboards.

View details
95
Repo Health
91
Technical
63
Dependency
Built with
TypeScript49%
Go45%
Updated today
TypeScript
98%
Other

Kibana

Analytics · Monitoring

21,284

Your open source window into the Elastic Stack — query, visualize, and act on data stored in Elasticsearch with real-time dashboards, AI-assisted search, and automated alerting.

View details
98
Repo Health
87
Technical
66
Dependency
Built with
TypeScript98%
Updated yesterday
Python
51%
AGPL 3.0

LearnHouse

Learning Management · CMS

2,240

Open-source LMS with AI tutoring, real-time collaboration boards, live code execution, and built-in course monetization — self-hosted in minutes.

View details
90
Repo Health
77
Technical
66
Dependency
Built with
Python51%
TypeScript48%
Updated yesterday
TypeScript
96%
Other

Lightdash

Analytics · Data Engineering

6,119

The open-source Looker alternative that turns your dbt project's metrics and dimensions into governed, self-serve charts and dashboards — no license key required.

View details
93
Repo Health
84
Technical
64
Dependency
Built with
TypeScript96%
Updated yesterday
TypeScript
99%
Apache 2.0

Mastra Code

AI Code Assistants

27,743

"A coding agent that never compacts" — a terminal-based AI coding agent built on the Mastra framework, with Observational Memory instead of context compaction, multi-model support, and OAuth login for Claude Max or ChatGPT Plus.

View details
88
Repo Health
73
Technical
65
Dependency
Built with
TypeScript99%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search