Column Filtering

Let users filter columns by type — or drive filtering from your server.

Enable filtering

Set filterable: true on a column. Operators follow the column type (string, number, date, boolean, or enum).

TypeScript
{
accessor: "name",
label: "Full Name",
width: "1fr",
type: "string",
filterable: true,
}

Limit filter operators

Use filterOperators to show only the comparisons you want, in that order. Invalid operators for the column type are ignored. Has no effect on enum columns.

TypeScript
{
accessor: "name",
label: "Full Name",
type: "string",
filterable: true,
filterOperators: ["contains", "equals"],
}

Enum filters

Enum columns use a checkbox picker from enumOptions. With more than 10 options, a search input appears automatically.

TypeScript
{
accessor: "status",
label: "Status",
type: "enum",
filterable: true,
enumOptions: [
{ label: "Active", value: "active" },
{ label: "Inactive", value: "inactive" },
{ label: "Pending", value: "pending" },
],
}

External / server filtering

Set externalFilterHandling and handle onFilterChange — the table keeps filter UI while you supply pre-filtered rows.

React TSX
<SimpleTable
externalFilterHandling
columns={columns}
rows={filteredRows}
onFilterChange={(filters) => {
// fetch or filter filteredRows from filters
}}
/>

Example

External filtering example

Filtering is handled outside the table; filter controls still update.

External Filter Status: No filters applied

Props

Column Filtering Configuration

PropertyRequiredDescriptionExample
ColumnDef.filterable
boolean
Optional
Enables the header filter control for the column. Operators depend on column type.
ColumnDef.filterOperators
FilterOperator[]
Optional
Restricts which operators appear (in this order). Only valid for the column type. No effect on enum columns.
Optional
Fires when active filters change. Keys are accessors; values are FilterCondition.
externalFilterHandling
boolean
Optional
Disables internal filtering. Provide already-filtered rows (e.g. from your API).