unstale

npm / react-arborist

react-arborist

What changed in react-arborist 3 to 4, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-25.

12 breaking1 new APIs and options1 performance1 tooling

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.6 on npm

react-arborist 413 changes

Breaking changes 11

  • Use this property instead of the moved internal tree.state.nodes.drag.destinationIndex field.

    4.0.1release notes

  • Use this property instead of the moved internal tree.state.nodes.drag.destinationParentId field.

    4.0.1release notes

  • CommonJS TypeScript projects on Node module resolution need module set to nodenext with TypeScript 5.8 or newer, or node20 with TypeScript 5.9 or newer; node16 and node18 report TS1479.

    4.0.0release notes

  • The engines.node floor is 22.12, including for bundler and browser consumers, because CommonJS require relies on require(esm).

    4.0.0release notes

  • The react peer dependency floor rises from 16.14 to 18 because the build imports react/jsx-runtime and useSyncExternalStore directly.

    4.0.0release notes

  • The CommonJS dist/main build is gone; the package ships a single ESM build, so import and require load the same copy.

    4.0.0release notes

  • Deep imports under react-arborist/dist/module are no longer resolvable because the package declares an exports map.

    4.0.0release notes

  • Install react-dnd as a peer dependency alongside react-arborist; v16 is required.

    4.0.0release notes

  • Install react-dnd-html5-backend as a peer dependency alongside react-arborist; v16 is required, even when providing a custom backend or manager.

    4.0.0release notes

  • The react-dom peer dependency floor rises from 16.14 to 18.

    4.0.0release notes

  • Jest users must add react-arborist to the transformIgnorePatterns exception list alongside react-dnd.

    4.0.0release notes

Performance 1

  • Dragging no longer makes the preview lag behind the pointer; hovers reach the store at most once per animation frame, and only rows whose drop highlight changes re-render.

    4.0.1release notes

Tooling 1

  • This is now a regular dependency instead of a dev dependency, so public declarations referencing react-window types resolve for TypeScript consumers.

    4.0.0release notes

react-arborist 32 changes

Breaking changes 1

  • The default searchMatch no longer searches a node's children, so ancestors and folders do not count as matches just because matching values appear in nested children data.

    3.16.0release notes

New APIs and options 1

  • Adds a tree API getter that reports how many nodes match the current searchTerm across the whole tree, or 0 when there is no active search.

    3.16.0release notes