Plugin Overview #
vlist v2 ships 14 plugins. Each plugin is tree-shaken — only what you import is bundled.
Base (createVList only): 7.8 KB gzipped.
Quick Reference #
| Plugin | Import | Gzipped Delta | Description |
|---|---|---|---|
| a11y | a11y() |
+1.1 KB | Baseline keyboard nav + single-select |
| selection | selection() |
+2.4 KB | Single/multi selection + keyboard nav |
| data | data() |
+4.7 KB | Async data loading + pagination |
| scrollbar | scrollbar() |
+2.0 KB | Custom scrollbar UI |
| sortable | sortable() |
+2.9 KB | Drag-and-drop reordering |
| groups | groups() |
+3.7 KB | Grouped lists with sticky headers |
| scale | scale() |
+3.9 KB | 1M+ items via scroll compression |
| page | page() |
+0.8 KB | Document/window scroll mode |
| snapshots | snapshots() |
+1.3 KB | Scroll save/restore |
| transition | transition() |
+1.8 KB | FLIP-based enter/exit animations |
| autosize | autosize() |
+0.7 KB | Dynamic item measurement |
| Layout | |||
| grid | grid() |
+2.1 KB | 2D grid layout |
| table | table() |
+5.8 KB | Virtualized data table |
| masonry | masonry() |
+3.5 KB | Pinterest-style layout |
Usage #
import { createVList, grid, selection, scrollbar } from "vlist";
const list = createVList(config, [
grid({ columns: 3 }),
selection({ mode: "multiple" }),
scrollbar(),
]);
Plugins are passed as the second argument to createVList. Order in the array does not matter — priorities are fixed internally per plugin.
Compatibility #
Not all plugins can be combined. Layout plugins are mutually exclusive, and some plugins only support flat lists.
| grid | masonry | table | scale | transition | sortable | |
|---|---|---|---|---|---|---|
| grid | — | ❌ | ❌ | — | ❌ | ❌ |
| masonry | ❌ | — | ❌ | — | ❌ | ❌ |
| table | ❌ | ❌ | — | — | ❌ | ❌ |
| scale | — | — | — | — | — | ❌ |
| transition | ❌ | ❌ | ❌ | — | — | — |
| sortable | ❌ | ❌ | ❌ | ❌ | — | — |
All combinations not listed above are ✅ compatible.
Incompatibility reasons:
- grid + masonry / grid + table / masonry + table — only one layout plugin can be active at a time.
- transition + grid/table/masonry — transition uses FLIP animations designed for flat lists only.
- sortable + grid/masonry/table/scale — drag-and-drop reordering requires a flat, fixed-height list.
Priority Order #
Plugins run in a fixed internal priority order (lower number = runs earlier). You do not need to think about this — it is handled automatically regardless of the order you pass plugins to createVList.