revnix_flutter 1.10.1
revnix_flutter: ^1.10.1 copied to clipboard
Revnix subscriptions and entitlements for Flutter: offline-resilient entitlement checks, placements, and StoreKit 2 / Play Billing purchase registration.
Subscriptions, Paywalls and Attribution
for Your Flutter App
Website • Docs • API Reference

Revnix SDK makes in-app subscriptions, paywalls and attribution for Flutter fast and easy. One plugin buys through StoreKit 2 and Google Play Billing, validates the receipt on the server and unlocks the entitlement. No separate IAP plugin.
Table of Contents #
- Why Revnix?
- Getting Started
- Quick start
- Purchases and entitlements without server code
- Paywalls that update without app releases
- A/B tests with a built-in holdout
- Attribution and deep links
- Real-time analytics for your Flutter app
- Requirements
- Documentation
- Migrating from another SDK
- Support
- License
Why Revnix? #
- Purchases in one call.
purchase()opens the App Store or Google Play sheet, validates the receipt on the server and grants the entitlement. No IAP plugin, no server code. - Entitlements that work offline. Entitlement checks are cached on device, so a user who paid stays unlocked without a network.
- Remote paywalls. Design paywalls in the dashboard, pick from 250 templates and ship copy, prices and layout changes without an app release.
- A/B tests and holdouts. Split a placement between variants, measure revenue per user with credible intervals and ship the winner from the dashboard.
- Attribution and deep links. Install attribution, deferred deep links, Apple Search Ads, Google Ads and MMP forwarding, all from the same plugin.
- Integrations. Send subscription events to analytics, attribution and messaging tools, or to your own server through signed webhooks.
- Real-time analytics. Revenue, MRR, LTV, ROAS, cohorts and funnels for iOS and Android, filtered by store, product, channel and campaign.
Getting Started #
flutter pub add revnix_flutter
The native Swift and Kotlin SDKs ship inside the plugin and compile with your app. There is nothing else to add on iOS or Android.
Read the installation guide and configuration reference to set up the plugin.
Quick start #
import 'package:revnix_flutter/revnix_flutter.dart';
// 1. Configure once at app start
final revnix = await RevnixClient.configure(
apiKey: 'rvx_pk_live_…',
baseUrl: 'https://<your-deployment>.convex.site',
);
await revnix.retryPendingPurchases();
await revnix.registerInstall();
// 2. Buy: opens the store sheet, validates the receipt, grants the entitlement
final result = await revnix.purchase('pro.monthly');
if (result != null) await revnix.waitForEntitlements(result.seq);
// 3. Check access anywhere
if (await revnix.isEntitled('pro')) {
// unlocked
}
Your API key and deployment URL are in the dashboard under Settings. See API keys.
On Android, collectAdvertisingId: true in configure opts in to Google Advertising ID collection. Add com.google.android.gms:play-services-ads-identifier and the com.google.android.gms.permission.AD_ID permission to your app; when limit-ad-tracking is on no id is sent and a previously sent id is cleared; if play-services-ads-identifier is missing no id is collected and the diagnostics stream reports it. Ignored on iOS.
Purchases and entitlements without server code #
Revnix handles the hard parts of subscriptions in a small, developer-friendly plugin.
purchase(productId)runs the whole flow: store sheet, server-side receipt validation, entitlement, transaction finish.restore()brings purchases back on a new device.- Renewals, refunds, upgrades and purchases on other devices are picked up from the stores and reflected in the entitlement on their own.
- Entitlements and placements are cached on device, so paid users stay unlocked offline.
isEntitled()never throws and fails closed. - Failed registrations are queued durably;
retryPendingPurchases()drains the queue on the next launch. - Typed errors:
purchase_blocked,product_not_found,store_errorand more, each aRevnixExceptionwithisRetryable. See Make purchases. - Already using
in_app_purchase? Keep it and callregisterPurchase()instead.
Paywalls that update without app releases #

With the Revnix paywall builder you design the paywall in the dashboard and render it in your app.
- Pure Flutter renderer:
RevnixPaywalldraws the published design with Flutter's own widgets, kept in lockstep with the dashboard preview. No WebView, no extra dependency. - 250 templates: pick a layout, theme and accent, then edit copy, packages and badges.
- Update without redeploying: change prices, copy or layout any time; the next
resolvePlacement()picks it up. - Implicit placements:
app_launch,session_start,paywall_declineand three more fire without a resolve call. - Localized: 43 languages for the built-in strings, plus per-locale copy of your own.
RevnixClient.setLocale()overrides the device language.
Learn more in Show paywalls and Placements.
A/B tests with a built-in holdout #

- Split a placement's traffic between offering and paywall variants. Conversions, trials, revenue per user and MRR are calculated per variant.
- Add a holdout variant that shows no paywall at all, to measure what the paywall is really worth.
- Bayesian results with 95% credible intervals and a sample-size planner, so you know when to stop.
- Target a test at an audience with
setAttributes(). Ship the winner from the dashboard; the plugin needs no change.
Learn more in A/B tests.
Attribution and deep links #

- Install attribution from Revnix links, with per-link click lookback windows.
getAttribution()andonAttributionexpose the verdict. See Attribution. - Deferred deep links resolve on first launch through
onDeferredDeepLink, so a user who installs from a campaign lands on the right screen. See Deferred deep links. - Apple Search Ads and Google Ads attribution, with App Tracking Transparency via
requestTrackingAuthorization(). See Apple Search Ads and Google Ads. - MMP forwarding to AppsFlyer and Adjust with
setAttribution(), ad revenue logging withlogAdRevenue()and uninstall measurement withsetPushToken(). See MMP attribution, Ad revenue and Uninstall measurement. - SKAdNetwork conversion values with
updateSkanConversionValue(). See SKAdNetwork. - Fraud prevention: anonymous-IP and click-injection checks keep paid channels honest. See Fraud prevention.
Real-time analytics for your Flutter app #

- Revenue, MRR, ARR, ARPU, LTV and ROAS, updated from the ledger as purchases arrive.
- Cohorts, retention, funnels and predicted LTV. See Analytics.
- Filter and group by store, product, country, channel, campaign and A/B test variant.
- Custom events with
track(). Saved reports, alerts and a REST API for your own dashboards. See Reports and REST API.
Requirements #
| Requirement | Minimum |
|---|---|
| Flutter | 3.32 (Dart 3.8) |
| iOS | 16.0 |
| Android | API 24 (Android 7.0) |
| JDK (Android build) | 17 |
The plugin is mobile only. Web, desktop and stores other than the App Store and Google Play are not supported.
Documentation #
Revnix also ships SDKs for React Native, iOS, Android, Capacitor and Unity.
Migrating from another SDK #
Moving from Adapty or RevenueCat? Revnix imports your customers and purchase history, and the SDK calls map one to one.
Support #
- Email support@revnix.io with questions, bugs or feature requests.
- Check the status page for incidents.
- Want to work on the plugin itself? Clone with
git clone --recurse-submodules: the native SDKs live inios/revnix_flutter/Revnixandandroid/revnix-kotlinand are never edited from here.
License #
Revnix SDK is available under the MIT license. See LICENSE for details.
