A plain Table implies the point is comparison across a handful of comparable attributes — under ~100 rows. Reaching for full DataTable infrastructure (sort, bulk actions, pagination) for 20 rows is overkill; reach for it once row count and interaction needs actually justify it.
| Plan | Price | Seats |
|---|---|---|
| Starter | $12/mo | 3 |
| Team | $29/mo | 10 |
| Enterprise | Custom | Unlimited |
| Acme Corp | 2024-01-04 | $2,400 | |
| Globex | 2023-11-19 | $980 | |
| Initech | 2024-03-02 | $5,120 | |
| Umbrella | 2023-08-27 | $1,760 |
Sortable columns, row selection, bulk action — the infrastructure a <100-row Table skips.
| Customer | Signed up | MRR |
|---|---|---|
Skeleton rows match the table's real shape — column widths don't jump when data lands.
Couldn't load customers
Check your connection and try again.
No customers yet
Add your first customer to start tracking revenue.
User has never created anything here and can create from this screen → EmptyState with a primary CTA.
No customers match "acme, status: churned".
Filtered-empty, not true zero — a lightweight inline message, not a full EmptyState (too heavy for "zero results this search").