Loops AI Docs

Overview

Embed the Loops AI assistant in any mobile app without our SDK — load the chat in a WebView and wire the message bridge yourself.

The iOS and Android SDKs are the fastest way to put the assistant inside a native app. This section is for every case where adding them is not an option — React Native, Flutter, Cordova / Capacitor, Kotlin Multiplatform, Unity, an in-house framework, or simply a strict dependency policy.

You do not need the SDK. The assistant is a web runtime, and both SDKs are thin native containers around it: a WebView, a message bridge, and a small session store. Any platform that can (1) display a WebView and (2) exchange strings with the page inside it can host the same runtime with the same features.

What you build

Three pieces, and that is the whole integration:

  1. A WebView that loads the chat URL with mode=sdk.
  2. A bridge object named loopsAIBridge that the page can call to send you messages, plus a way for you to push messages back into the page.
  3. Your own handling of the two messages that need a native decision: closeChat (dismiss the container) and openExternalUrl (route a product link).

Everything else — the conversation UI, product carousels, size flows, virtual try-on, localization, theming — is already inside the runtime and driven by your agent's configuration.

Two transports, one contract

The action names and payloads are identical in both cases. Only the envelope and the delivery mechanism differ.

Your app is…TransportPage isRead next
Native (Swift, Kotlin, React Native, Flutter, Unity…)Native WebView + a loopsAIBridge objectThe top-level document in the WebViewQuickstart
A web app inside a container (Capacitor, Cordova, Ionic, an in-app HTML screen)Real <iframe> + window.postMessageAn iframe inside your own pageThe message bridge → iframe transport

Pick the native transport when you can

A native WebView gives you real navigation control (a product tap becomes a native route push) and one less layer. Use the iframe transport when your app's screen is already a web page and you cannot register a native message handler.

Feature parity with the SDK

Everything the runtime does is available. What you give up is the native convenience the SDKs add on top.

CapabilityWithout the SDKNotes
Chat, product carousels, recommendations✅ IdenticalComes from the runtime
Size suggestion, body-type size guide✅ IdenticalFlow modes
Virtual try-on, voice mode✅ IdenticalNeeds camera / mic permission wiring
Product & user context✅ IdenticalSent over the bridge
Product tap → your native product screen✅ IdenticalLinks & navigation
Canonical analytics events✅ Forwarded to youYou route them to your provider
Session survives app relaunch⚠️ You own itPersist two ids — Session
Warm WebView for instant reopen⚠️ You own itKeep your WebView alive instead of recreating it
Typed native API, delegates, availability check❌You call the bridge directly

Nothing is gated

There is no separate "custom integration" plan, API key, or client secret. The runtime is addressed by your public agentId in the URL path, and access is resolved server-side per agent. Your integration uses the same endpoint the SDKs use.

Start here

Already on iOS or Android native?

Use the SDKs — they ship the container, the session store, the warm-WebView pool, and typed callbacks. This section describes what they do internally, so it is also a useful reference if you are debugging an SDK integration.

On this page