awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
gridstack avatar

gridstack/gridstack.js

0
View on GitHub↗
8,972 stars·1,410 forks·TypeScript·MIT·25 viewsgridstackjs.com↗

Gridstack.js

gridstack.js is a JavaScript grid layout library and responsive dashboard framework used to create interactive interfaces with draggable and resizable elements. It functions as a drag-and-drop layout manager and a JSON-serializable layout engine, allowing user-defined interface states to be persisted and restored.

The library distinguishes itself through a touch-enabled grid interface and a responsive system that automatically adjusts item placement based on screen breakpoints. It features a collision-based layout engine that manages overlapping coordinates to shift or swap elements, alongside coordinate-based space compaction to reclaim empty gaps.

The framework covers a broad range of capabilities, including hierarchical grid nesting, right-to-left layout support, and external element import. It provides comprehensive event handling for the interaction lifecycle, including custom resize handles, drop zone validation, and integration hooks for component frameworks and virtual DOMs.

The system includes performance optimizations such as deferred collision detection and element visibility tracking to manage computational load during active interactions.

Features

  • Drag and Drop Libraries - Provides a comprehensive library for implementing interactive drag-and-drop grid layouts with collision detection.
  • Grid Layouts - Implements a responsive grid layout engine for arranging interactive UI elements in rows and columns.
  • JSON Serializers - Converts grid positions and dimensions into JSON format for persisting and restoring dashboard configurations.
  • Grid Packing Algorithms - Implements algorithms for automatically arranging and compacting grid items to resolve overlaps.
  • Widget Lifecycle Management - Adds, removes, or updates widgets and converts existing DOM elements into manageable grid items.
  • Unit-Based Dimensioning - Specifies the size and position of elements using numeric values or strings with unit modifiers.
  • Coordinate-Based Positioning - Defines the horizontal and vertical coordinates of a cell to place it accurately within the layout.
  • Dashboard Frameworks - Provides a framework for building interactive dashboards with widgets that adapt their placement based on screen breakpoints.
  • Overlap Detection Systems - Calculates spatial intersections between grid elements to manage collision and overlap logic.
  • Draggable Layout Elements - Implements UI components that can be repositioned within a grid via drag-and-drop interactions.
  • Layout Space Compaction - Ships a coordinate-based system to reclaim empty gaps by shifting items vertically.
  • Layout State Serialization - Saves and restores the positions and sizes of grid items to preserve user-customized dashboard configurations.
  • Grid-Based Reordering - Provides the ability to rearrange the sequence and position of items within the grid.
  • Placement Validation - Verifies if an area is empty and finds the first available spot that fits a given dimension.
  • Resizing Constraints - Sets minimum and maximum boundaries and handle behaviors to control how users change element dimensions.
  • Grid Item Resizers - Creates and manages interactive handles that allow users to modify the dimensions of grid cells.
  • Responsive Breakpoints - Provides automatic adjustment of column counts and item placement based on predefined viewport breakpoints.
  • Responsive Layout Configurations - Allows defining column counts, row constraints, and floating behaviors to control responsive element positioning.
  • Responsive Item Repositioning - Provides automatic repositioning and reordering of widgets when the column count changes across screen breakpoints.
  • Touch Layout Interactions - Handles native touch events to allow users to drag and resize grid elements on mobile devices.
  • DOM-Driven State Management - Synchronizes internal layout coordinates with actual HTML element positions and dimensions for visual alignment.
  • Collision Detection - Implements a collision-based engine to automatically shift or swap elements during drag and resize operations.
  • Grid Action Processors - Triggers custom logic when specific grid actions occur by processing the event and the affected layout nodes.
  • Layout Event Listeners - Triggers custom logic when widgets are added, removed, dragged, or resized within the layout.
  • Custom Resize Handles - Allows the definition of custom elements and event hooks for the start, move, and stop phases of resizing.
  • External Element Import - Allows users to drag elements from external areas, such as toolbars, into the grid to create new widgets.
  • Content-Driven Sizing - Triggers callbacks to adjust the size of a grid item automatically when its internal content changes.
  • Lifecycle Callbacks - Executes callback functions when widgets are added or removed to synchronize layout changes with application logic.
  • Boundary Validation - Validates coordinates to ensure elements remain within the grid boundaries during movement.
  • Drag and Drop Configurations - Offers settings to define the behavior and constraints of draggable elements, including trigger handles and helper rendering.
  • Cross-Container Transfers - Provides mechanisms for moving draggable layout elements between different target containers.
  • External Element Import - Configures the grid to accept widgets dragged from external elements, such as a toolbar.
  • Event Handlers - Executes custom functions when grid elements trigger events, providing access to associated event data.
  • Interaction Lifecycle Managers - Manages the programmatic state transitions and lifecycle hooks for drag, drop, and resize operations.
  • Drag-and-Drop Event Callbacks - Provides a chain of callbacks to manage transitions between drag start, movement, and drop phases.
  • Grid Cell Configurations - Provides tools for defining column counts, cell heights, and margins to adjust the structural density of the layout.
  • Grid Element Relocation - Provides a mechanism to relocate layout items to specific positions while adjusting dimensions and collisions.
  • Nested Grid Structures - Supports embedding grid containers within other grid cells to create hierarchical parent-child layout structures.
  • Grid Population Methods - Adds items to the grid via code, serialized data sets, or by initializing existing DOM elements.
  • Interaction Handle Configuration - Allows configuration of available handles for resizing elements and defines draggable item behaviors.
  • Custom Layouts - Allows adding custom methods or replacing the core engine to modify how nodes are positioned.
  • Interaction Performance Optimizations - Reduces computational load by deferring placement and collision detection until cursor movement pauses during dragging.
  • Position Swapping - Allows exchanging the positions of two compatible nodes to reorganize the layout.
  • Dimension Constraints - Enforces minimum and maximum width and height bounds for interactively resizable grid items.
  • Grid Column Customization - Sets the number of columns and adjusts layout constraints to fit specific screen or design requirements.
  • Interactive Handle Controls - Provides interactive handles and the ability to toggle resizing capabilities for grid items.
  • Breakpoint State Caching - Caches layout configurations for different column counts to preserve interface state across breakpoints.
  • Responsive Layout Optimizations - Implements techniques to adapt layout behavior and column configurations automatically based on the viewport size.
  • Touch-Optimized Interfaces - Implements a touch-optimized grid interface allowing native touch support for rearranging and resizing components on mobile devices.
  • Interaction Restrictions - Allows locking specific widgets to prevent them from being moved or resized.
  • Widget Behavioral Configurations - Sets widget dimensions, movement restrictions, and scaling behaviors to control how elements behave within the grid.
  • Widget Dimension Constraints - Sets minimum and maximum width and height limits to control how users resize elements.
  • Framework Component Adapters - Wraps layout functionality for specific component libraries to synchronize state with framework-specific lifecycles.
  • Dashboards and BI - Library for building responsive dashboard layouts.
  • UI Layout Components - Supports multi-column dashboard layouts with drag-and-drop capabilities.

Star history

Star history chart for gridstack/gridstack.jsStar history chart for gridstack/gridstack.js

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does gridstack/gridstack.js do?

gridstack.js is a JavaScript grid layout library and responsive dashboard framework used to create interactive interfaces with draggable and resizable elements. It functions as a drag-and-drop layout manager and a JSON-serializable layout engine, allowing user-defined interface states to be persisted and restored.

What are the main features of gridstack/gridstack.js?

The main features of gridstack/gridstack.js are: Drag and Drop Libraries, Grid Layouts, JSON Serializers, Grid Packing Algorithms, Widget Lifecycle Management, Unit-Based Dimensioning, Coordinate-Based Positioning, Dashboard Frameworks.

What are some open-source alternatives to gridstack/gridstack.js?

Open-source alternatives to gridstack/gridstack.js include: strml/react-grid-layout — React Grid Layout is a draggable and resizable grid system for React that organizes components into a coordinate-based… haltu/muuri — Muuri is a JavaScript grid layout library and draggable UI framework used to create responsive grids with… react-grid-layout/react-draggable — react-draggable is a drag and drop library and coordinate-based position manager for React. It functions as a… jbaysolutions/vue-grid-layout — vue-grid-layout is a draggable and resizable grid system for Vue.js that enables users to customize the placement and… react-grid-layout/react-grid-layout — React Grid Layout is a toolkit for building draggable, resizable, and responsive dashboard interfaces. It functions as… sortablejs/sortable — Sortable is a framework-agnostic JavaScript library for creating reorderable lists through drag and drop interactions.…

Open-source alternatives to Gridstack.js

Similar open-source projects, ranked by how many features they share with Gridstack.js.
  • strml/react-grid-layoutSTRML avatar

    STRML/react-grid-layout

    22,320View on GitHub↗

    React Grid Layout is a draggable and resizable grid system for React that organizes components into a coordinate-based layout. It functions as a responsive layout manager and a serialized grid state engine, providing the tools necessary to create user-customizable workspaces where interface elements can be moved and resized. The system distinguishes itself through breakpoint-driven layout mapping, which adjusts grid configurations based on container width. It utilizes a serialized state model to convert spatial positions and dimensions into data formats for saving and restoring user layouts,

    TypeScript
    View on GitHub↗22,320
  • haltu/muurihaltu avatar

    haltu/muuri

    10,954View on GitHub↗

    Muuri is a JavaScript grid layout library and draggable UI framework used to create responsive grids with drag-and-drop reordering, sorting, and animated filtering. It features a nested grid system that allows full grid instances to be embedded inside other grid items to create hierarchical structures. The library uses a web worker layout engine to offload heavy coordinate calculations to background threads, maintaining interface responsiveness during complex rearrangements. The system provides interactive capabilities for moving items between multiple containers, filtering visibility based

    JavaScriptbin-packingdnddrag-and-drop
    View on GitHub↗10,954
  • react-grid-layout/react-draggablereact-grid-layout avatar

    react-grid-layout/react-draggable

    9,292View on GitHub↗

    react-draggable is a drag and drop library and coordinate-based position manager for React. It functions as a component wrapper that adds draggable behavior to user interface elements, enabling them to be moved via mouse or touch interactions. The library provides touch-enabled interaction tools that unify pointer events across desktop browsers and touch screen devices. It utilizes CSS transforms to handle element movement and coordinate tracking. The system covers movement constraints such as axis restriction and boundary clamping to confine elements within specific areas. It includes posit

    JavaScript
    View on GitHub↗9,292
  • jbaysolutions/vue-grid-layoutjbaysolutions avatar

    jbaysolutions/vue-grid-layout

    7,414View on GitHub↗

    vue-grid-layout is a draggable and resizable grid system for Vue.js that enables users to customize the placement and size of interface elements. It functions as a dynamic widget orchestrator and a state-persistent layout manager, allowing for the creation of customizable dashboard interfaces where components can be arranged and sized according to user preference. The system operates as a responsive dashboard framework that automatically adapts grid arrangements based on viewport size and supports right-to-left text directions. It provides the ability to capture and serialize grid positions a

    JavaScriptdrag-and-dropgridgrid-layout
    View on GitHub↗7,414
See all 30 alternatives to Gridstack.js→