{"record":{"id":"210787cde3df9a3c","repo":"refinedev/refine","slug":"operator-operator-is-not-supported-for-the-airt","errorCode":null,"errorMessage":"Operator ${operator} is not supported for the Airtable data provider","messagePattern":"Operator (.+?) is not supported for the Airtable data provider","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/airtable/src/utils/generateLogicalFilterFormula.ts","lineNumber":43,"sourceCode":"    const mappedOperator = {\n      contains: \"!=\",\n      ncontains: \"=\",\n    } as const;\n\n    const find = [\"FIND\", [\"LOWER\", value], [\"LOWER\", { field }]] as Formula;\n\n    return [mappedOperator[operator], find, 0];\n  }\n\n  if (operator === \"null\") {\n    return [\"=\", { field }, [\"BLANK\"]];\n  }\n\n  if (operator === \"nnull\") {\n    return [\"!=\", { field }, [\"BLANK\"]];\n  }\n\n  throw Error(\n    `Operator ${operator} is not supported for the Airtable data provider`,\n  );\n};\n","sourceCodeStart":25,"sourceCodeEnd":47,"githubUrl":"https://github.com/refinedev/refine/blob/779d52a20e29b0307ac0df04d135beba434370dc/packages/airtable/src/utils/generateLogicalFilterFormula.ts#L25-L47","documentation":"Airtable formula generation supports only a subset of refine filter operators; `generateLogicalFilterFormula` throws when it encounters an operator it cannot translate (it handles eq/neq/in/nin/contains/ncontains/null/nnull etc., but not e.g. lt/gt/between/startswith on all paths). The thrown Error names the unsupported operator.","triggerScenarios":"Passing a filter with an operator outside the supported set to an Airtable-backed resource — e.g. `{ field: 'price', operator: 'gt', value: 100 }` or `between`/`gte`/`lte`/`startswith` via useTable filters or permanentFilter.","commonSituations":"Reusing filter UI/config from a REST or Strapi provider app; users picking date-range or numeric comparisons in a table filter dropdown wired to all refine operators.","solutions":["Restrict the filter dropdown to operators Airtable supports (eq, ne, in, nin, contains, ncontains, null, nnull)","Precompute a computed field/formula column in Airtable and filter on it with a supported operator","Handle unsupported operators client-side by post-filtering the returned records"],"exampleFix":"// before\nfilters: [{ field: 'price', operator: 'gt', value: 100 }]\n// after — filter on a precomputed boolean field\nfilters: [{ field: 'isExpensive', operator: 'eq', value: true }]","handlingStrategy":"validation","validationCode":"const supported = ['eq','ne','in','nin','contains','ncontains','null','nnull'];\nif (!supported.includes(filter.operator)) {\n  throw new Error(`Airtable does not support \"+filter.operator+\" — adjust the filter`);\n}","typeGuard":"const isSupportedAirtableOperator = (op: string): op is 'eq'|'ne'|'in'|'nin'|'contains'|'ncontains'|'null'|'nnull' =>\n  ['eq','ne','in','nin','contains','ncontains','null','nnull'].includes(op);","tryCatchPattern":"try {\n  formula = generateLogicalFilterFormula(operator, field, value);\n} catch (e) {\n  if (/not supported/.test((e as Error).message)) useClientSideFilter();\n  else throw e;\n}","preventionTips":["Limit filter operator options in UI to what the provider supports","Write a unit test enumerating your app's operators against provider support"],"tags":["airtable","filters","operator-not-supported","data-provider","refine"],"backgroundTag":"unsupported-filter-operator","analyzedSha":"779d52a20e29b0307ac0df04d135beba434370dc","analyzedAt":"2026-08-27T11:15:25.854Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}