{"record":{"id":"da18d574a32dadf3","repo":"refinedev/refine","slug":"not-implemented-on-refine-supabase-data-provider","errorCode":null,"errorMessage":"Not implemented on refine-supabase data provider.","messagePattern":"Not implemented on refine-supabase data provider\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"warning","filePath":"packages/supabase/src/dataProvider/index.ts","lineNumber":257,"sourceCode":"            query.match({ id });\n          }\n\n          const { data, error } = await query;\n          if (error) {\n            return handleError(error);\n          }\n\n          return (data || [])[0] as any;\n        }),\n      );\n\n      return {\n        data: response,\n      };\n    },\n\n    getApiUrl: () => {\n      throw Error(\"Not implemented on refine-supabase data provider.\");\n    },\n\n    custom: () => {\n      throw Error(\"Not implemented on refine-supabase data provider.\");\n    },\n  };\n};\n","sourceCodeStart":239,"sourceCodeEnd":265,"githubUrl":"https://github.com/refinedev/refine/blob/779d52a20e29b0307ac0df04d135beba434370dc/packages/supabase/src/dataProvider/index.ts#L239-L265","documentation":"The Supabase data provider intentionally does not implement getApiUrl() because access goes through the supabase-js client, not a raw REST base URL. Calling it throws to make the gap explicit rather than returning a misleading value.","triggerScenarios":"Calling dataProvider.getApiUrl() from @refinedev/supabase, e.g. when porting code from the Strapi/REST providers or when a helper assumes a REST API base.","commonSituations":"Migrating a Refine app from a REST provider to Supabase and forgetting to remove getApiUrl() calls; third-party hooks that call getApiUrl() internally.","solutions":["Remove the getApiUrl() call; talk to Supabase via the supabase-js client or your stored SUPABASE_URL","If code requires getApiUrl, override it by spreading the provider and returning your Supabase REST URL (https://<project>.supabase.co/rest/v1)"],"exampleFix":"// before\nconst url = dataProvider.getApiUrl(); // throws\n\n// after\nconst url = \"https://xyzcompany.supabase.co/rest/v1\";\n// or:\nconst provider = { ...supabaseDataProvider, getApiUrl: () => \"https://xyzcompany.supabase.co/rest/v1\" };","handlingStrategy":"fallback","validationCode":"const apiUrl = \"getApiUrl\" in dataProvider ? (() => { try { return dataProvider.getApiUrl(); } catch { return SUPABASE_URL; } })() : SUPABASE_URL;","typeGuard":null,"tryCatchPattern":"try { dataProvider.getApiUrl(); } catch (e) { if (String(e).includes(\"Not implemented\")) { /* use SUPABASE_URL or rest endpoint */ } else throw e; }","preventionTips":["Store the Supabase project URL in config and reference it directly","Wrap the provider once at app setup to implement missing interface methods"],"tags":["refine","supabase","data-provider","not-implemented"],"backgroundTag":"unsupported-operation","analyzedSha":"779d52a20e29b0307ac0df04d135beba434370dc","analyzedAt":"2026-08-27T11:15:25.854Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}