Compatibility Matrix

This matrix labels each Supabase-shaped API by how faithfully Fakebase reproduces it. Statuses map directly to the CapabilityStatus enum in @byronwade/core:

LabelMeaning
ExactBehavior matches Supabase for documented cases.
CloseMatches in practice; minor edge-case differences.
PartialImplemented with known, documented limitations.
UnsupportedCapability-gated — throws CapabilityError. Never silently faked.

Anything labeled Partial or Unsupported must be validated against real Supabase before production. Run fakebase verify supabase and fakebase doctor.

Database — query builder (from())

MethodStatusNotes
select(columns)ExactColumn projection; * supported.
insert(values)ExactDoes not return rows unless chained with .select().
update(values)ExactApplies after filters; returns rows only with .select().
upsert(values)CloseConflict target inferred from primary key.
delete()ExactReturns rows only with .select().
eq / neq / gt / gte / lt / lteExactScalar comparisons.
like / ilikeExact%/_ wildcards; ilike is case-insensitive.
isExactnull / boolean checks.
inExactMembership over an array.
contains / containedBy / overlapsCloseArray/JSON containment evaluated in JS.
match(query)ExactShorthand for multiple eq.
not(column, op, value)CloseNegation of supported operators.
or(filters)PartialAccepts PostgREST-style filter strings; complex nested grammar is limited.
filter(column, op, value)CloseGeneric operator escape hatch.
order(column, options)Exactascending + nullsFirst.
limit(count)Exact
range(from, to)Exact0-based and inclusive, matching Supabase.
single()ExactErrors unless exactly one row.
maybeSingle()ExactErrors if more than one row.
csv()CloseSerializes the result set to CSV.
abortSignal(signal)CloseCooperative cancellation.
textSearch()UnsupportedFull-text search is not implemented.
explain()UnsupportedNo query planner to introspect.
rpc(fn, args)PartialCalls a locally registered JS function; PL/pgSQL is not executed.

Auth (supabase.auth)

MethodStatusNotes
signUpCloseOptional email-confirmation toggle; password stored as a dev hash.
signInWithPasswordCloseReturns { data: { user, session }, error }.
signInWithOtp / verifyOtpPartialOTP delivered to the local inbox, not real email/SMS.
getSession / getUserExact
setSessionClose
exchangeCodeForSessionPartialLocal PKCE-shaped code exchange.
signOutExact
onAuthStateChangeCloseIn-process subscription.
admin.listUsers / createUser / updateUser / deleteUserPartialLocal user store only.
signInWithOAuth / SSO / Web3UnsupportedNo external identity provider.
mfa.* / passkeys / identity linkingUnsupportedCapability-gated.

Storage (supabase.storage)

MethodStatusNotes
createBucket / getBucket / updateBucket / deleteBucket / listBucketsCloseMetadata stored locally.
from(bucket).upload / updateCloseBytes written under .fakebase/storage/<bucket>/.
from(bucket).downloadCloseReturns a Blob.
from(bucket).listCloseFolder rows have null metadata, like Supabase.
from(bucket).removeExact
from(bucket).move / copyClose
from(bucket).infoClose
getPublicUrlCloseBuilds a URL; does not validate bucket publicity (matches Supabase).
createSignedUrlPartialDeterministic local token; not a CDN-signed URL.
createSignedUploadUrlPartialLocal token only.

Realtime (supabase.channel)

FeatureStatusNotes
BroadcastCloseIn-process pub/sub; optional local WebSocket bridge for multi-tab.
Postgres changesCloseEmitted from the mutation commit pipeline.
PresencePartialTTL heartbeats; best-effort, not for high-frequency updates.

Functions (supabase.functions)

FeatureStatusNotes
invoke(name, options)PartialRuns a locally registered JS handler.
Deno edge runtime / global routingUnsupportedUse Next.js Route Handlers locally.

Migrations, types, and roles

FeatureStatusNotes
Schema diff → SQLClosefakebase migrate diff / export.
supabase/seed.sql exportClosefakebase seed export.
Schema-driven fake dataClosefakebase seed gen / seedClient — FK-correct, deterministic. See seeding.
database.types.ts generationCloseRow / Insert / Update + Tables<> helpers.
Roles anon / authenticated / service_rolePartialservice_role bypasses the policy engine.
RLS USING / WITH CHECK / default-denyPartialJavaScript predicate approximation.
Permissive vs restrictive compositionPartialApproximated.
SECURITY DEFINER, planner-sensitive policies, triggers, extensionsUnsupportedNot reproduced.

Platform features (stub / export-only)

FeatureStatusNotes
Backups / PITRStubUse fakebase snapshot save/restore for local snapshots.
Vector / pgvectorUnsupportedNot exposed by the adapters yet; @byronwade/adapter-pglite (Postgres-in-WASM) is the natural home for it.
pg_cron / pg_net / pg_graphqlUnsupportedCapability-gated.