While working on a new analytics dashboard I wanted to find a good table tool manage my table like data from the backend. My main goal is to have dynamic group by for the table’s dimensions. While this has been something that I’ve always liked about Python based backends, it definitely wasn’t something I found in any of the following data table packages for Javascript.
In the end, I’ll be building my own break down / group by feature by combining dropdowns and manually massaging the full table itself. I may try node-polars
if my lack of JS ability stunts my progress.
For the rest of the post, here’s a quick breakdown of what I thought of the various data table libraries I checked for Svelte 5 compatibility.
AG Grid
https://www.ag-grid.com/
Looks like exactly what I want! But doesn’t have a Svelte library. There was a community project svelte-ag-grid
which was built for Svelte 3 but is not well updated (still hasn’t transitioned to Svelte 4 much less Svelte 5).
I went ahead and tried anyways and was able to get ag-grid working with Svelte 5 and actually it seemed to be working pretty good. That is until I tried implementing features I saw on their examples/demo page: AG Grid costs $1k for the features I was looking at. Oops, hadn’t realized that! I didn’t realize the features you see in the demos were not freely available.
TanStack Table
https://tanstack.com/table/latest
This one is much better at Open Source, with a huge and active community. Though the Svelte 5 support isn’t quite out yet, it does look like support is on the way. One other issue I hit, is none of their examples work on Firefox, I think just due to a tool used on their site for embedding, not the TanStack Table I assume.
Vincjo/Datatables
https://github.com/vincjo/datatables/
This works well now with Svelte 5. I’ve also used it with Skeleton.dev but unfortunately that does not yet have support for Svelte 5 but is also right around the corner. As far as using it as a table, my only issue with Datatables is that it has much less features out of the box, which led me to my final answer.
DIY
What I’m looking to do is likely not that complicated, just time for me to roll up my sleeves and learn more Javascript! Either way, it’s exciting to see so much support moving forward for Svelte 5 and learning the overview of the table like packages out there that support the release candidate for Svelte 5.