SDK
- The app initializes the SDK with the production project SDK token.
- Development and staging builds do not send data to the production project unless intended.
- The app can read the PNLight user ID.
- Attribution data is sent after the attribution provider returns it.
App Store
- Integration → AppStore contains the correct issuer ID and shared secret.
- The
.p8in-app purchase key is uploaded without renaming the file. - App Store Server Notifications use the project notification URL shown in Integration → AppStore.
- The notification URL is saved in both production and sandbox fields in App Store Connect.
- App Store Server Notifications use version 2.
Remote UI
- Each placement requested by the app exists in Remote UI and has a stable ID.
- Required locales have valid JSON configs.
- The placement is enabled.
- Test users can render the screen in the app.
- Button actions are handled by app code.
Remote Config
- Each key read by the app exists in Remote Config with the expected type.
- The app provides local fallbacks for Remote Config values needed at startup or offline.
- The current draft is published before release.
- Targeted overrides match the intended campaigns, devices, countries, or SDK versions.
Dashboard
- Installs appear in Analytics.
- Purchases appear on customer profiles.
- Ad networks and campaigns are configured if you use paid acquisition.
- Test users are marked correctly if you rely on debug-only Remote UI or QA traffic.
- Team members have the right access.
Keep this checklist with your release process. Problems found after release often come from the wrong project token, missing App Store settings, or a disabled Remote UI placement.