Loading
Loading
Loading
mobile footer

Build the Interaction Layer Your Website is Missing.

Browse All EffectsBrowse All EffectsBrowse All EffectsUpgrade to ProUpgrade to ProUpgrade to Pro

80+ effects free, forever. No credit card.

© 2026 Hyperiux. All Rights Reserved.

AI Component CatalogueHey AI, Learn About Us
Platform

Vault

  • Documentation
  • Pricing
  • Blog
  • Community
  • NPM
  • MCP

Categories

  • All Effects
  • WebGL
  • Text
  • Backgrounds
  • Buttons
  • Carousels
  • Scroll
  • Components
  • Navigation
  • Cursor
  • Transitions
  • Loaders

Documents

  • Introduction
  • Installation
  • CLI
  • Dependencies
  • License

Legal

  • License Agreement
  • Terms of Service
  • Privacy Policy
  • Refund Policy
Socials
  • Twitter / X
  • LinkedIn
  • GitHub
  • Instagram
Contact Us
  • hello@hyperiux.com
New effects, in your inbox

Every new drop, plus the occasional behind-the-scenes build. No spam. Unsubscribe anytime.

Loading
Home/Table Component

Table Component

An animated data table with staggered row entrances, sliding highlights, interactive selection, drag reordering, and smooth transitions between changing datasets.

@base-ui/reactclass-variance-authoritygsaplucide-reactmotiontailwind-merge
DemoDemoDemo

Tune the Real Props

Overview

Table animates rows into place when filters, pages, or data change, with optional cell staggers and rolling or counting numbers. It pairs that motion with status filters, pagination, row and bulk selection, drag reordering, expandable details, interactive status badges, sticky headers, a pinned total, and loading skeletons.

Use it when users inspect and act on structured records that change during a session, such as invoices, orders, subscriptions, and projects. Accurate data and predictable controls always matter more than the movement.


Theme and Interaction Customisation

Set column alignment, borders, roundness, separators, header weight, primary or muted row highlights, check or circle selection marks, status badges, and a fixed or full-height layout. Motion settings include row and cell stagger, rolling or count-up numbers, sliding pagination, hover text rolls, selection, drag reordering, and expandable previews.


Example Production Use Case

A finance dashboard can filter invoices by Paid, Pending, or Unpaid, with matching rows sliding into place. The team Shift-clicks a run of pending invoices and exports them from the action bar that appears.

An order management tool can use status badges that advance from Processing to Shipped, with an expandable row showing items and tracking details.

A SaaS admin panel can paginate accounts, keep headers sticky, and pin a total MRR footer while staff scroll through subscriptions.


Best Used For

  • Invoice and payment dashboards.
  • Order management systems.
  • SaaS administration panels.
  • Project and task tracking.
  • Internal business tools.
  • Reporting interfaces with pagination and totals.
  • Content management systems.
  • Financial operations tools.

Not For

Content without a real row-and-column structure, like portfolios or narrative lists, reads better as cards or lists.

Large analytical datasets and continuously updating monitors need stable layouts, virtualisation, and spreadsheet-style tools rather than animated rows.

It doesn’t replace a full data platform with complex permissions, bulk editing, or server-side grouping.


Performance Budget

Keep staggers short, use cell stagger sparingly, and never delay real values behind count-up effects. Use stable records, memoise derived data, avoid layout measurement during drag, and paginate or virtualise large sets without animating offscreen rows.


Accessibility and Mobile

Use semantic table markup with associated headers, and label checkboxes, badges, drag handles, and row actions. Keep hover, selection, and focus distinct, give status badges readable text, and announce bulk changes briefly. On mobile, prefer horizontal scroll over cramped columns and keep touch targets usable, and with reduced motion remove row movement and numeric transitions.


Common Mistakes

  • Using unstable row IDs that move data or selection between records.
  • Treating a hovered row as a selected row.
  • Assuming header Select all covers every page.
  • Ignoring the active filter when adding new records.
  • Letting animated numbers differ from the real values.
  • Triggering a checkbox or delete when expanding a row.
  • Enabling cell stagger without row stagger, totals without totalKey, or skeletons outside loading.
  • Leaving users on an empty page after filtering or deleting.
  • Calculating totals from the wrong dataset.
  • Breaking table semantics for animation.
  • Overanimating large datasets.
  • Assuming local adds, deletes, or status changes are saved.

Changelog

v1.0.0

Oct 23, 2026
Initial release

API Reference

PropTypeDefaultDescription
themestringghibliColour palette for the table, its menus and the action bar. Selected rows and primary buttons take its primary colour.
modestringdarkLight or dark version of the palette. Starts dark.
staggerRowsbooleantrueRows appear one after another when the table loads or changes.
staggerCellsbooleanfalseCells inside each row also appear one after another.
numberAnimationstringrollHow numbers change: roll digit by digit, count up, or switch instantly.
durationnumber0.4How long each animation takes, in seconds.
staggernumber0.04Delay between each row or cell appearing, in seconds.
rowHighlightstringslideHow the hover highlight moves between rows: slides, fills from the top, or none.
rowHighlightColorstringprimaryColour of the row highlight: soft grey or the theme's primary colour.
rollingTextbooleanfalseHeader and button labels roll to a second copy on hover.
showStatusFilterbooleantrueShows the status filter above the table.
highlightTotalbooleanfalseHighlights the total figure in the footer.
showPaginationbooleanfalseSplits the rows into pages with next and previous buttons.
selectablebooleanfalseAdds a checkbox to every row.
showSelectAllbooleantrueShows the select-all checkbox in the header. Needs Row checkboxes on.
selectMarkstringcheckMark shown in a selected row's checkbox: checkmark or filled circle. Needs Row checkboxes on.
showActionBarbooleantrueShows a floating action bar when rows are selected. Needs Row checkboxes on.
dragModebooleanfalseLets you drag rows up and down to reorder them.
showStatusBadgesbooleantrueShows status as coloured badges instead of plain text.
expandablebooleanfalseRows open to reveal a preview underneath.
removablebooleanfalseAdds a button to delete a column.
addablebooleantrueAdds a button to add new rows.
textAlignstringleftAlignment of the text in the cells.
borderedbooleantrueDraws a border around the table.
showHorizontalLinesbooleantrueDraws a line between rows.
showVerticalLinesbooleantrueDraws a line between columns.
showHeaderBorderbooleantrueDraws a line under the header row.
boldHeaderbooleantrueMakes the header text bold.
stickyHeaderbooleantrueKeeps the header in view while the rows scroll.
expandFullTablebooleanfalseGrows the table to show every row instead of scrolling inside it.
heightnumber40Height of the table, as a percentage of the viewport. Ignored when Expand full table is on.
stickyFooterbooleantrueKeeps the last row pinned at the bottom while the rows scroll.
loadingSkeletonbooleantrueShows shimmering placeholders for a moment before the rows appear.

Questions, Answered.

What is Table?

Table is an animated React data table for presenting and managing structured records, with status filtering, row transitions, selection, pagination, drag reordering, expandable details, and configurable interactions.

Can Table filter records by status?

Yes. Show status filter adds chips that narrow visible rows by status. It requires a statusKey and a non-empty list of statuses.

Does Select all include records on other pages?

No. It selects only the currently visible rows. Selecting across pages needs separate selection logic.

Does Table support bulk actions?

Yes. Show action bar displays a contextual toolbar when rows are selected. The actions themselves come from the integrating product.

Does Table support sorting by column?

Column sorting isn’t documented in the published API, so don’t present it as built in without checking the shipped implementation.

Can Table be connected to server data?

Yes, but fetching, persistence, server-side filtering, and updates are integrated separately. Add, Delete, and status changes don’t write to a database by themselves.

View MoreView More

Request a Custom Animation

Need a custom effect? Tell us what to create.

Related Effects

Explore All EffectsExplore All EffectsExplore All Effects
Command Component
@base-ui/reactclass-variance-authoritycmdk

Command Component

Components

Toast Component
@base-ui/reactclass-variance-authoritylucide-react

Toast Component

Components

Tooltip Component
lucide-reactmotiontailwind-merge

Tooltip Component

Components

All Effects
Featured ComponentsText AnimationsAnimated BackgroundsAnimated ButtonsCarousel EffectsScroll EffectsCreative ComponentsNavigationsCursor EffectsTransitionsLoadersWebGL & 3D Effects
Templates
IntroductionInstallationCLIDependenciesLicense
PricingBlogGithubNPMMCP Doc