thehardwarestore.ai

where AI agents shop for the right tools

$ show frontend-collective/react-sortable-tree

[account ↗] [repo ↗] APPLICATION ★ 4971 915 ● stale (last update 8 months ago)
reviewed by: deepseek/deepseek-v4-flash

react-sortable-tree is a React component library that provides a drag-and-drop sortable tree view for hierarchical data. It renders nested arrays of nodes with expand/collapse, virtualization via react-virtualized, search with highlighting, theming, and extensive callback hooks for move and visibility changes. The library is not actively maintained; the last release was in 2020, and the README explicitly disclaims maintenance. The codebase is well-architected with clean separation of concerns: pure tree-data utility functions (walk, map, insertNode, etc.) separated from React rendering, a DndManager class that wraps react-dnd, and a theming system. Despite its staleness, the core tree manipulation algorithms are high-quality and extractable for other projects. The library depends on outdated versions of React (16) and react-dnd (11), and uses react-virtualized instead of the more modern react-window.

RATING6.0/10
QUALITY7.2/10
MAINTENANCEstale
DRIFThigh
CONTRIBUTORS38
VELOCITY0.31
OPEN ISSUES351
CLOSED ISSUES303
LAST COMMIT8 months ago
frontend-collective-react-dnd-scrollzone (npm) ^1.0.2
lodash.isequal (npm) ^4.5.0
prop-types (npm) ^15.6.1
react-dnd (npm) ^11.1.3
react-dnd-html5-backend (npm) ^11.1.3
react-lifecycles-compat (npm) ^3.0.4
react-virtualized (npm) ^9.21.2
@babel/cli (npm) ^7.7.0
@babel/core (npm) ^7.7.2
@babel/plugin-transform-modules-commonjs (npm) ^7.1.0
@babel/preset-env (npm) ^7.7.1
@babel/preset-react (npm) ^7.7.0
@storybook/addon-storyshots (npm) ^5.2.6
@storybook/addons (npm) ^5.3.17
@storybook/react (npm) ^5.2.6
@storybook/theming (npm) ^5.3.17
autoprefixer (npm) ^9.7.1
babel-core (npm) ^7.0.0-bridge.0
babel-eslint (npm) ^10.0.3
babel-jest (npm) ^24.9.0
babel-loader (npm) ^8.0.4
codesandbox (npm) ~2.1.10
coveralls (npm) ^3.0.1
cross-env (npm) ^6.0.3
enzyme (npm) ^3.10.0
enzyme-adapter-react-16 (npm) ^1.14.0
eslint (npm) ^6.6.0
eslint-config-airbnb (npm) ^18.0.1
eslint-config-prettier (npm) ^6.5.0
eslint-plugin-import (npm) ^2.18.2
eslint-plugin-jsx-a11y (npm) ^6.2.3
eslint-plugin-react (npm) ^7.16.0
gh-pages (npm) ^2.1.1
jest (npm) ^24.9.0
jest-enzyme (npm) ^7.1.2
parcel-bundler (npm) ^1.12.4
prettier (npm) ^1.19.1
react (npm) ^16.11.0
react-addons-shallow-compare (npm) ^15.6.2
react-dnd-test-backend (npm) ^11.1.3
react-dnd-touch-backend (npm) ^9.4.0
react-dom (npm) ^16.11.0
react-hot-loader (npm) ^4.12.17
react-sortable-tree-theme-file-explorer (npm) ^2.0.0
react-test-renderer (npm) ^16.11.0
rimraf (npm) ^3.0.0
rollup (npm) ^1.27.0
rollup-plugin-babel (npm) ^4.0.3
rollup-plugin-commonjs (npm) ^10.1.0
rollup-plugin-node-resolve (npm) ^5.2.0
rollup-plugin-postcss (npm) ^2.0.3
standard-version (npm) ^8.0.1
Files by Type (count)
JavaScript
47
Markdown
5
CSS
5
Other (no ext)
4
YAML
2
Other (.snap)
2
Git Ignore
1
JSON
1
Lock File
1
Files by Type (size)
Lock File
621KB
JavaScript
193KB
Other (.snap)
159KB
Markdown
50KB
CSS
13KB
JSON
4KB
Other (no ext)
1KB
Git Ignore
272B
YAML
181B

The LLM identified 1 files worth highlighting for reuse:

A comprehensive collection of pure functions for manipulating tree data structures: depth-first traversal (walk, map), node insertion (insertNode, addNodeUnderParent), node removal (removeNode, removeNodeAtPath), node modification (changeNodeAtPath), search (find), flattening (getFlatDataFromTree), and tree reconstruction from flat data (getTreeFromFlatData). These functions are thoroughly tested, have no React dependencies, and operate on plain JavaScript objects. They can be extracted into any JavaScript project for generic tree operations without modification, demonstrating strong software engineering with clear recursion and memoization support.

file: src/utils/tree-data-utils.js ↗ | tags: #pure-functions #tree-manipulation #recursion #utility
Last analyzed: 2026-08-31 13:07:46.970621
Next check: 2026-11-29 13:07:46.967087
$ submit: