I have not tried any of the libraries that you mentioned, but maybe I could explain why fin-hypergrid stands out the most. My opinion is primarily based on my knowledge of JavaScript and how this material works on the back.
I should start with react-virtualized and ag-grid :
- Both use a way to populate the DOM and display only part of the data in the view, dynamically deleting things from the DOM that are no longer visible, and pre-adding things that were expected in advance. Now the problem is adding and removing things in the DOM, as this is usually done very quickly / several times per second. Because of this, we experience some lag or trembling. In fact, you can check the Web Console Console> Profiles> Write JavaScript CPU Profiles and see that this method takes time to complete. Thus, the only thing that differs from
react-virtualized and ag-grid is their algorithms for applying these changes in the most smooth way.
ag-grid , from what I see, is the one that suffers the most from this problem, since you can really see some elements that have not finished rendering yet, and experience too much lagging when scrolling too fast.
react-virtualized , on the other hand, does an excellent job by implementing its algorithm in the smoothest way. It may be the best library available in the DOM manipulation category, although it still suffers from the DOM manipulation problem too quickly, which creates a lag, although this is only visible when using large chunks of data.
This is why fin-hypergrid highlights:
- The
fin-hypergrid best asset is that it doesn’t do any DOM manipulation at all, so you’ve already gotten rid of the problem caused by adding and removing things too quickly because it uses <canvas> fin-hypergrid also displays only the data that the user sees and dynamically removes things that are not visible. It also adds in advance to achieve a smooth scrolling feel, so rendering elements are not displayed.fin-hypergrid also does a great job with their scrolling algorithm to achieve the maximum possible manner, so there is no jitter or delay.
Now this does not mean that hypergrid all right, it has some disadvantages:
- Since
fin-hypergrid is made with HTML5 canvas, styling will be a real pain since it does not accept CSS. You will need to manually style it. - A few things to keep in mind are form controls, such as
<select> , radio buttons, checkboxes, etc. - This is a real pain to implement. If you are trying to implement something like this, proceed with caution. - It is mainly used to display data using simple column changes that are not related to anything other than a text field, and achieve the smoothest scrolling feel.
Now, in conclusion, I would suggest using react-virtualized instead, since it offers smooth scrolling, above fin-hypergrid . If you want to ignore the disadvantages of fin-hypergrid , then fin-hypergrid is the best option.
UPDATED:
Since we discussed JS / CSS, canvas implementations of these tables. I should have mentioned the last possible rival, although this is not the first js table library, but the structure in which Google Sheets can be used is called d3.js.
d3.js has the speed and power of the canvas and at the same time preserves the HTML structure, which means that you can style it with CSS!- It maximizes the use of HTML 5 SVG
- I can say nothing better in
d3.js
The only drawback of d3.js in this discussion is that:
- There are no table libraries available that use
d3.js Google Sheets that is. But they do not share the code. d3.js simply very difficult to learn, although there are many things that help us learn this faster, but not so fast.
If you need Canvas speed with CSS styling capabilities, then d3.js is the key to the learning problem.