vssvelte-virtual-scroll-list.
svelte-virtual-scroll-list is no longer maintained. Svelte Virtual List covers most of its API with Svelte 5 snippets.
at a glance.
svelte-virtual-scroll-list is a Svelte port of vue-virtual-scroll-list: one VirtualScroll component that measures rows of different sizes, fires top and bottom events for loading in both directions, and can scroll with the whole page through pageMode. Its last release, 1.3.0, was in July 2023, it uses Svelte 3 slot syntax, and its README now marks it as no longer maintained. @humanspeak/svelte-virtual-list is a maintained Svelte 5 component with snippets, automatic measurement, measured header and footer snippets, built-in infinite loading, and index and offset scrolling.
side-by-side.
Every surface that matters, compared without spin.
| feature | @humanspeak/svelte-virtual-list | svelte-virtual-scroll-list |
|---|---|---|
| Svelte 5 snippets | yes | Svelte 3 slots |
| Dynamic measured sizes | yes | yes |
| Header and footer | Measured snippets | Slots |
| Load more at the end | onLoadMore + hasMore | bottom event |
| Load older items at the top | no | top event |
| Horizontal lists | LTR, runtime switchable | yes |
| Scroll with the whole page | no | pageMode |
| Scroll position as a prop | scroll() after mount | start / offset |
| Programmatic scroll to index | yes | yes |
| Item key as a function | yes | Property name only |
| Current maintenance | yes | no |
| Runtime dependencies | 0 | 0 |
where each shines.
- +Svelte 5-native component API with snippets and TypeScript generics
- +Dynamic height measurement without requiring a size map up front
- +Built-in infinite loading hooks for feed and pagination workflows
- +Imperative scroll method with index and alignment control
- +Vertical and horizontal layouts, including reactive orientation switching
- +SSR-friendly package for SvelteKit apps
- +Zero runtime dependencies and MIT licensed
- +Snippets and callback props instead of slots and dispatched events
- +Keyed prepends, trims, and reorders keep the reading position
- +Scrolls with the whole page through pageMode
- +Top and bottom events for loading in both directions
- +start and offset props set the scroll position declaratively
- +Size getters such as getSize and getScrollSize
where each falls short.
- −Focused on one-dimensional lists, not grids or masonry layouts
- −Horizontal mode is LTR-only in the current release
- −Requires Svelte 5
- −Newer package with a smaller ecosystem than older virtualizer projects
- −No release since July 2023, and its README marks it as no longer maintained
- −Svelte 3 slot syntax; Svelte 5 support is an open issue
- −key must be a property name, not a function
- −Top and bottom thresholds are in pixels and can fire more than once
the honest call.
Stay on svelte-virtual-scroll-list only if you depend on pageMode to scroll the list with the whole page. For chat-style lists that load older messages at the top, use @humanspeak/svelte-virtual-chat. For other Svelte 5 projects, @humanspeak/svelte-virtual-list is a maintained replacement for the rest of its API: measured rows, header and footer, infinite loading, horizontal mode, and index and offset scrolling. The migration guide maps each prop, event, and method.
read more.
Every head-to-head, with the same matrix + pros / cons + verdict format.
TanStack Virtual is a powerful headless virtualizer. Svelte Virtual List is the smaller Svelte-first component.
read comparison ↗svelte-virtual renders fixed-size lists and grids. Svelte Virtual List measures rows automatically and supports Svelte 5 in its stable release.
read comparison ↗virtua is a zero-config multi-framework virtualizer. Svelte Virtual List is narrower and Svelte-specific.
read comparison ↗svelte-tiny-virtual-list is older, tiny, and flexible. Svelte Virtual List is built around Svelte 5 ergonomics.
read comparison ↗svelte-virtuallists offers list and table virtualizers. Svelte Virtual List keeps a smaller one-dimensional component API.
read comparison ↗The legacy Svelte package proved the pattern. Svelte Virtual List modernizes it for Svelte 5.
read comparison ↗The full /compare index — every head-to-head in one place.
browse all ↗svelte virtual list → install in 30 seconds