Pagination

Split large datasets into pages with enablePagination.

Enable pagination

Set enablePagination and optionally rowsPerPage (default 10). The table slices rows client-side and shows the default footer.

React TSX
<SimpleTable columns={columns} rows={rows} rowsPerPage={20} enablePagination={true} />

Server-side pagination

Set serverSidePagination so the table does not slice rows. Pass totalRowCount and load each page in onPageChange. Pair with isLoading while fetching.

React TSX
const [rows, setRows] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const handlePageChange = async (page) => {
setIsLoading(true);
setRows(await fetchPage(page));
setIsLoading(false);
};
<SimpleTable
columns={columns}
rows={rows}
enablePagination
serverSidePagination
rowsPerPage={25}
totalRowCount={1000}
isLoading={isLoading}
onPageChange={handlePageChange}
/>

Custom footer

Replace the default pagination UI with Footer Renderer.

Example

Client-side pagination with the default footer. Use Code or StackBlitz for the full example.

Props

Pagination Configuration

PropertyRequiredDescriptionExample
enablePagination
boolean
Optional
Enables pagination and shows the default footer controls.
rowsPerPage
number
Optional
Rows per page. Defaults to 10.
serverSidePagination
boolean
Optional
When true, disables internal slicing — supply the current page of rows yourself.
totalRowCount
number
Optional
Total rows on the server (used with serverSidePagination to compute pages).
onPageChange
(page: number) => void | Promise<void>
Optional
Fires when the page changes. Use to fetch the next page for server-side mode.
isLoading
boolean
Optional
Show loading skeletons while page data is fetching.