For developers · Expo Go

Run xNet on your phone

A tiny mobile demo of the xNet building blocks — on-device SQLite, signed local-first changes, native-fast reads — running inside Expo Go. No App Store, no sideloading. Scan and see how little it takes.

Open the demo source

Hosted one-scan launch lands when a published Expo Go build is wired up. Until then, run it yourself below — it takes about a minute.

  1. 1

    Install Expo Go

    Grab the free Expo Go app from the App Store or Google Play. No account needed.

  2. 2

    Scan the code

    Point your camera at the QR (iOS) or scan it from inside Expo Go (Android).

  3. 3

    xNet opens

    The demo loads straight into Expo Go — no App Store review, no sideloading, no waiting.

What you're actually running

Local-first storage

Every document lives in on-device SQLite (expo-sqlite). Create data with the network off — it is already saved.

The same core as the web

The demo imports the exact @xnetjs/core, @xnetjs/data and @xnetjs/react packages the web app uses — one data contract, every platform.

Real identity, on device

A signing key is generated and held in the secure enclave (expo-secure-store); every change is signed and hash-chained.

Native-fast reads

Queries hit SQLite directly through the React hooks — no bridge round-trips, no spinner tax on scroll.

Run it yourself

Clone the repo and Expo will print its own QR — scan it with Expo Go.

# 1. get the code + deps
git clone https://github.com/crs48/xNet
cd xNet && pnpm install

# 2. start the mobile demo — scan the QR it prints
pnpm --filter xnet-mobile start

The demo lives in apps/expo. It uses only modules bundled into Expo Go (expo-sqlite, expo-secure-store, react-native-webview), so there's no custom native build to make — it just runs. Want the full app instead? Use it in your browser or download the desktop app.

This is a demo, running in Expo Go

Expo Go is Apple- and Google-approved, so it sidesteps the App Store entirely — but it's a host app, not xNet on your home screen. It's here to show, fast, how little friction there is between the xNet primitives and a working app on real hardware.