This component no longer exists. It was in skyroc-ui’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-10 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
Virtualizer
skyroc-ui/virtualizerRemovedBlock
skyroc-ui publishes no description for this item.
Install it
npx shadcn@latest add https://ui-play.skyroc.me/r/virtualizer.jsonSource
1'use client';2/* eslint-disable react-hooks/incompatible-library */34import type { CSSProperties } from 'react';5import { Fragment, useImperativeHandle, useRef } from 'react';6import { useVirtualizer } from '@tanstack/react-virtual';7import { Slot } from '@radix-ui/react-slot';8import { cn } from '@/lib/utils';9import { virtualizerVariants } from './virtualizer-variants';10import type { VirtualGridProps, VirtualizerGrid } from './types';1112const VirtualGrid = <13 T,14 TScrollElement extends HTMLDivElement = HTMLDivElement,15 TItemElement extends Element = Element16>(17 props: VirtualGridProps<T, TScrollElement, TItemElement>18) => {19 const {20 data,21 columns,22 rowHeight,23 columnWidth,24 width,25 height,26 ref,27 className,28 classNames,29 style,30 containerProps,31 keyExtractor,32 onChange,33 onScroll,34 renderCell,35 columnProps,36 ...rest37 } = props;3839 const { root, inner } = virtualizerVariants();4041 const mergedRootCls = cn(root(), className ?? classNames?.root);42 const innerCls = cn(inner(), classNames?.inner);4344 const rootRef = useRef<HTMLDivElement>(null);4546 const rowCount = Math.ceil(data.length / columns);4748 const getRowSize = (index: number) =>49 typeof rowHeight === 'function' ? rowHeight(index) : rowHeight;5051 const getColumnSize = (index: number) =>52 typeof columnWidth === 'function' ? columnWidth(index) : columnWidth;5354 // Vertical virtualization: rows55 const rowVirtualizer = useVirtualizer<TScrollElement, TItemElement>({56 getScrollElement: () => rootRef.current as TScrollElement,57 count: rowCount,58 estimateSize: getRowSize,59 // Row virtualizer onChange serves as primary onChange/onScroll callback60 onChange: (instance, sync) => {61 onChange?.(instance, sync);62 onScroll?.(instance.scrollOffset ?? 0);63 },64 ...rest65 });6667 // Horizontal virtualization: columns68 const columnVirtualizer = useVirtualizer<TScrollElement, TItemElement>({69 getScrollElement: () => rootRef.current as TScrollElement,70 count: columns,71 estimateSize: getColumnSize,72 horizontal: true,73 ...columnProps74 });7576 const containerStyle: CSSProperties = {77 height,78 width,79 overflow: 'auto',80 ...style81 };8283 const innerStyle: CSSProperties = {84 position: 'relative',85 height: rowVirtualizer.getTotalSize(),86 width: columnVirtualizer.getTotalSize()87 };8889 useImperativeHandle(ref, () => {90 return {91 containerRef: rootRef.current as TScrollElement,92// … truncated
What it pulls in
Other registry items
