TypeScript/JS lib for dashboard layout and creation, responsive, mobile support, no external dependencies, with many wrappers (React, Angular, Vue, Ember, knockout...)
Last release 9 days ago
20 Aug 2026
Release timing varies
gaps range from 2 weeks to 4 months
Nearly every release is documented
notes for 58 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
139 releases · first in 2015
Release timeline
139 releases since 2015One column per quarter.
Releases
- 1.1.029 Feb 2020
Release notes2 sources agree
Open source →-
add minRow and row grid options (which set minRow=maxRow=N) 1172 - thanks @RadoiAndrei
-
fix 1166 resize not taking margin height into account - thanks @awjae
-
fix 1155 maxRow now limit initial item placement if out of bound, preventing broken drag behavior
-
fix 1171 added event support to call grid.on('added removed change', callback) again even with native events.
-
- 1.0.024 Feb 2020
Release notes2 sources agree
Open source →-
breaking : (1084) jquery was removed from the API and dependencies (initialize differently, and methods take/return GridStack or HTMLElement instead of JQuery ), so your code will need to change. See Migrating to v1.0.0
-
setColumn(N) is now column(N) (matches other set/get methods) and getColumn() to get current column number
-
add grid.on(eventName, callback) / grid.off(eventName) to hide native JQ events mix
-
add grid.getRow() to get the current grid row number
-
- 0.6.417 Feb 2020
Release notes2 sources agree
Open source →-
fix #540 WebComponent support: CSS file now insert before grid instead of 'head'
-
fix #1143 nested grids with different acceptWidgets class
-
fix #1142 add/remove widget will also trigger change events when it should.
-
optimized change callback to save original x,y,w,h values and only call those that changed 1148
-
delete bower since dead for a while now
-
- 0.6.35 Feb 2020
Release notes2 sources agree
Open source →-
fix #1132 oneColumnMode missing CSS to do layout
-
del oneColumnModeClass / .grid-stack-one-column-mode and associated code. If you depended on this, use class .grid-stack-1 instead since it is 1 column layout anyway 1134
-
- 0.6.24 Feb 2020
Release notes2 sources agree
Open source →-
add oneColumnModeDomSort true|false to let you specify a custom layout (use dom order instead of x,y) for oneColumnMode column(1) #713
-
fix oneColumnMode to only restore if we auto went to it as window sizes up #1125
-
editing in 1 column (or few columns) does a better job updating higher layout (track before and after and move items accordingly). Tracking item swap would be even better still. #1127
-
- 0.6.12 Feb 2020
Release notes2 sources agree
Open source →-
fix #37 oneColumnMode (<768px by default) now simply calls column(1) and remembers prev columns (so we can restore). This gives us full resize/re-order of items capabilities rather than a locked CSS only layout (see prev rev changes). #1120
-
fix responsive.html demo #1121
-
- 0.6.024 Dec 2019
Release notes2 sources agree
Open source →-
add float(val) to set/get the grid float mode, which will relayout #1088
-
add compact() to reclaim any empty space and relayout grid items #1101
-
add options.dragOut to let user drag nested grid items out of a parent or not (default false) and jQuery UI draggable.containment can now be specified in options. You can now drag&drop between 2 nested grids #1105
-
add % as a valid unit for height #1093 . thank you @trevisanweb @aureality @ZoolWay
-
fix callbacks to get either added, removed, change or combination if adding a node require also to change its (x,y) for example. Also you can now call batchUpdate() before calling a bunch of addWidget() and get a single event callback (more efficient). #1096
-
removeAll() is now much faster (no relayout) and calls removed event just once with a list #1097
-
column() complete re-write and is no longer "Experimental". We now do a reasonable job at sizing/position the widgets (especially 1 column) and also now cache each column layout so you can go back to say 12 column and not loose original layout. #1098
-
fix addWidget(el) (no data) would not render item at correct location, and overlap item at (0,0) #1098
-
you can now pre-define size of dragable elements from a sidebar using standard data-gs-width and data-gs-height - fix #413 , #914 , #918 , #922 , #933 thanks @ermcgrat and others for pointing out code issue.
-
- 0.5.528 Nov 2019
Release notes2 sources agree
Open source →-
min files include rev number/license #1075
-
npm package fix to exclude more temporary content #1078
-
removed jquery-ui/* requirements from AMD packing in gridstack.jQueryUI.js as it was causing App compile missing errors now that we include a subset of jquery-ui
-
- 0.5.426 Nov 2019
Release notes2 sources agree
Open source →-
fix for griditems with x=0 placement wrong order (regression by #1017 ) ( #1054 ).
-
fix cellHeight(val) not working due to style change (regression by #937 ) ( #1068 ).
-
add gridstack-poly.js for IE and older browsers, removed core-js lib from samples (<1k vs 85k), and all IE8 mentions ( #1061 ).
-
add jquery-ui.js (and min.js) as minimal subset we need (55k vs 248k), which is now part of gridstack-h5.js . Include individual parts if you need your own lib instead of all.js ( #1064 ).
-
changed jquery dependency to lowest we can use (>=1.8) ( #629 ).
-
add advance demo from web site ( #1073 ).
-
- 0.5.320 Nov 2019
Release notes2 sources agree
Open source →-
grid options width is now column , height now maxRow , and setGridWidth() now column() to match what they are. Old names are still supported (console warnings). Various fixes for custom # of column and re-wrote entire doc section ( #1053 ).
-
fix widgets not animating when animate: true is used. on every move, styles were recreated-fix should slightly improve gridstack.js speed ( #937 ).
-
fix moving widgets when having multiple grids. jquery-ui workaround ( #1043 ).
-
switch to eslint ( #763 ) thanks @rwstoneback .
-
fix null values addWidget() options ( #1042 ).
-
- 0.5.213 Nov 2019
Release notes2 sources agree
Open source →-
fix undefined x,y position messes up grid ( #1017 ).
-
changed code to 2 spaces.
-
fix minHeight during onStartMoving() ( #999 ).
-
add gridstack.d.ts TypeScript definition file now included - no need to include @types/gridstack , easier to update ( #1036 ).
-
add addWidget(el, options) to pass object so you don't have to spell 10 params. ( #907 ).
-
- 0.5.17 Nov 2019
Release notes2 sources agree
Open source →- reduced npm package size from 672k to 324k (drop demo, src and extra files)
- 0.5.06 Nov 2019
Release notes2 sources agree
Open source →-
emit dropped event when a widget is dropped from one grid into another ( #823 ).
-
don't throw error if no bounding scroll element is found ( #891 ).
-
don't push locked widgets even if they are at the top of the grid ( #882 ).
-
RequireJS and CommonJS now export on the exports module fix ( #643 ).
-
automatically scroll page when widget is moving beyond viewport ( #827 ).
-
removed lodash dependencies ( #693 ).
-
don't overwrite globals jQuery when in a modular environment ( #974 ).
-
removed z-index from .grid-stack-item-content causing child modal dialog clipping ( #984 ).
-
convert project to use yarn ( #983 ).
-
- 0.4.011 May 2018
Release notes2 sources agree
Open source →-
widgets can have their own resize handles. Use data-gs-resize-handles element attribute to use. For example, data-gs-resize-handles="e,w" will make the particular widget only resize west and east. ( #494 ).
-
enable sidebar items to be duplicated properly. Pass helper: 'clone' in draggable options. ( #661 , #396 , #499 ).
-
fix staticGrid grid option ( #743 )
-
preserve inline styles when moving/cloning items (thanks @silverwind )
-
fix bug causing heights not to get set ( #744 )
-
allow grid to have min-height, fixes ( #628 ) thanks @adumesny
-
widget x and y are now ints (thanks @DonnchaC )
-
allow all droppable options (thanks @vigor-vlad )
-
properly track mouse position in getCellFromPixel (thanks @aletorrado )
-
remove instance of !important (thanks @krilllind )
-
scroll when moving widget up or down out of viewport ( #827 )
-
- 0.3.024 Apr 2017
Release notes2 sources agree
Open source →-
remove placeholder when dragging widget below grid (already worked when dragging left, above, and to the right of grid).
-
prevent extra checks for removing widget when dragging off grid.
-
trigger added when a widget is added via dropping from one grid to another.
-
trigger removed when a widget is removed via dropping from one grid to another.
-
trigger removed when a widget is removed via dropping on a removable zone ( #607 and #550 ).
-
trigger custom event for resizestop called gsresizestop ( #577 and #398 ).
-
prevent dragging/resizing in oneColumnMode ( #593 ).
-
add oneColumnModeClass option to grid.
-
remove 768px CSS styles, moved to grid-stack-one-column-mode class.
-
add max-width override on grid-stck-one-column-mode ( #462 ).
-
add internal function isNodeChangedPosition , minor optimization to move/drag.
-
drag'n'drop plugin system. Move jQuery UI dependencies to separate plugin file.
-
- 0.2.617 Aug 2016
Release notes2 sources agree
Open source →-
update requirements to the latest versions of jQuery (v3.1.0+) and jquery-ui (v1.12.0+).
-
fix jQuery size() ( #486 ).
-
update destroy([removeDOM]) call ( #422 ).
-
don't mutate options when calling draggable and resizable . ( #505 ).
-
update _notify to allow detach ( #411 ).
-
fix code that checks for jquery-ui ( #481 ).
-
fix cellWidth calculation on empty grid
-
- 0.2.53 Mar 2016
Release notes2 sources agree
Open source →-
update names to respect js naming convention.
-
cellHeight and margin can now be string (e.g. '3em', '20px') (Thanks to @jlowcs).
-
add maxWidth / maxHeight methods.
-
add enableMove / enableResize methods.
-
fix window resize issue #331 ).
-
add options disableDrag and disableResize .
-
fix batchUpdate / commit (Thank to @radiolips)
-
remove dependency of FontAwesome
-
RTL support
-
'auto' value for cellHeight option
-
fix setStatic method
-
add setAnimation method to API
-
add column method ( #227 )
-
add removable / removeTimeout (experimental)
-
add removeDOM parameter to destroy method ( #216 ) (thanks @jhpedemonte)
-
add useOffset parameter to getCellFromPixel method ( #237 )
-
add minWidth , maxWidth , minHeight , maxHeight , id parameters to addWidget ( #188 )
-
add added and removed events for when a widget is added or removed, respectively. ( #54 )
-
add acceptWidgets parameter. Widgets can now be draggable between grids or from outside (experimental)
-
- 0.2.423 Feb 2016
Release notes2 sources agree
Open source →-
fix closure compiler/linter warnings
-
add staticGrid option.
-
add minWidth / minHeight methods (Thanks to @cvillemure)
-
add destroy method (Thanks to @zspitzer)
-
add placeholderText option (Thanks to @slauyama)
-
add handleClass option.
-
add makeWidget method.
-
lodash v 4.x support (Thanks to @andrewr88)
-
- 0.2.330 Jul 2015
Release notes2 sources agree
Open source →-
gridstack-extra.css
-
add support of lodash.js
-
add isAreaEmpty method
-
nested grids
-
add batchUpdate / commit methods
-
add update method
-
allow to override resizable / draggable options
-
add disable / enable methods
-
add getCellFromPixel (thanks to @juchi)
-
AMD support
-
fix nodes sorting
-
improved touch devices support
-
add alwaysShowResizeHandle option
-
minor fixes and improvements
-