Apple Testing Environments

There are several different ways to test your Apple purchase flow with Nami. Each testing environment has different characteristics and limitations, outlined in the following table.

bypassStoreStoreKit config fileDevice SandboxTestFlightProduction
Requires app to be configured in App Store ConnectNoNoYesYesYes
Requires sandbox testing account registered in App Store Connect?NoNoYesNoNo
Can be done on simulator?YesYesNoNon/a
Can be done on real deviceYesYesYesYesYes
Can set purchase acceleration for subscriptionsYes, automatically configured by NamiYes, in Xcode settingsYes, in App Store ConnectNoNo
Can manage subscriptions and products?Yes, by SDK methodYes, in Xcode > Debug > StoreKit > Edit TransactionsYes, in device Settings > App Store > Sandbox Account > ManageNoYes, in App Store settings
Will send Server-to-Server notifications?NoNoYes, if configuredYes, if configuredYes, if configured
Transactions appear in Nami Control Center?Yes, under 'Testing and Development' environmentYes, under 'Testing and Development' environmentYes, under 'Testing and Development' environmentYes, under 'Testing and Development' environmentYes, under 'Production' environment
Nami entitlement granted?YesNo*YesYesYes

📘

Check out Apple's resource on Testing at all Stages of Development

Selecting a Testing Environment

I want to do in-depth testing of my purchase flows before my app goes to production.
Select Sandbox testing environment. This will allow you to test multiple purchase flows quickly on a real device.

I want to test localized products on my paywall.
Select StoreKit config file. You can configure the Storefront country and localization to make sure currency and language render properly. Learn how to setup a StoreKit config file.

I want to do final beta testing with internal or external testers before my app goes live.
Select TestFlight and distribute your app to your test group for final confirmation.

I don't have an app configured in App Store Connect yet. Which testing environment can I use?
Select either bypassStore or StoreKit config file.