Skip to content
Nuxie
Esc
navigateopen⌘Jpreview
On this page

Quickstart

Create a paywall and see it live in your app in under 10 minutes

Create a paywall in the Studio, publish it as an experience, and trigger it from your iOS app. By the end of this guide, you will have a working paywall appearing on a real device or simulator.

Prerequisites:

  • A Nuxie account with at least one app created in the dashboard
  • Xcode 15+ with a Swift project targeting iOS 16+
  • Your Nuxie API key (find it in Settings > API Keys in the dashboard)

Step 1: Create a project

Open the Nuxie dashboard and navigate to your app. Click New Project to open the Studio.

A project is your workspace for designing screens. You can have multiple screens in a single project – for example, a paywall screen and a success screen linked together.

When the project opens, you will see an empty canvas with a chat panel on the left.

Step 2: Generate a paywall with AI

Type a description of the paywall you want in the chat panel. For example:

Create a paywall for a fitness app with a monthly plan at $9.99 and a yearly plan at $49.99. Include a feature list and a free trial badge.

Nuxie generates a complete screen with styled components, product placements, and interactive buttons. The screen appears on the canvas as it streams in.

You can refine the design by sending follow-up messages: “Make the yearly plan more prominent” or “Change the background to a gradient.” Each message updates the screen in place.

Once you are happy with the design, move on to publishing.

Step 3: Publish to an experience

Click the Publish button in the top-right corner of the Studio. Select the target app, then click Launch Experience.

Publishing does three things:

  1. Creates a version from your project – an immutable, optimized bundle ready for delivery
  2. Creates or updates an experience that points at the version with delivery settings
  3. Builds the bundle and syncs it to the edge for fast delivery to devices

When the build completes, your experience is live. The SDK can now fetch and display it.

Step 4: Install the iOS SDK

Add the Nuxie SDK to your Xcode project using Swift Package Manager.

  1. In Xcode, go to File > Add Package Dependencies
  2. Enter the repository URL: https://github.com/nuxieai/nuxie-ios
  3. Select the Nuxie library product and add it to your target
import Nuxie

Step 5: Configure the SDK

Initialize Nuxie when your app launches. The best place is your App init or application(_:didFinishLaunchingWithOptions:).

import Nuxie

@main
struct MyApp: App {
    init() {
        let config = NuxieConfiguration(apiKey: "your_api_key")
        try? NuxieSDK.shared.setup(with: config)
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

On setup, the SDK fetches your profile from the server. The profile contains your published experiences, segment definitions, and feature access – everything the SDK needs to operate.

Step 6: Identify the user (optional)

If your app has user accounts, identify the user after login so Nuxie can track them across sessions and devices.

NuxieSDK.shared.identify("user_123", userProperties: [
    "plan": "free",
    "signup_date": "2026-01-15"
])

For anonymous users, the SDK automatically generates and persists a device-level ID. You can skip this step and come back to it later.

Step 7: Trigger the paywall

Use trigger to fire a named event. If a live experience is configured to respond to that event, the SDK evaluates targeting rules and presents the experience.

NuxieSDK.shared.trigger("paywall_requested")

The trigger call is fire-and-forget by default. If you need to react to what happens, use the handler callback or the async stream on the returned TriggerHandle:

NuxieSDK.shared.trigger("paywall_requested") { update in
    switch update {
    case .decision(let decision):
        print("Decision: \(decision)")
    case .journey(let journey):
        print("Journey started: \(journey)")
    case .error(let error):
        print("Error: \(error)")
    default:
        break
    }
}

When the experience matches, Nuxie downloads the experience bundle (if not already cached), and presents the paywall as a full-screen overlay. The user sees the paywall you designed in Step 2.

What just happened

Here is the full path your paywall took:

  1. You designed a screen in the Studio and published it as a experience
  2. The experience was bundled and synced to the edge
  3. Your app called setup(with:), which fetched the profile containing your experience
  4. Your app called trigger("paywall_requested"), which matched the experience and presented the experience

All of this happens without an app update. Change the design in the Studio, publish again, and users see the new version on their next session.

Next steps

  • Concepts – Learn the 10 core building blocks of the platform
  • Products and Prices – Connect real subscription products to your paywall buttons
  • Triggers and Goals – Control when and how experiences fire
  • Experiments – A/B test paywall variations to optimize conversion
  • Segments – Target experiences at specific user groups

Last updated on July 30, 2026

Was this page helpful?