EnterUI
DocsComponentsThemesExamplesDonation
Get Started
      • ScrollArea
      • AspectRatio
      • ImageViewer
      • Media
      • VirtualList

Default usage

  1. EnterUI
  2. /Docs
  3. /Layout and Utilities
  4. /Layout Primitives
  5. /Media and Scroll
  6. /VirtualList
Updated 3 October 2026

VirtualList

Lightweight windowed list renderer for fixed-height rows in long product surfaces.

VirtualList renders only the rows that fit the visible viewport (plus a small overscan), making lists with thousands of fixed-height rows fast to scroll. It has no external dependencies — just plain scroll math.

#Default usage

Long list

Renders only the rows that fit the visible viewport.

Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8
Item 9
Item 10
Item 11
Item 12
Item 13
Code
<VirtualList
  aria-label="Workspace items"
  height={180}
  itemHeight={40}
  items={Array.from({ length: 200 }, (_, index) => `Item ${index + 1}`)}
/>

A custom row renderer is supported via renderItem:

Code
<VirtualList
  aria-label="Workspace items"
  height={180}
  itemHeight={40}
  items={data}
  renderItem={(item) => <span>{item.label}</span>}
/>

#Import

Code
import { VirtualList } from "@froggdesign/enter-ui-react";

#Accessibility

VirtualList renders the wrapper as role="list" by default and each rendered row as role="listitem", with aria-posinset reporting each row’s position and aria-setsize reporting the full item count on each list item. Pass role={null} for a non-list region.

#API

  • items: readonly source array.
  • itemHeight: fixed pixel height per row.
  • height: viewport pixel height.
  • renderItem(item, index): row renderer.
  • getItemKey(item, index): optional stable key resolver.
  • overscan: rows rendered above and below the viewport (default 4).

#Styling

Every exported component accepts className when it renders an element. EnterUI styles use .eui-* classes and --eui-* variables mapped from FroggDesign theme tokens.

PreviousMedia
NextToolbar
On this page
  • Default usage
  • Import
  • Accessibility
  • API
  • Styling