This guide walks you through publishing your Despia v3 iOS application to the App Store Connect. With Despia v3's new runtime, you can now conditionally include native functionalities like smart widgets, app clips, and share targets.
Overview
Despia offers a one-click publishing solution that simplifies the entire CI/CD deployment pipeline for iOS applications. With our native App Store Connect integration, you can:
-
Test your application internally via TestFlight with your development team
-
Distribute beta versions to testers through TestFlight public links
-
Publish your app to the App Store to reach millions of iPhone and iPad users
-
Conditionally include native iOS features like widgets, app clips, and share extensions
When you publish with Despia, your application is automatically built on real Apple Silicon Mac Minis, code-signed, and submitted to TestFlight for validation before you submit it for App Store review. With v3's new runtime, you can enable only the native functionalities you need, avoiding unnecessary SDK bloat and potential rejection risks.
-
Despia v3 account
-
Apple Developer Account ($99/year)
-
App icon (1024x1024 PNG)
-
Basic app configuration completed
Key Changes in Despia v3 for iOS
Conditional Native Functionalities
-
Smart Widgets: iOS home screen widgets
-
App Clips: Lightweight app experiences
-
Share Targets: Share content from other apps
-
Push Notifications: New OneSignal integration
Configure Your App in Despia
1.1 Upload App Icon
-
Navigate to Settings > Icon
-
Upload a 1024x1024 PNG icon
-
Ensure the icon meets Apple's guidelines
1.2 Configure Splash Screen
-
Go to Settings > Splash Screen
-
Upload your splash screen image
-
Adjust size and positioning as needed
-
Set appearance mode (light/dark)
1.3 Enable Native Targets
Navigate to the Targets tab to enable desired functionalities:
-
Smart Widgets
-
App Clips
-
Share into App
Note: Register all bundle IDs even if not immediately using the features. This allows easy enabling later.
Apple Developer Setup
2.1 Create Core Bundle ID
-
Go to developer.apple.com
-
Navigate to Identifiers > +
-
Select App IDs > App > Continue
-
Configure:
-
Description: "My App Core Bundle ID"
-
Bundle ID: Copy from Despia Publishing panel
-
Capabilities to enable:
-
App Attest
-
App Groups
-
Associated Domains
-
iCloud (include CloudKit support)
-
Push Notifications (with Broadcast capability)
-
-
2.2 Register Package Bundle IDs
For each enabled target (OneSignal, App Clip, Share Target, Smart Widget), repeat this process:
OneSignal Target
-
Create new App ID:
-
Type: App
-
Description: "OneSignal Bundle for My App"
-
Bundle ID: Copy from Despia
-
Capabilities: App Groups, Push Notifications (Broadcast)
-
-
Create App Group:
-
Description: "OneSignal App Group for My App"
-
Identifier: Copy from Despia
-
-
Link App Group to Bundle ID:
-
Go to OneSignal Bundle ID > App Groups > Configure
-
Select the OneSignal App Group
-
Save
-
-
Link to Core Bundle ID:
-
Go to Core Bundle ID > App Groups > Edit
-
Add OneSignal App Group
-
Save
-
App Clip Target
-
Create new App ID:
-
Type: App Clip (⚠️ Different from others!)
-
Parent App ID: Select your Core Bundle ID
-
Product Name: "Clip" (exactly, with capital C)
-
Capabilities: App Groups, On Demand Install Capable
-
-
Follow same App Group creation and linking process
Share Target & Smart Widget
Follow the same process as OneSignal, but:
-
Type: App (not App Clip)
-
Capabilities: App Groups only
Bundle ID Registration Summary
Target | Type | Required Capabilities |
---|---|---|
Core App | App | App Attest, App Groups, Associated Domains, iCloud (CloudKit), Push Notifications |
OneSignal | App | App Groups, Push Notifications (Broadcast) |
App Clip | App Clip | App Groups, On Demand Install Capable |
Share Target | App | App Groups |
Smart Widget | App | App Groups |
App Store Connect Setup
-
Create new app:
-
Platform: iOS
-
Name: Your app name
-
Primary Language: Your choice
-
Bundle ID: Select your Core Bundle ID
-
SKU: Your app name in caps without spaces
-
-
Copy the Apple ID from App Information (not your personal Apple ID!)
Connect Despia to Apple
4.1 If You Have an Existing Development Team
-
In Despia, go to Publish App
-
Paste the App Store App ID
-
Select your development team
-
Click Publish Project
4.2 First-Time Setup
-
Enable App Store Connect API:
-
Go to App Store Connect > Users and Access > Integrations
-
Enable App Store Connect API
-
Accept terms
-
-
Create API Key:
-
Click Generate API Key
-
Name: "Despia CICD"
-
Access: App Manager
-
Download the key (⚠️ Can only download once!)
-
-
In Despia's Publishing Panel:
-
Account Issuer ID: Copy from App Store Connect
-
Development Team ID: Find at developer.apple.com (next to your business name)
-
API Key ID: Copy from the key you created
-
Upload API Key: Upload the downloaded .p8 file
-
-
Click Link with Apple
Build and Deploy
-
Click Publish Project
-
Wait 20-30 minutes for the build process
-
You'll receive a TestFlight email when complete
What Happens During Build
-
Despia provisions a Mac Mini in their build farm
-
Opens Xcode and loads your project
-
Signs in to your Apple Developer account
-
Builds and code signs your application
-
Submits to App Store Connect
TestFlight Setup
Internal Testing
-
In App Store Connect, go to TestFlight
-
Create Internal Testing group
-
Add yourself and team members
-
Wait for build to appear
External Testing (Beta Users)
-
Create External Testing group
-
Choose "Public Link" option
-
Fill out:
-
Beta App Description
-
Feedback Email
-
Contact Information
-
-
Submit for Review
-
Share public TestFlight link once approved
App Store Submission
-
Go to your app in App Store Connect
-
Fill out all required information:
-
Screenshots
-
Description
-
Keywords
-
Categories
-
Privacy Policy URL
-
-
Add your build (from TestFlight)
-
Complete compliance questionnaires
-
Submit for Review
Common Rejection Reasons & Solutions
Here is a list of some of the most common app soft rejection reasons, that we have seen occur with apps build in Despia - these are not triggered by Despia’s technology but incorrect setup.
Issue: Stripe checkout opens in-app instead of Safari
Solution: Settings > Link Handling > Open Always in Browser Add: checkout.stripe.com
Issue: Terms of Service opens in Safari instead of in-app
Solution: Configure appropriate link handling in Despia settings
Issue: Unrealistic health/financial claims
Solution: Modify app content to comply with Apple guidelines
Important Notes
Remote Updates
-
Web app changes: Update immediately without rebuild
-
Native add-ons: Can be added via JavaScript without rebuild
-
Settings changes: Require rebuild and resubmission
When to Rebuild
Only rebuild when changing:
-
App settings (link handling, permissions, etc.)
-
Enabled/disabled native targets
-
Bundle IDs or certificates
Support
If you encounter rejections or issues:
-
Click Get Free Expert Help in Despia dashboard
-
Email support@despia.com
-
Include Apple's feedback for faster resolution
Build Features
-
Download IPA: Get the compiled app file
-
Export Source Code: Access full Xcode project
-
Human-readable code: Easily modifiable if needed
Best Practices
-
Test thoroughly on TestFlight before App Store submission
-
Register all bundle IDs upfront for easier feature additions
-
Use descriptive names for bundle IDs and app groups
-
Keep your API key secure - store backup safely
-
Don't rebuild for web app changes - they update over-the-air
Troubleshooting
Build Failures
-
Verify all bundle IDs are correctly registered
-
Check all app groups are properly linked
-
Ensure capabilities match documentation
TestFlight Issues
-
Confirm you're added to internal testing group
-
Check email for TestFlight invitation
-
Verify build status in App Store Connect
API Key Issues
-
If upload appears unclear, click upload again to verify
-
Keep backup of .p8 file - cannot be re-downloaded
-
Create new key if lost
If you need assistance implementing the SDK or have questions, contact our support team at support@despia.com