Search Documentation
Search guides, functions, classes, interfaces, and more
What is MobyApps?
MobyApps is a platform for miniapps — web interfaces that run inside a native iOS or Android app and access device capabilities through a typed JSON bridge.
Build with the web stack you already know. The host app handles permissions, Secure Element access, downloads, and lifecycle, while each miniapp can be updated independently — without waiting for a full native release.
Miniapps
A miniapp is a web app that runs in a native WebView. The host loads your HTML, JavaScript, and CSS, so you are free to choose the UI framework.
- Use React, Vue, vanilla JavaScript, or any other stack that produces a WebView-ready build.
- Keep UI and business logic in the web layer. Access NFC, biometrics, files, themes, navigation, and other device features through the bridge.
- Publish a zip build to the MobyApps backend for the host to load in its WebView.
This lets multiple teams build and release different miniapps for the same mobile app in parallel, even when they use different stacks and do not share a frontend codebase.
The guides and scaffolds use Next.js as an example. It is a starting point, not a platform limitation.
UI and native
The integration has four layers:
- Web UI — your miniapp in a WebView
@mobyapps/sdk— themoby.*APIs used by miniapps@mobyapps/bridge— JSON messages between web and native (api_group+ action)- Native host — the iOS/Android layer that provides device capabilities such as permissions, sensors, storage, Secure Element access, and downloads
Communication works both ways: a miniapp calls native code through the bridge, and the host can send events back to the WebView.
@mobyapps/sdk provides APIs for capabilities such as:
moby.app— theme, lifecycle, app chromemoby.geo— locationmoby.nfc/moby.ndef— NFCmoby.barcode— scanningmoby.files— file accessmoby.sqlite— on-device databasemoby.browser/moby.pages/moby.miniapps— navigation and other miniappsmoby.user/moby.id— identitymoby.push/moby.share/moby.haptics/moby.health— notifications, share sheet, haptics, health data
Secure Element / OMAPI support lives in a separate package: @mobyapps/omapi. It uses the same bridge pattern and provides dedicated Secure Element APIs.
Splash screens are a special case. They use only @mobyapps/splash, without the SDK or bridge, so they stay small and can load from disk before the boot miniapp starts.
Quick updates at cold start
At launch, the host can display a splash while it checks for and downloads miniapp updates. It then opens the boot miniapp.
- Native loads the splash HTML from disk, either from an embedded
splash.zipor from the boot archive. - Native reports progress through
window.splash.update(...); the splash confirms it withsplash.complete(id). - The boot miniapp opens, using the latest published zip when an update is available.
This gives you web-speed iteration: publish a new miniapp or splash zip, and the host can retrieve it at the next cold start instead of requiring a new native build for every UI change.
Install @mobyapps/bridge, @mobyapps/sdk, and related packages from npm.mobyapps.dev.
Packages at a glance
| Package | Use when |
|---|---|
@mobyapps/bridge | Low-level native messages |
@mobyapps/sdk | Day-to-day miniapp APIs (moby.*) |
@mobyapps/omapi | Secure Element / OMAPI |
@mobyapps/splash | Startup splash only |
The toolchain includes @mobyapps/create-miniapp, @mobyapps/create-splash, and build helpers for creating and uploading zips.
Next steps
- How to start — recommended order of guides
- Install @mobyapps packages — registry and dependencies
- Create a miniapp or Create a splash