Adopting Nami v3

All you need to know about adopting the last version of the Nami SDK

Nami's v3 SDK update is a total overhaul of our paywalls and campaigns. If you are currently on v1 or v2, here is everything you need to know about adopting the latest SDK version.

New Features

Component Paywall Templates

Instead of using our 1 cloud paywall design or building your own paywall UI via linked paywalls, Nami has introduced flexible paywall templates with multiple designs.
See all Paywall Templates

Each template has dozens of editable attributes that allow you to customize the text, products, colors, and more to your specifications. All edits go live immediately without an app update.

Paywall Features supported include (but aren't limited to):

  • Text
  • Lists
  • Images
  • Gradient colors
  • Dark Mode
  • Carousel
  • Product Buttons (multiple designs and layouts)
  • Product Groups (separate different tiers of access)
  • Purchase button
  • Custom fonts
  • Fullscreen support (iOS only)

Campaigns

Nami campaigns have been overhauled. Instead of 1 live campaign, you can now have dozens of live campaigns. Each campaign can have 1 or 2 paywalls (2 if you are utilizing A/B testing) and can be filtered to a specific groups of users with pre-built audience filters. A/B testing requires a paid plan.

Paywall launch has been simplified to 1 line of code to raise a campaign.
Learn more.

Redesigned Insights Charts

A complete overhaul was done on the Insights page. Dozens of new charts have been added, including MRR, Active & New Subscribers, Subscriber LTV, Churn, and more. (Some charts require paid plans). Learn More.

  • Charts now translate all purchases to USD and no longer require a currency picker.
  • Charts support grouping and filtering. (Some groups and filters only available on paid plans)
  • You can download data in a CSV (some plans)

Changed

Paywall Translation

In v1 and v2, paywalls had languages attached. This language would drive which language legal and product text was used.

In v3, we have removed separate handling for legal languages and product languages. Instead, each component paywall has fully customizable text so you can add the correct language for all text without needing to setup product or legal translations separately.

Product Smart Text variables are automatically translated on the device. 48 different languages are supported.

Removed

Raising paywall by paywall ID

Paywalls can no longer be raised independent of a campaign. As a result, component paywalls no longer have a Developer Paywall ID. Instead, attach a paywall to a campaign and call the campaign to launch the paywall. V3 supports multiple live campaigns, A/B testing, and filtering.

Linked Paywalls

In prior versions you could build your own paywall UX and link to Nami subscription management. We have removed this feature in favor of our component paywalls.

SDK Interface Transition

The Nami SDK 3.x series major improvements to support a variety of use cases from A/B testing to new, full featured paywall templates.

The most significant changes involve the role of campaigns in launching paywalls as well as linking devices to known user identity.

In addition, the Nami SDK introduces renamed interfaces for clarity, new interfaces for new functionality, and removed interfaces for deprecated functionality.

Here is a brief mapping guide. See the SDK reference for details on the new interfaces.

New SDK InterfacePrior SDK Interface
NamiCustomerManager.loginNami.setExternalIdentifier
NamiCustomerManager.logoutNami.clearExternalIdentifier
NamiCustomerManager.loggedInIdNami.getExternalIdentifier
NamiCustomerManager.isLoggedIn-
NamiCampaignManager.launchNamiAnalyticsSupport.registerAnalyticsHandler
NamiCustomerManager.journeyStateNamiCustomerManager.currentCustomerJourneyState
NamiCustomerManager.registerJourneyStateHandlerNamiCustomerManager.registerCustomerJourneyStateChangedHandler
NamiCustomerManager.registerAccountStateHandler-
NamiEntitlementManager.activeNamiEntitlementManager.activeEntitlements
NamiEntitlementManager.refresh-
-NamiEntitlementManager.clearAllEntitlements
-NamiEntitlementManager.getEntitlements
-NamiEntitlementManager.setEntitlements
NamiEntitlementManager.registerActiveEntitlementsHandlerNamiEntitlementManager.registerEntitlementsChanged
NamiCampaignManager.isCampaignAvailableNamiPaywallManager.canRaisePaywall
NamiCampaignManager.launchNamiPaywallManager.raisePaywall
NamiCampaignManager.refresh-
NamiCampaignManager.allCampaigns-
NamiCampaignManager.registerAvailableCampaignsHandler-
-NamiPaywallManager.preparePaywallForDisplay
NamiPaywallManager.registerCloseHandler-
-NamiPaywallManager.registerPaywallHandler
NamiPaywallManager.registerBuySkuHandler-
NamiPaywallManager.buySkuComplete-
NamiPurchaseManager.anySkuPurchasedNamiPurchaseManager.anySKUIDPurchased
-NamiPurchaseManager.buySKU
NamiPurchaseManager.skuPurchasedNamiPurchaseManager.isSKUIDPurchased
NamiPurchaseManager.registerPurchasesChangedHandlerNamiPurchaseManager.registerPurchasesChanged

SDK Release Notes