SlickGrid is a fully open-source, javascript, vanilla js, client-side grid control compatible with Bootstrap.
The grid datasource is set up as an external object, and that means SlickGrid is compatible with a wide range of modern data-centric frameworks.
Recently all jQuery and jQueryUI dependencies have been removed from the project. A migration to TypeScript is next on the agenda.
Main GitHub Repository (github.com/6pac/SlickGrid)
Current Issues (bug fixes and feature requests only, please!)
NPM - npm install slickgrid
General support - ask on StackOverflow, tag 'slickgrid'
Slickgrid is an open source project. While the project is active and stable, it is not at present polished or comprehensively documented. Support is largely self-help, but assistance may be offered on StackOverflow or GitHub by volunteer contributors. The Examples are used as documentation - if you need help on how to use a feature, the example file will generally give a working example of the feature and all its possible options.
If you wish to use something more polished with a similar feature set, Ag-Grid has a great free feature set, additional paid features and excellent documentation.
Slickgrid is extremely well architected, modular and easy to customise. It is best regarded as a toolkit - the foundations are rock solid, but it's likely you will have to make minor tweaks to get it to do exactly what you want. This is actually its strength. MLeibman, the creator of the project, said it best:
The key difference is between SlickGrid and other grid implementation I have seen is that they focus too much on being able to understand and work with data (search, sort, parse, ajax load, etc.) and not enough on being a better “grid” (or, in case of editable grids, a spreadsheet). It’s great if all you want to do is “spruce up” an HTML TABLE or slap a front end onto a simple list, but too inflexible for anything else.
Data is complicated. It has business rules. It has non-intrinsic properties. Editing one property of an element can lead to cascading changes modifying other properties or even other elements. It has dependencies. What I’m saying, is that dealing with data is best left to the developer using the grid control. Trying to fit all of that into the grid implementation and API will only limit its applicability and add considerable bloat.
There are many display grids available. Fewer grids support good editing features. Very few do so elegantly and extensibly. Slickgrid's peers can be counted on one hand.
Slickgrid will support the building of very complex editing features, and offers great flexibility in both editing and display.
As an example of the power of the virtual rendering that SlickGrid uses, check out this issue where the OP requests that we allow row counts larger than an int32 (2.14 billion).