ESC
Type to search...
S
Soli Docs

Native clients

Generate thin OS shells that load your deployed Soli app and speak the native bridge — not a second UI rewrite.

For a local offline product with an embedded database, use soli desktop build instead.

End-to-end recipe

soli generate devices
soli generate app_links \
  --android-package net.example.myapp \
  --apple-app-id TEAMID.net.example.myapp
soli db:migrate up

soli generate client android --url https://app.example.com \
  --package net.example.myapp --scheme myapp
soli generate client android --fcm --url https://app.example.com \
  --package net.example.myapp --scheme myapp
soli generate client ios --url https://app.example.com \
  --bundle-id net.example.myapp --team-id TEAMID --scheme myapp
<%- csrf_meta_tag() %>
<% user_id = session_get("user_id") %>
<%- native_channel("user:#{str(user_id)}") rescue "" unless user_id.nil? %>
deliver_to_user(user.id, {
  "title": "New ping", "body": "Ana replied", "url": "/pings/3"
}, { "apns": apns_options, "fcm": fcm_options })

Generate

soli generate client <platform> [options] [folder]
FlagMeaning
--urlDeployment the WebView loads
--package / --bundle-idAndroid package or iOS bundle id
--schemeCustom URL scheme
--team-idApple team (iOS)
--fcmAndroid Gradle + Firebase template

Platforms

PlatformOutputBuild
androidNo-Gradle WebView./build.sh
android --fcmGradle + Firebaseclosed-app FCM tokens → /devices
iosXcodeGen + UIKitAPNs token POST to /devices
linuxGTK + WebKitGTKcargo build --release
windowsWebView2 (.NET 8)build on Windows

Free vs paid (Apple)

CapabilityFreePaid
Custom scheme, camera, geo, haptics, share, biometrics
APNs, Universal Links, Core NFC✅ entitlements