Lightweight libraries for integrating web2wave features into native and cross-platform mobile applications. Available across Swift, Kotlin, Java, Flutter, React Native, and Unity.
Integrate with an AI coding agent — Cursor, Claude Code, Codex, Windsurf and others.
Open your mobile app project in the agent, paste the prompt below, and answer its questions. The agent reads the web2wave mobile integration playbook, detects your subscription provider and attribution tool, and does the integration step by step.
You are integrating web2wave into this mobile app.
1. Read the web2wave mobile integration playbook and follow it end to end:
https://raw.githubusercontent.com/web2wave/integration-skills/main/docs/web2wave-mobile-integration-playbook.md
(Docs index for agents: https://docs.web2wave.com/llms.txt)
2. First inspect this project: the platform (iOS, Android, Flutter, React Native, Unity),
the subscription provider (RevenueCat, Adapty, Qonversion, Apphud, Superwall) and the
attribution tool (AppsFlyer, Adjust, Branch). Show me what you found and ask me to confirm.
3. Ask me every question the playbook lists, in its order. Do not guess settings or secrets.
Never hardcode API keys: ask me for my web2wave API key and keep it in config / env.
4. Implement only the branch we agreed on. Use the web2wave SDK for this platform and take
code samples from the documentation pages the playbook links to.
5. At the end, list the web2wave project settings I still have to fill in, and run or
describe the acceptance tests from the playbook.Where to paste it: the chat or agent panel in Cursor and Windsurf, the terminal session in Claude Code and Codex. You can also save the playbook as a project skill or instructions file and keep the prompt short.
The web2wave Mobile SDK helps you synchronize data between your web funnel and mobile application without building the direct integration from raw API calls.
The SDK is a lightweight wrapper around our API. It helps you avoid bugs caused by incorrect parameter passing, misunderstandings of platform logic, and manual setup work. It helps your integration follow platform best practices and can reduce setup time from several days to a few hours by providing ready-made methods.
Installing the SDK is not mandatory for launch. You can choose either direct HTTP requests to our API or the SDK if you prefer not to add additional dependencies to your project.
General flow
Mandatory steps
-
Install the package
Add the SDK through your stack's package manager:Gradle,SPM,pub.dev,npm, orUnity Package Manager. -
Initialize the SDK
Callinitialize(apiKey)orinitWith(apiKey)on app launch to set your API key. Do this once before any other SDK calls. -
Get
user_id
Choose an attribution path:- With an MMP (AppsFlyer, Adjust, Branch, …) — read
user_idfrom the install deeplink. See Pass subscription from web to app. - Without an MMP — call
identify()on first launch to match the device against the web session. See web2wave deferred deeplinks.
- With an MMP (AppsFlyer, Adjust, Branch, …) — read
Optional: Additional steps
-
Link third-party profiles
If you use Adapty, RevenueCat, or Qonversion, pass your paywall system'sprofileIDto web2wave throughsetAdaptyProfileID,setRevenuecatProfileID, orsetQonversionProfileID. This associates the user across systems. -
Check subscription status
CallhasActiveSubscription(userID)and show the appropriate screen based on the result: locked content or a paywall. -
Open a web page
To display a quiz or landing page inside the app, useshowWebVieworopenWebPage, passing the URL and a listener to handle close events. -
Manage subscriptions
Handle cancellation, refund, or re-charge throughcancelSubscription,refundSubscription, andchargeUserwith the corresponding Stripe, Paddle, or PayPal identifiers.
Key features
- Subscription status retrieval
- Active subscription check
- User properties management
- web2wave deferred deeplinks (
identify()) — MMP-free alternative to AppsFlyer / Adjust / Branch - Third-party profile binding (Adapty, RevenueCat, Qonversion)
- External subscription cancellation and refund (Stripe, Paddle, PayPal)
- User charge via saved payment method
- In-app web page, quiz, or landing page display
- Web page event handling
Available SDKs
Repository: web2wave/web2wave_swift
A Swift Package Manager (SPM) library designed for UIKit-based iOS apps. SwiftUI apps can use the SDK, but WebView methods require a UIViewControllerRepresentable wrapper because they are UIKit-based.
Requirements
- iOS
13.0+ - macOS
10.15+ - Swift
5.5+ - Xcode
13.0+
Important: Includes identify() — resolve user_id without an MMP via web2wave deferred deeplinks.
Repository: web2wave/web2wave_kotlin
A Kotlin Android library distributed through JitPack.
Requirements
- Android SDK
>= 24
Important: All API calls are blocking. Run them in a background coroutine using Dispatchers.IO or in a background thread to prevent the app from crashing.
Repository: web2wave/web2wave_java
The Java counterpart to the Kotlin SDK with the same feature set and API shape, adapted for Java conventions.
Requirements
- Android SDK
>= 24
Differences from Kotlin
- Uses
Web2Wave.getInstance()instead of a static object reference - Uses
Result<Boolean>instead of Kotlin'sResult<Unit> - Exposes WebView methods as static methods that accept a
FragmentManager
Repository: web2wave/web2wave_flutter
Requirements
- Flutter SDK
>= 3.0.0
Includes identify() — resolve user_id without an MMP via web2wave deferred deeplinks.
Repository: web2wave/web2wave_react_native
A TypeScript React Native package with full type definitions included. It ships as web2wave on npm.
Requirements
- React Native
>= 0.60.0 - React
>= 16.8.0 react-native-webview >= 11.0.0
react-native-webview is required as a peer dependency for WebView integration. WebView state is managed through a React hook that must be mounted in your root component.
Important: This SDK is under development. While it is fully featured, you may rarely encounter bugs. Please report them to support.
Repository: web2wave/web2wave_unity
A Unity Package Manager package installed through a Git URL. It requires Newtonsoft.Json, which is automatically pulled in as a dependency.
The SDK uses a callback-based API. All network methods accept onSuccess / onError or onComplete delegates, and those delegates are invoked on the Unity main thread.
Requirements
- Unity
2020.3+
WebView support
- Fully supported on Android and iOS (requires native plugins)
- On WebGL, requires JavaScript integration
- In the Unity Editor, falls back to opening the URL in the system browser
- Support on other platforms is limited, though all API calls work regardless of platform