TanStack/table · warning
filterFn '${filterFnName}' (auto) for column '${column.id}'
Error message
filterFn '${filterFnName}' (auto) for column '${column.id}' is not registered What it means
When a column's filterFn is 'auto' (or unspecified), column.getAutoFilterFn picks a built-in filter function based on the inferred data type. If the resolved filterFn name is not present in the registered filterFns map, it warns that the auto-selected filter function is unregistered and returns undefined.
Source
Thrown at packages/table-core/src/features/column-filtering/columnFilteringFeature.utils.ts:89
filterFnName = 'includesString'
} else if (typeof value === 'number') {
filterFnName = 'inNumberRange'
} else if (typeof value === 'boolean') {
filterFnName = 'equals'
} else if (Array.isArray(value)) {
filterFnName = 'arrIncludes'
} else if (Object.prototype.toString.call(value) === '[object Date]') {
filterFnName = 'inDateRange'
} else if (value !== null && typeof value === 'object') {
filterFnName = 'equals'
} else {
filterFnName = 'weakEquals'
}
const filterFn = filterFns?.[filterFnName]
if (process.env.NODE_ENV === 'development' && !filterFn) {
console.warn(
`filterFn '${filterFnName}' (auto) for column '${column.id}' is not registered`,
)
}
return filterFn
}
/**
* Resolves the filter function configured for a column.
*
* Function-valued `columnDef.filterFn` is returned directly, `'auto'` delegates
* to `column_getAutoFilterFn`, and string values are looked up in the table's
* filter function registry.
*
* @example
* ```ts
* const filterFn = column_getFilterFn(column)
* ```View on GitHub (pinned to d01c01bedb)
Solutions
- Register the missing filter function (e.g. spread built-in filterFns into your filterFns map).
- Set an explicit filterFn on the column that exists in your registry instead of relying on 'auto'.
- Check the registry keys against the resolved filterFnName in the warning and fix the naming mismatch.
- If using a custom auto-resolution, ensure every name it can return is registered.
Example fix
// before
const filterFns = { myCustom: fn }
// after
import { builtInFilterFns } from '@tanstack/table-core'
const filterFns = { ...builtInFilterFns, myCustom: fn } Defensive patterns
Strategy: validation
Validate before calling
function assertAutoFilterFnsRegistered(filterFns: Record<string, FilterFn<any>>, required = ['includesString', 'weakEquals', 'inNumberRange', 'equalsString', 'arrIncludes', 'arrIncludesSome']) {
const missing = required.filter((name) => !(name in filterFns))
if (missing.length) throw new Error(`filterFns missing required for auto resolution: ${missing.join(', ')}`)
} Try / catch
try {
const fn = column.getAutoFilterFn()
if (!fn) throw new Error(`No auto filterFn resolvable for column '${column.id}'`)
} catch (e) {
console.warn(e)
} Prevention
- Always spread built-in filterFns into any custom filterFns registry.
- Prefer setting an explicit, registered filterFn per column over relying on 'auto'.
- Keep filter registration in one module imported by the table factory.
- Write a test that resolves getAutoFilterFn() for every column definition.
When it happens
Trigger: Using a custom filterFns registry that omits a built-in name (e.g. 'weakEquals', 'includesString') that getAutoFilterFn tries to select; passing filterFn: 'auto' while registering only custom filter functions; overriding built-in filterFns with an incomplete set.
Common situations: Building a custom filtering setup and forgetting to spread the built-in filterFns; tree-shaken or customized feature setup removing built-in filter functions; typo when registering filter functions so names don't match.
Related errors
- filterFn '${String(column.columnDef.filterFn)}' for column '
- coreColumnsFeature require an id when using an accessorFn
- coreColumnsFeature require an id when using a non-string hea
- "${key}" in deeply nested key "${accessorKey}" returned unde
- [Table] Column with id '${columnId}' does not exist.
AI-assisted analysis of TanStack/table@d01c01bedb (2026-08-28).
Data as JSON: /api/errors/3b27877ab8de1268.
Report an issue: GitHub.