Skip to content

Supported platforms

Ahead clients use the native Rust engine and SQLite. Building the application package and validating it on the target platform are separate steps.

Platform Available support
macOS and Linux TypeScript on Node.js and Dart: native builds, SQLite and HTTP round-trip tests are verified
iOS Flutter native linking/build setup is available; FFI, SQLite and app-restart runtime validation is not complete
Android Runtime and device validation is not complete
Browser Native client bindings do not provide browser/WASM support
Windows Not verified

Desktop setup

Build the native libraries with bash scripts/build.sh. TypeScript uses the Node addon. Dart takes an explicit libraryPath: target/debug/libahead_dart.dylib on macOS or target/debug/libahead_dart.so on Linux. See client setup for language-specific examples.

Flutter native integration

On iOS, link the Rust static library into the application and retain the native symbols. Dart then uses DynamicLibrary.process() when libraryPath is omitted. A desktop dynamic library cannot be used as a mobile build artifact.

The repository includes a simulator integration harness. It requires Xcode and a usable installed iOS runtime:

bash integration/platform/run_ios_simulator_smoke.sh

The harness builds the native library and Flutter app, creates a disposable simulator, and checks local writes, queued mutations, close/reopen and app restart. It removes only the simulator it creates. Passing the build alone does not establish that all runtime checks pass.

Verification

bash scripts/test.sh runs the macOS/Linux host checks with real SQLite, native bindings and a disposable PostgreSQL backend. Platform-specific simulator checks run separately. See testing for the full workflow.