1. Core Rule

Non-Negotiable

Search and filters always go to the backend. Never filter or sort a pre-loaded client-side array. A client-side filter only works on the current page — it misses all other pages.

2. Table & List Standards








3. Data Display Rules

Formatting










Images & Avatars




4. State Requirements

Every table or list must handle all four states:

State What to Show
Loading Skeleton rows matching page size — column headers visible
Empty (no data) Illustration/icon + specific message + create action CTA
Empty (filter mismatch) "No results match your filters." + clear filters button
Error Error message + retry button — never a blank area





5. Sorting









7. Filters

Display






Behavior







Filter Inputs





8. Pagination

Display







Behavior







9. Infinite Scroll / Load More

Use for browsing contexts (feeds, galleries, activity logs). Not for data that needs precise navigation.







10. URL State

All search, filter, sort, and pagination state must live in URL params.









11. Empty States

No Data Exists




Search Returned No Results




Filter Returned No Results




Combination (search + filter)



Rule: Never show a blank table body or an empty list without a message.

12. Row & Item Actions









13. Bulk Actions











14. Cards & List Items







15. Mobile