{"record":{"id":"3b27877ab8de1268","repo":"TanStack/table","slug":"filterfn-filterfnname-auto-for-column-co","errorCode":null,"errorMessage":"filterFn '${filterFnName}' (auto) for column '${column.id}' is not registered","messagePattern":"filterFn '(.+?)' \\(auto\\) for column '(.+?)' is not registered","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/table-core/src/features/column-filtering/columnFilteringFeature.utils.ts","lineNumber":89,"sourceCode":"    filterFnName = 'includesString'\n  } else if (typeof value === 'number') {\n    filterFnName = 'inNumberRange'\n  } else if (typeof value === 'boolean') {\n    filterFnName = 'equals'\n  } else if (Array.isArray(value)) {\n    filterFnName = 'arrIncludes'\n  } else if (Object.prototype.toString.call(value) === '[object Date]') {\n    filterFnName = 'inDateRange'\n  } else if (value !== null && typeof value === 'object') {\n    filterFnName = 'equals'\n  } else {\n    filterFnName = 'weakEquals'\n  }\n\n  const filterFn = filterFns?.[filterFnName]\n\n  if (process.env.NODE_ENV === 'development' && !filterFn) {\n    console.warn(\n      `filterFn '${filterFnName}' (auto) for column '${column.id}' is not registered`,\n    )\n  }\n\n  return filterFn\n}\n\n/**\n * Resolves the filter function configured for a column.\n *\n * Function-valued `columnDef.filterFn` is returned directly, `'auto'` delegates\n * to `column_getAutoFilterFn`, and string values are looked up in the table's\n * filter function registry.\n *\n * @example\n * ```ts\n * const filterFn = column_getFilterFn(column)\n * ```","sourceCodeStart":71,"sourceCodeEnd":107,"githubUrl":"https://github.com/TanStack/table/blob/d01c01bedbab0ff6c2641f18b2fc9a11545d9bf6/packages/table-core/src/features/column-filtering/columnFilteringFeature.utils.ts#L71-L107","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nconst filterFns = { myCustom: fn }\n\n// after\nimport { builtInFilterFns } from '@tanstack/table-core'\nconst filterFns = { ...builtInFilterFns, myCustom: fn }","handlingStrategy":"validation","validationCode":"function assertAutoFilterFnsRegistered(filterFns: Record<string, FilterFn<any>>, required = ['includesString', 'weakEquals', 'inNumberRange', 'equalsString', 'arrIncludes', 'arrIncludesSome']) {\n  const missing = required.filter((name) => !(name in filterFns))\n  if (missing.length) throw new Error(`filterFns missing required for auto resolution: ${missing.join(', ')}`)\n}","typeGuard":null,"tryCatchPattern":"try {\n  const fn = column.getAutoFilterFn()\n  if (!fn) throw new Error(`No auto filterFn resolvable for column '${column.id}'`)\n} catch (e) {\n  console.warn(e)\n}","preventionTips":["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."],"tags":["filtering","filterfn","registration","columns"],"backgroundTag":"filter-fn-not-registered","analyzedSha":"d01c01bedbab0ff6c2641f18b2fc9a11545d9bf6","analyzedAt":"2026-08-28T21:52:44.679Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}