Getting StartedFlutter 12.6.0RN v12.0.0Web v12.0.0

Welcome to Koolbase

Koolbase is Backend as a Service for the apps you actually ship. Auth, database, storage, realtime, semantic search, functions, feature flags, analytics and an offline write queue — one SDK, whether you build in Flutter, React Native or the browser.

What is Koolbase?

Koolbase gives your app a complete backend without the complexity of managing infrastructure. Register users, store data, upload files, stream live updates, deploy serverless functions, and control feature rollouts — all from a single SDK and one dashboard, across every client you ship.

One backend under every client: the same users, the same access rules, the same data, whether the request comes from a browser or a phone. Cached reads, a durable write queue and explicit conflict resolution live in the SDKs rather than in your code — and on Flutter, code push ships a fix to installed apps without waiting for store review.

The SDK initialises once with your API key. From there, every module — Koolbase.auth, Koolbase.db, Koolbase.storage, and more — is available throughout your app.

What's Included

Designer

Describe a screen and get real Flutter, wired to your collections. Press Run and the app builds and opens in a phone frame; export a project a team would keep — Riverpod, typed routes, localisation, tests.

Authentication

Email + password, OAuth (Google + Apple), and phone + OTP. JWT sessions scoped per environment, pluggable token storage, typed errors, and an onAuthStateChange listener.

Database

Flexible JSONB collections with access rules — public, authenticated, owner, scoped, or conditional. Realtime subscriptions, relational populate, and offline-first caching included.

Search — Semantic, Lexical, Hybrid

Three retrieval modes from one endpoint. Auto-embed records via Gemini or OpenAI; auto-index for BM25 on the same write. Pick semantic (HNSW), lexical (BM25), or hybrid (RRF-fused) — all sub-millisecond.

Storage

Upload files directly from the device to Cloudflare R2 using presigned URLs. Per-bucket size and MIME-type limits, custom key/value metadata on every object, and typed errors out of the box.

Realtime

WebSocket subscriptions for live data. Records stream instantly when created, updated, or deleted.

Functions

Deploy serverless functions in TypeScript (Deno) or Dart. Invoke via HTTP or bind to DB events. Retry + dead-letter queue built in.

Feature Flags

Toggle features without redeploying. Percentage-based rollouts and targeted releases.

Remote Config

Update strings, numbers, booleans, and JSON from the dashboard. No app release required.

Version Enforcement

Force or soft-prompt users to update. Set a minimum version per environment with a custom message.

Code Push & OTA

Two tiers: runtime bundles push config, flags, and server-driven UI; VM-level code push ships real Dart code updates over the air on Android and iOS — signed, verified, applied before the first frame, and crash-reverting. Versioned and rolled back in one click.

Analytics

Track screen views, custom events, DAU/WAU/MAU, funnels, and retention cohorts — no third-party SDK needed.

Cloud Messaging

Send push notifications via FCM. Register device tokens, broadcast to all users, and track delivery from the dashboard.

How it works

01

Create a project and environments

Sign up, create a project, and set up your environments (production, staging, development). Each environment gets its own public API key.

02

Add the SDK

Flutter: koolbase_flutter in your pubspec. React Native or the browser: npm install @koolbase/react-native or @koolbase/js. Call Koolbase.initialize once with your public key and the whole platform is available.

03

Build with the full platform

Use Koolbase.auth for users, Koolbase.db for data, Koolbase.storage for files and Koolbase.realtime for live updates — the same surface on every client. On Flutter you can also describe a screen in the Designer and get code wired to your collections.

04

Control from the dashboard

Toggle feature flags, update remote config, enforce minimum versions, deploy functions, and manage users — all from app.koolbase.com.

Platform Release History

Every shipped release across the Koolbase platform — SDKs, server, dashboard, and tools. Newest first.

Sep 8, 2026Flutterv12.6.0Flutter Web — auth, database, storage, realtime and functions run in the browser. Code push and offline sync are absent there and say so; a project’s Trusted Origins now govern the API as well as storage.latest
Sep 8, 2026Flutterv11.6.0KoolbaseCollectionList.visible — filter the loaded records before both the empty decision and the rows. Search-as-you-type in the Designer is built on it.
Sep 4, 2026Flutterv11.5.0initializeForTesting() — widget tests can build Koolbase screens without a network or a platform channel.
Aug 27, 2026Flutterv11.3.0KoolbaseError — one canonical error type across every surface. Catch anything, call KoolbaseError.from(e), branch on code. Found by measuring: four places in 14,732 lines caught a transport failure, so a read losing connection threw a raw SocketException at the caller
Aug 24, 2026Flutterv11.2.1Analytics events carry the signed-in user automatically. identify() existed but nothing errored when an app never called it — found in a real project as 53 events, 8 users, zero events carrying a user id
Aug 20, 2026Flutterv11.2.0Koolbase.fiscal — authority-grade sales recording. submit() records and fiscalizes; status() returns the certification the tax authority granted. Live for Ghana GRA E-VAT, with a reference adapter running the same machine anywhere an integration does not exist yet
Aug 16, 2026Flutterv11.1.1Offline writes refuse when signed out instead of enqueueing under a null owner — a null-owner row is invisible to every per-user read and replay, so the write neither failed nor succeeded. Found on device as a parked ticket that never reached the server
Aug 14, 2026Flutterv11.1.0get(fresh: true) — skip the cache and take the network answer, for read-after-write, reconciliation, and projections that must only ingest server-provenance data. A fresh read still updates the cache
Aug 12, 2026Flutterv11.0.0BREAKING — signUp returns SignUpResult. A project can require a verified contact channel before any session is issued; when it is on, signup creates the account and returns NO session. The old return type could not express that
Aug 09, 2026Flutterv10.5.0KoolbaseCollectionGrid — the same collection laid out as a grid. Shares KoolbaseCollectionController with the list, so stale-while-revalidate, pull-to-refresh and the loading/empty/error slots behave identically
Aug 07, 2026Flutterv10.4.0Streams behave the way they read — two gaps that both surfaced as "the UI just does not update". Nothing errored, nothing logged, the data was simply absent; both found by building an app against the SDK rather than reading it
Aug 05, 2026Flutterv10.3.0Behavioral widgets — KoolbaseAuthGate (auth branching with restore-first, no login flash) and KoolbaseCollectionList (stale-while-revalidate handled, stale beats blank) over a separable data controller. Plus: query refresh streams now keyed by query identity, not collection name
Aug 04, 2026CLIMCP schema layerkoolbase_describe_project, koolbase_get_collection, and koolbase_sdk_conventions — a connected agent reads your collections, access rules (six kinds, as data), unique constraints, and SDK idioms, then generates code wired to your real backend instead of a guessed one
Aug 04, 2026Flutterv12.0.0Insert-conflicts are real and resolvable — a queued insert refused as a duplicate is held like any other refusal; resolving it IS the insert retried, idempotency-keyed so a lost response can’t duplicate
Aug 03, 2026Flutterv10.1.2A refused conflict resolution now teaches the stored conflict the server’s current revision — the next attempt is conditional against reality instead of permanently replaying a stale condition
Aug 02, 2026Flutterv10.1.0 / v10.1.1The offline queue is observable — pendingWrites() and watchPendingWrites(), per-user. Signed out they throw rather than returning empty: a silent empty is indistinguishable from all-synced
Aug 01, 2026Flutterv10.0.0One exception hierarchy — every surface tells failures apart (auth, database, storage, functions) and every surface clears a rejected session. Function failures distinguish not-found, permission, validation, quota, execution
Jul 12, 2026Flutterv9.4.0iOS VM Code Push complete — over-the-air Dart updates on iOS: download, verify (Ed25519 + build_id), and apply before the app’s first frame on cold launch. Device outcome events (downloaded/activated/failed), automatic quarantine of invalid patches, crash-revert
Jul 12, 2026CLIpush-iosOne-command iOS patch publish — patch push-ios signs the KBPI, derives the release build_id from the binary, uploads and publishes. Plus koolbase whoami and auth errors that name the logged-in account
Jul 12, 2026ServerRate-limit observabilitypatch-check rate limiting now records patch_check_rate_limited events (dimension: device/ip) instead of failing silently; per-device allowance raised for integration workflows
Jul 11, 2026Flutterv9.3.0flutter_version guard on patch-check — the resolver can refuse a patch built on a different Flutter engine version; closes two cross-engine mis-serve cases. Backward-compatible
Jun 22, 2026Flutterv9.1.0VM-level Code Push — KoolbaseVmPatchClient ships real over-the-air Dart updates for Android, with signature + build_id verification and automatic crash-revert. Distinct from the v2.0.0 runtime-bundle code push
Jun 8, 2026Flutterv9.0.0Three search modes — semantic (HNSW + cosine), lexical (BM25), and hybrid (RRF-fused). New mode + minSimilarity params on searchSemantic. Auto-lexical-indexing on write, plus a lexical-backfill endpoint for existing records
Jun 8, 2026React Nativev8.0.0Three search modes — semantic, lexical, hybrid. New mode + minSimilarity options on searchSemantic. Parity release with Flutter v9.0.0
Jun 8, 2026ServerHybrid SearchPOST /search-semantic supports mode=semantic|lexical|hybrid with reciprocal-rank fusion (k=60). New POST /vector-fields/{f}/lexical-backfill endpoint. min_similarity (0..100) server-side filter for semantic and hybrid modes
Jun 8, 2026DashboardSearch Playground + Lexical BackfillSearch Playground in the Vectors section now lets you compare results across all three modes. New 📖 button in the Vector Fields modal triggers lexical backfill for pre-existing records
Jun 7, 2026Flutterv8.0.0Auto-embed via Gemini/OpenAI — searchSemantic with server-side queryText embedding, plus embedText for record backfill
Jun 7, 2026React Nativev7.0.0Auto-embed parity — searchSemantic with queryText, embedText for backfill
Jun 2026Flutterv7.0.0Semantic Search — setVector / getVector / deleteVector and searchSemantic with HNSW indexing across 384/768/1024/1536 dimensions
Jun 2026Flutterv6.5.0Object versioning — listVersions, getVersion, restoreVersion, purgeVersion, versionId in getDownloadUrl and force-purge in delete
Jun 2026Flutterv6.4.0Edge image transforms — width / height / format / quality / fit / dpr / gravity at the URL, plus named server-side presets
Jun 2026Flutterv6.3.0Public bucket CDN URLs — KoolbaseObject.r2Bucket field, stable cdn.koolbase.com URLs for objects in public buckets
May 2026Flutterv6.2.0Custom object metadata — set on upload, edit with merge semantics, typed metadata_invalid errors with structured detail
May 2026Flutterv6.1.0Bucket limits — typed exceptions for quota / file-too-large / mime-type rejections, surfaced at presign time
May 2026Flutterv6.0.0Realtime API simplified — subscribe by collection only; the project comes from your session (no more projectId argument)
May 2026Flutterv5.1.0Realtime fixed — the client now connects with the user session and streams live collection changes (was non-functional)
May 2026Flutterv5.0.0Bearer-only data-plane identity — db, storage, and functions authenticate from the verified access token (security); plus atomic db.batch() for all-or-nothing multi-op writes
Apr 2026Flutterv4.1.0Code Push mandatory bundles — force-update gating via hasMandatoryUpdate and onMandatoryUpdate
Apr 2026Flutterv4.0.0Removes the legacy OTA client and deprecated auth shims — converges on Koolbase.codePush
Mar 2026Flutterv3.3.0Typed errors — code-first exceptions across auth and database
Mar 2026Flutterv3.2.0Unique constraints — duplicate protection via KoolbaseConflictException
Mar 2026Flutterv3.1.0Database primitives — upsert and deleteWhere
Mar 2026Flutterv3.0.0Flattened record shape — $-prefixed metadata, cleaner data access
Feb 2026Flutterv2.11.0Google Sign-In — end-user OAuth via the SDK
Feb 2026Flutterv2.10.0Apple Sign-In — end-user OAuth, private relay support
Feb 2026Flutterv2.9.0Auth hardening — pluggable storage, typed errors, auth-state listener
Feb 2026Flutterv2.7.0Phone + OTP — sendOtp, verifyOtp, linkPhone via SMS providers
Jan 2026Flutterv2.6.0Logic Engine v2 — 16 operators with AND/OR grouping
Jan 2026Flutterv2.4.0Cloud Messaging — FCM token registration, send, broadcast
Jan 2026Flutterv2.3.0Analytics — DAU/WAU/MAU, events, funnels, retention
Jan 2026Flutterv2.1.0Server-Driven UI — rfw, KoolbaseDynamicScreen
Jan 2026Flutterv2.0.0Code Push — bundle cache, verifier, runtime override
Dec 2025Flutterv1.9.0Functions — Dart runtime, deploy from SDK
Dec 2025Flutterv1.8.0Offline-first — Drift, cache-first, optimistic writes
Nov 2025Flutterv1.0.0Auth, Database, Storage, Realtime, Feature Flags, Remote Config

Next Steps