Machine-translated draft — terminology + flow still being reviewed.

Keel Go

Keel’s free tester app — the Expo Go equivalent for the China-friendly RN platform. Install once on your phone; scan a QR (or paste a URL) to load any Keel-published bundle into a real KeelView for live preview.

What it is

A thin, single-purpose RN app that embeds the same native binary the user-facing host shells use:

  • iOS: keel/build/ios/Keel.xcframework (built by packaging/build-ios.sh)
  • Android: keel/build/android/keel-sdk.aar (built by packaging/build-android.sh)

No per-bundle native compilation — Keel Go ships with whatever Keel modules are declared in its own package.json at build time. Bundles that only use those modules work out of the box; bundles needing modules not in Keel Go’s binary need a Dev Client (their own re-linked tester app).

What it is NOT

  • Not a wrapper for arbitrary RN apps — only Keel-shaped bundles (Hermes bytecode + manifest) work.
  • Not a code editor — that’s Fabric / Mortar’s job.
  • Not a debugger — for that, run keel start locally and use the RN Devtools.

Architecture

┌────────────────────────────────────────────────┐
│ Keel Go                                         │
│ ┌────────────────────────────────────────────┐ │
│ │ HomeScreen                                  │ │
│ │   - QR scanner                              │ │
│ │   - URL paste field                         │ │
│ │   - Recent bundles list                     │ │
│ └─────────────────┬──────────────────────────┘ │
│                   │ navigates to URL           │
│ ┌─────────────────▼──────────────────────────┐ │
│ │ PreviewScreen                               │ │
│ │   - native <KeelView bundleURL={url} />     │ │
│ └────────────────────────────────────────────┘ │
└────────────────────────────────────────────────┘
              ↓ embeds (same binary as host shells)
   Keel.xcframework / keel-sdk.aar

Distribution

Submit drivers (in keel/cloud/internal/submit/drivers/) publish to:

  • 🇺🇸 / 🌍 Apple App Store (ios_appstore) + Google Play (android_googleplay)
  • 🇨🇳 Huawei / Xiaomi / OPPO / vivo / Tencent MyApp

End users install once + reuse across every project.

Three UI implementations

Source lives at keel/go/ with three parallel UI impls — all load the same Keel.xcframework / keel-sdk.aar binary and route to the same KeelView, so the user experience is identical:

  • src/React Native JS UI (dogfoods Keel itself; default)
  • ios/KeelGo/Native iOS Swift / SwiftUI (no RN runtime at boot)
  • android/app/src/main/java/com/keel/go/Native Android Kotlin / Compose

The official release uses one; the others stay as reference implementations for community forks.

Local build

Android

cd keel/go/android
echo "sdk.dir=$ANDROID_HOME" > local.properties  # one-time
cp ../../../build/android/keel-sdk.aar app/libs/  # built by build-android.sh
gradle :app:assembleDebug

iOS

cd keel/go/ios
brew install xcodegen           # one-time
gem install cocoapods           # one-time

(cd ../../.. && ./modules-core/packaging/build-ios.sh)   # build the SDK first
cp ../../../build/ios/Keel.podspec .

xcodegen generate
pod install
open KeelGo.xcworkspace

See packaging/build-keel-go.sh for the release pipeline.