App Clip size
How to generate a size report
Select the main app scheme
Product > Archive
Select newly created archive and click
Distribute AppChoose
Developmentas method of distributionSelect app clip
Select
All compatible device variantsin theApp Thinningmenu, make sure thatRebuild from bitcodeis checkedwhen the archive is done preparing, click
ExportOnce exported, open the exported package and open the
App Thinning Size Report.txt
This report has a different section for each device variant, with the uncompressed size for each variant (should be less 10MB)
You can unpack each .ipa and inspect what’s inside to understand why the size might exceed the limit.
Basic optimizations
make sure Xcode will build using the smallest, fastest optimization setting when archiving
use asset catalog, move assets not used in the App Clip in another catalog
remove unused code from AppClip target
remove unused strings from your localization, if needed, make an ad-hoc localization
.stringsfile just for AppClip
Advanced optimizations
make sure you link only dependencies that are needed by App Clip, use system framework instead of 3rd parties
optimize media:
use lossy compression images, PNG8 for non-photographic material
use HEVC for videos
compress audio using AAC or MP3 codecs, and experiment with a reduced bit rate
use SVG or SF Symbols for glyphs
image variations: instead of including several variations of an image in your asset catalog, include one base image and build the variations needed at runtime
lazy loading: fetch images from the web instead of pre-packaging them
App Clip invocation
Two types of registration in Apple Store Connect
default - for website and iMessage
advanced - QR/NFC
Registration takes time to propagate to devices, so changes made in App Store Connect won’t be instantly available.
Prior to displaying UI that surfaces your App Clip, the OS checks to make sure that the invocation domain is verifiably associated with your App Clip:
the URL viewed in Safari or encoded in a QR code must have a secure association via entitlements and an AASA file with your app and App Clip.
if this is not configured properly, your clip will not be surfaced.
Make sure the website metdata is similar to:
<meta name="apple-itunes-app" content="app-id=myAppStoreID, app-clip-bundle-id=appClipBundleID, app-clip-display=card">note that https://example.com is different than https://www.example.com
for QR urls, you need to provide a AASA file for the exact domain of the QR code
Testing
When building and running in Xcode, set the
_XCAppClipURLenvironment variable to an invocation URL of your choice. When you run your clip, the URL will be passed through to your clip just as it would be on a customer’s device.To see your in-development clip surfaced by the OS similar to production devices:
Settings.app>Developer settings>Local experiences> create a new one
