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:

  1. Web UI — your miniapp in a WebView
  2. @mobyapps/sdk — the moby.* APIs used by miniapps
  3. @mobyapps/bridge — JSON messages between web and native (api_group + action)
  4. 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 chrome
  • moby.geo — location
  • moby.nfc / moby.ndef — NFC
  • moby.barcode — scanning
  • moby.files — file access
  • moby.sqlite — on-device database
  • moby.browser / moby.pages / moby.miniapps — navigation and other miniapps
  • moby.user / moby.id — identity
  • moby.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.

  1. Native loads the splash HTML from disk, either from an embedded splash.zip or from the boot archive.
  2. Native reports progress through window.splash.update(...); the splash confirms it with splash.complete(id).
  3. 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

PackageUse when
@mobyapps/bridgeLow-level native messages
@mobyapps/sdkDay-to-day miniapp APIs (moby.*)
@mobyapps/omapiSecure Element / OMAPI
@mobyapps/splashStartup splash only

The toolchain includes @mobyapps/create-miniapp, @mobyapps/create-splash, and build helpers for creating and uploading zips.

Next steps

  1. How to start — recommended order of guides
  2. Install @mobyapps packages — registry and dependencies
  3. Create a miniapp or Create a splash