App Store Submission Guide
This guide covers the complete process of getting your Primio app from an IPA build to a live App Store listing.
Prerequisites
Section titled “Prerequisites”Before you start, you need:
- An Apple Developer Program membership ($99/year) — Enroll here
- An IPA build from Primio — see iOS Builds
- A Mac with Transporter installed (free app from Apple for uploading builds)
About Apple Developer enrollment
Section titled “About Apple Developer enrollment”The enrollment process includes identity verification and can take 1-2 weeks to complete. Apple verifies your identity through government-issued ID and may require additional steps.
- Individual enrollment — You publish under your personal name. Requires ID verification.
- Organization enrollment — You publish under a company name. Requires a D-U-N-S number (free to obtain from Dun & Bradstreet, but can take several days).
Upload to App Store Connect
Section titled “Upload to App Store Connect”-
Open Transporter
Launch the Transporter app on your Mac.
-
Add your IPA file
Drag the IPA file into Transporter, or click the + button to browse.
-
Click “Deliver”
Transporter validates and uploads your build to App Store Connect.
-
Wait for processing
After upload, Apple processes the build. This takes 5-15 minutes.
-
Verify in App Store Connect
The build appears in App Store Connect under your app → TestFlight once processing completes.
Test with TestFlight first
Section titled “Test with TestFlight first”-
Open TestFlight in App Store Connect
Go to your app → TestFlight. Your uploaded build appears here after processing.
-
Add internal testers
You can add up to 100 people from your App Store Connect team. Internal testing starts immediately — no Apple review needed.
-
Optionally add external testers
External testers (up to 10,000 people) require a brief Apple review before they get access. Useful for wider beta testing.
-
Testers install via the TestFlight app
Each tester installs the TestFlight app on their iOS device and accepts your invitation.
-
Collect feedback and iterate
If testers find issues, fix them in Primio, build a new IPA, and upload again.
Create your App Store listing
Section titled “Create your App Store listing”App information
Section titled “App information”-
Open App Information
In App Store Connect, go to your app → App Information.
-
App name
Up to 30 characters. This is the name users see on the App Store.
-
Subtitle
Up to 30 characters. Appears below your app name in search results.
-
Category
Choose a primary category and an optional secondary category.
-
Privacy Policy URL
Required. Link to a page describing how your app handles user data. Every app on the App Store needs one.
Version details
Section titled “Version details”Go to your app’s version page and fill in:
-
Screenshots
Required for each device size you support. At minimum, provide iPhone 6.7” and 6.5” screenshots. Add iPad screenshots if your app supports iPad.
Take screenshots from your app running on a real device via TestFlight, or use a simulator.
-
Description
A detailed description of your app’s features and purpose. This is what users read on your App Store page.
-
Keywords
Up to 100 characters of comma-separated keywords. Choose terms your target users would search for.
-
Support URL
Required. Link to a support page, FAQ, or contact email where users can get help.
-
Marketing URL
Optional. Link to your app’s website or landing page.
Submit for review
Section titled “Submit for review”-
Select a build
Choose the build you uploaded via Transporter.
-
Answer the export compliance question
Apple asks whether your app uses encryption. Flutter apps use HTTPS (TLS) for network requests, which is technically encryption. Here’s the correct answer sequence for most Primio apps:
- “Does your app use encryption?” → Select Yes (because HTTPS counts)
- “Does your app qualify for any of the exemptions?” → Select Yes
- Select the exemption for apps that only use standard HTTPS/TLS for connecting to web servers
This applies to nearly all Primio apps. You only need non-exempt classification if your app implements custom encryption beyond standard HTTPS.
-
Set the release option
- Manual release — you decide when the app goes live after approval
- Automatic release — goes live as soon as Apple approves it
-
Click “Submit for Review”
Your app enters Apple’s review queue.
Review process
Section titled “Review process”- Apple reviews typically take 24-48 hours.
- First submissions may take longer.
- You’ll receive an email when your app is approved or if changes are needed.
Common rejection reasons
Section titled “Common rejection reasons”Missing privacy policy Every app needs a privacy policy URL, even if the app doesn’t collect data. A simple page explaining that is sufficient.
Broken functionality All features described in your listing must work. Test everything through TestFlight before submitting.
Placeholder content Remove any “Lorem ipsum,” test data, or temporary text. Apple reviewers check for this.
Login issues If your app has authentication, provide a demo account and password in the “Notes for Review” field. Reviewers need to be able to sign in and test all features.
Guideline 4.2 — Minimum Functionality This is one of the most common rejection reasons for first-time publishers, especially for apps built with AI. Apple rejects apps that don’t provide enough functionality to justify being a native app.
Your app is at risk if it:
- Has only 1-2 screens with minimal interaction
- Is essentially a website displayed in an app wrapper
- Contains only static content (text and images with no interactivity)
- Provides a very basic utility that doesn’t need to be an app
How to avoid it: Aim for at least 3-4 screens with meaningful user interaction — forms, data persistence, navigation, settings. Features like offline support, notifications, or device-specific capabilities strengthen your case. If rejected, go back to Primio and add more features before rebuilding.
Version number conflicts Each new IPA you upload must have a higher version or build number than the previous one. Primio increments the build number automatically with each build. If you get a “build already exists” error in Transporter, rebuild in Primio to get a new build number.
If your app is rejected, Apple’s response explains exactly which guideline was violated and what to fix. Make the changes in Primio, build a new IPA, upload, and resubmit. See Handling Rejections for a detailed guide on reading rejection notices, fixing common issues, and when to appeal.
Tips for approval
Section titled “Tips for approval”- Test thoroughly on a real iOS device via TestFlight — don’t rely on the web preview alone
- Remove all test data and placeholder text
- Make sure all links work (privacy policy, support URL)
- Provide demo login credentials if your app requires authentication
- Write a clear, accurate description of what the app does
- Include high-quality screenshots that represent the actual app experience