Skip to content

Adapter capabilities

This page reconciles the per-adapter compatibility references into one matrix. It is a snapshot of what each protocol front door translates today, not a roadmap. Where a per-adapter page states a boundary, that page is the source of truth; the cells here summarize and link to it.

Each capability cell carries one status:

  • Supported — implemented and exercised on that adapter.
  • Supported with caveats — works within a bounded surface; the owning reference page states the boundary.
  • Not translated — the adapter exposes no surface for the capability; requests for it are rejected or have no equivalent.

Rows one through six carry a status. Rows seven through ten describe the mechanism rather than grade it.

Convex and Native are data-and-compute surfaces. Cloud Functions is a compute-and-trigger surface: its data-capability cells read against the narrow firebase-admin slice callable from inside a function. Firestore, MongoDB, and DynamoDB are data surfaces.

CapabilityConvexFirestoreCloud FunctionsMongoDBDynamoDBNative
Point CRUDSupportedSupportedSupported with caveatsSupportedSupportedSupported
Explicit queries + paginationSupportedSupported with caveatsNot translatedSupported with caveatsSupportedSupported
Secondary / composite indexesSupportedNot translatedNot translatedSupportedSupportedSupported
Live subscriptions / change eventsSupportedSupportedSupportedNot translatedSupportedSupported
Multi-document transactions / atomic batchSupported with caveatsSupportedNot translatedSupported with caveatsSupportedSupported with caveats
Schema validationSupportedNot translatedNot translatedNot translatedNot translatedSupported
Auth mechanismOIDC / custom JWTBearer-token app authService principal; callable authSCRAM-SHA-256SigV4 signed requestsLocal admin token
Tenant binding model/convex/{tenantId} path(default) database; auth-scopedfirebase.json app rootDatabase name = tenantAccess key → one tenant/api/tenants/{id} path
Default listener / portMain listener (:8080)Main listener (:8080)Main listener (:8080)127.0.0.1:27017127.0.0.1:8000Main listener (:8080) + /ws
Notable hard limitsNo file storage, search, or crons(default) database only; no offline persistenceFirestore document triggers onlySix filter operators; 16 MiB document; loopback onlyNo provisioned capacity; single stream shardLoopback default; admin token required
  • Point CRUD. Convex omits db.replace. Cloud Functions CRUD is the covered firebase-admin DocumentReference get / set / update / delete slice.
  • Explicit queries + pagination. Firestore covers the implemented query subset with cursors; nested field-path helpers stay narrow. MongoDB find accepts only eq, ne, gt, gte, lt, and lte and paginates through getMore. Native exposes query and cursor-paginated query endpoints. Cloud Functions exposes no query builder in its covered admin slice.
  • Secondary / composite indexes. Convex declares indexes in the table schema. MongoDB exposes createIndexes, dropIndexes, and listIndexes. DynamoDB supports local and global secondary indexes. Native maintains single-field and composite indexes atomically with writes. Firestore and Cloud Functions document no index-declaration surface.
  • Live subscriptions / change events. Convex and Native serve reactive query subscriptions over WebSocket. Firestore onSnapshot runs over the WebSocket Listen channel. Cloud Functions delivers Firestore document triggers. DynamoDB Streams expose change records. The MongoDB endpoint rejects $changeStream with CommandNotSupported.
  • Multi-document transactions / atomic batch. Firestore covers writeBatch and runTransaction. MongoDB runs multi-statement transactions scoped to one database, failing a conflicting commit with WriteConflict. DynamoDB TransactWriteItems commits all items or none. Convex applies each mutation’s writes as one atomic set with no interactive transaction API. The Native HTTP surface applies each mutation atomically with its index effects but exposes no multi-document batch endpoint.
  • Schema validation. Convex and Native offer optional per-table schema validation; a table without a schema accepts any document. Firestore, MongoDB, and DynamoDB document no document-validation surface (DynamoDB defines key schema only).

Three further surfaces ship today and are documented separately. They are early, bounded surfaces; the notes below describe only what exists now.

  • S3. An S3-compatible HTTP listener served by default on 127.0.0.1:9000 (--no-s3 disables it), authenticated with per-tenant signed access keys. See S3 compatibility.
  • Cloudflare. Cloudflare-compatible routes and a binding registry mounted on the main listener by default (--no-cloudflare disables them), including a KV binding surface. See Cloudflare compatibility.
  • RESP KV. A Redis-serialization-protocol key-value listener started with nimbus kv, bound to loopback 127.0.0.1:6380, with RESP AUTH and a single bound tenant. See KV compatibility.