Benchmark Comparison
A detailed technical comparison between IAZ Dashboard and GridStack.js, two zero-dependency dashboard grid libraries.
Bundle Size (via Bundlephobia)
Size Difference
55%
smaller bundle
Dependencies
0
both libraries
Feature Comparison
| Feature | IAZ Dashboard | GridStack.js |
|---|---|---|
| Grid-based Layout | Yes | Yes |
| Drag & Drop | Yes | Yes |
| Resize Handles | 8 directions | 8 directions |
| Collision Detection | Yes | Yes |
| Auto-positioning | Yes | Yes |
| Responsive Breakpoints | Yes | Yes |
| Nested Grids | Yes v1.5 | Yes (v7+) |
| Size-to-Content (Auto Height) | Yes v1.5 | Yes (v10+) |
| CSS Variable Positioning | Yes v1.5 | Yes (v12+) |
| Float Mode (Compact) | Yes | Yes |
| Theme System | 6 built-in themes | CSS only |
| Plugin System | Yes | No |
| Custom Render Hooks | Yes | No |
| Touch Support | Yes | Yes |
| TypeScript | Native | Native |
| Framework Wrappers | Framework agnostic | Angular, React, Vue |
| Serialization | Yes | Yes |
| Animation | CSS transitions | CSS transitions |
| Widget Constraints | min/max W/H | min/max W/H |
| Locked Widgets | Yes | Yes |
API Syntax Comparison
IAZ Dashboard
10.1 KB
// Initialize
const grid = new IAZDashboard('#el', {
columns: 12,
rowHeight: 60
});
// Add widget
grid.addWidget({
id: 1,
x: 0, y: 0,
w: 4, h: 2,
content: 'Hello'
});
// Events
grid.on('widget:move', (w) => {});
// Edit mode
grid.setDraggable(false);
grid.setResizable(false);
GridStack.js
22.6 KB
// Initialize
const grid = GridStack.init({
column: 12,
cellHeight: 60
});
// Add widget
grid.addWidget({
id: 1,
x: 0, y: 0,
w: 4, h: 2,
content: 'Hello'
});
// Events
grid.on('change', (e, items) => {});
// Edit mode
grid.enableMove(false);
grid.enableResize(false);
IAZ Dashboard - Nested Grid
grid.addWidget({
id: 'parent',
x: 0, y: 0, w: 8, h: 6,
subGrid: {
columns: 4,
rowHeight: 40,
widgets: [
{ id: 'child', x: 0, y: 0, w: 2, h: 2 }
]
}
});
// Access sub-grid
const nested = grid.getSubGrid('parent');
GridStack.js - Nested Grid
grid.addWidget({
x: 0, y: 0, w: 8, h: 6,
subGridOpts: {
column: 4,
cellHeight: 40,
children: [
{ x: 0, y: 0, w: 2, h: 2 }
]
}
});
// Access via DOM traversal
const nested = el.gridstack;
Live Performance Test
Widget Creation Benchmark
Creates 100 widgets programmatically and measures the time taken. Both libraries are loaded and tested in real-time in your browser.
IAZ Dashboard
--
GridStack.js
--
Note: Performance varies by browser, device, and system load.
Both libraries are tested with animations disabled for fair comparison.
Run multiple times for more accurate results.
Technical Details
IAZ Dashboard
- Target: ES2020
- Build: Vite + TypeScript
- Output: ESM + UMD
- CSS: Vanilla CSS
- Collision: O(n) sweep
- Positioning: CSS Variables
GridStack.js
- Target: ES2020
- Build: Custom + TypeScript
- Output: ESM + UMD
- CSS: Vanilla CSS
- Collision: O(n) grid engine
- Positioning: CSS Variables (v12+)
When to Choose
Choose IAZ Dashboard if you need:
- Smallest possible bundle size
- Built-in plugin system
- Custom rendering hooks
- Built-in theme system
- Framework-agnostic approach
- Simple, clean API
Choose GridStack.js if you need:
- Official framework wrappers
- Larger community & ecosystem
- More mature codebase (since 2014)
- Extensive documentation
- Static grid variant option
- Angular/React/Vue bindings