Support and compatibility
Browsers
Published packages target the Browserslist query >0.6%, not op_mini all,
read from the root build configuration.
Browser rendering requires a native ResizeObserver for item measurement. The
Node export installs only an inert server-side observer so models can be
created before DOM attachment; it does not polyfill browser measurement.
TypeScript
Core and adapters publish declarations generated from their public APIs. The compatibility contract checks every adapter’s declarations with TypeScript 6 and checks the combined public surface with TypeScript 7. The API reference is generated from the same public source.
Server rendering
Models can be created without attached DOM elements. Initial
estimatedWidgetSize, estimatedItemSize, and overscanCount determine the
initial range; real elements replace those estimates after hydration. Adapters
defer DOM attachment to their normal mounted lifecycle, but the repository does
not currently provide a dedicated SSR example.
Framework versions
Each adapter package declares its supported range in peerDependencies; that
manifest is the source of truth. This table reads those manifests during the
website build instead of copying their values into prose.
| Framework | Adapter | Supported range |
|---|---|---|
| React | @af-utils/virtual-react | ^19.0.0 |
| Preact | @af-utils/virtual-preact | ^10.23.0 |
| Solid | @af-utils/virtual-solid | ^1.5.0 |
| Svelte | @af-utils/virtual-svelte | ^5.34.0 |
| Lit | @af-utils/virtual-lit | ^2.0.0 || ^3.0.0 |
| Vue | @af-utils/virtual-vue | ^3.3.0 |
A packed-package compatibility test installs every declared lower bound with strict peer checks, validates public types and Node exports, and runs a small lifecycle in Chromium. Standalone examples use current framework releases and test real application behavior instead of repeating the minimum-version matrix.
Older framework majors outside the declared ranges are not supported through legacy adapter branches. Open framework setup for package names and runnable examples.