Skip to content

v3.0.0

Latest

Choose a tag to compare

@Lodin Lodin released this 02 Apr 12:06

Hey everyone! I'm back! 🎉

First of all, I sincerely apologize for the unforgivably long absence, and a huge thank you to everyone who has stuck around. I finally found the time and energy to finish what I started 5 years ago.

v3.0.0 is a stable release of the long-running beta. It serves as an intermediate milestone before v4.0.0, which will bring support for the upcoming new version of react-window. This release consolidates all the changes that have been living in beta, along with a full modernization of the tooling.


Breaking changes

  • toggle() has been replaced with setOpen(boolean) on node state — giving you more explicit control over open/close (#43)
  • Node IDs are now used as React element keys, which improves rendering performance but requires IDs to be strings (symbols are no longer supported) (#44)
  • treeWalker no longer handles openness state — it is now solely responsible for tree structure. Use recomputeTree for state updates (#40)

New features

  • Multi-root trees are now supported (#42)
  • listRef prop added to access the underlying react-window list instance directly (#45)
  • SSR support: fixed requestIdleCallback usage in server-side rendering environments (#79, #80)

Bug fixes

  • Fixed async tree not keeping descendant nodes hidden when a parent is collapsed (#54)
  • Fixed expanding nodes with more than 32,768 children (#57)

Performance

  • Inlined updateRecordVisibility to reduce memory allocations (#56)

Other changes

  • Peer dependencies are now more lenient (#59)
  • Full toolset modernization: updated to 2026 toolchain (TypeScript, ESLint, Vitest, Storybook 10, and more) (#104)
  • Storybook is now deployed to GitHub Pages (#105)
  • README fully rewritten with TypeScript examples and accurate documentation (#106)

New contributors

Huge thanks to first-time contributors who helped shape this release:

Full changelog: 2.0.4...v3.0.0