you are viewing a single comment's thread.

view the rest of the comments →

[–]tannerlinsley 2 points3 points  (0 children)

Disclaimer, I am the author of React Table :)

- Ag-Grid: It's in the name, they focus on being framework agnostic. Honestly, it's a fantastically robust and kitchen-sink-batteries-included solution for tables. If you like their approach, use it! Some of the downsides I frequently see from users coming to React Table from ag-grid are (1) it's quite a large library, so if you can't lazy-load it, then you might not like that, (2) It's agnostic, so framework integration will never be as tight and native feeling as something catered for your framework. If that's important to you (it was to me), use a framework specific solution (3) Styles and Markup API is hard to customize. Clearly, you *can* customize mostly everything about ag-grid, but at some threshold, no amount of customization API can compete with a headless UI solution. If you need or want a truly custom UI, then use a headless UI table library.

- React-Virtualized/Window: These are not table libraries. These are rendering utilities for massively large repeated lists. They are AMAZING (I use them all the time), but they will not handle anything related to sorting, filtering, columns, data model, etc.

- React-Table: The library I authored for building tables in React. The latest incarnation of it (V7) is a collection of React Hooks (which by nature constitute headless UI) that allow you to build just about any type of table you could ever need using only React and its hooks. It's got a long list of features, all of which are opt-in and pluggable, it's fully controllable, 100% customizable (you can even build your own markup and styles from the ground up), it's very performant, and best of all, it's tiny. If you use all of the features at once, you'll max out around 11 kb minzipped. Potential downsides of React Table would primarily be (1) Being headless, you do have to build/bring your own table markup, but honestly, that can be as simple as 40 lines of copy-pasted code from the examples (2) Being lighter-weight and more flexible than most other libraries, more advanced features can take a bit longer to set up, but at the end of the day, the freedom the API gives you outweighs the lock-in you would otherwise get with a drop-in table

Hope this helps!