Highlight
iOS 17 increases the upper limit of App Clip size in digital calling scenarios to 50MB, adds Default App Clip Links configuration-free calling links, and allows any app to directly call up App Clips without going through Safari.
Core Content
App Clips allow users to experience core functionality without downloading the full app. iOS 17 lowers the threshold for building and distributing App Clips from three dimensions.
Volume limit: 50MB for digital calls and 15MB for physical calls
(00:59) App Clip needs to be small to ensure instant startup. However, network conditions vary greatly in different usage scenarios: NFC tags and QR codes are usually used in outdoor cellular networks, while Messages links and Safari pages are often opened in Wi-Fi environments.
iOS 17 distinguishes the size limits of two calling methods:
| Calling method | Size limit | Applicable scenarios |
|---|---|---|
| Physical call (NFC, QR code, App Clip Code) | 15MB | Outdoors, on the move |
| Digital Calls (Messages, Safari, Spotlight) | 50MB | Wi-Fi, Indoor |
| iOS 15 and earlier | 10MB | Compatible with older systems |
(01:53) 50MB is enough space to put more resources. If you previously downloaded materials at runtime to control the size, you can now package them directly into App Clip to make the first-screen experience more complete. Scenarios such as game trials, online food ordering, and content previews can all benefit.
Default App Clip Links: zero configuration to call up the link
(02:19) In the past, for App Clips to be called up through a URL, you needed to host the Apple App Site Association file and related metadata on your own website. This is a burden for developers who don’t have a website or don’t want to maintain website configuration.
Starting from iOS 16.4, App Store Connect will automatically generate Default App Clip Link:
https://appclip.apple.com/id?p=com.example.app.Clip
(03:40) The link supports additional query parameters. The game trial App Clip can be accessed via?character=wizardSpecify the initial role, and the food ordering App Clip can pass?restaurant=123Designated restaurant.
App Clip parses parameters after startup:
import SwiftUI
struct ContentView: View {
@State var parameters: [URLQueryItem] = []
var body: some View {
VStack {
ForEach(parameters, id: \.name) { item in
Text("\(item.name): \(item.value ?? "")")
}
}
.onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { userActivity in
guard let inputURL = userActivity.webpageURL else { return }
let components = NSURLComponents(
url: inputURL,
resolvingAgainstBaseURL: true
)
guard let queryItems = components?.queryItems else { return }
self.parameters = queryItems
}
}
}
Key points:
onContinueUserActivityCapture App Clip when launchedNSUserActivitywebpageURLContains the complete calling URL, including query parameters -NSURLComponentsParsing parameters is the same as for normal Universal Link
Call up App Clip from any app
(04:20) Before iOS 17, calling App Clip in the App required going through Safari or Safari View Controller. You can now call it up directly.
Method 1: Link Presentation rich text preview
import LinkPresentation
let provider = LPMetadataProvider()
let url = URL(string: "https://appclip.apple.com/id?p=com.example.app.Clip")!
provider.startFetchingMetadata(for: url) { metadata, error in
guard let metadata = metadata else { return }
DispatchQueue.main.async {
let lpView = LPLinkView(metadata: metadata)
// Add to the view hierarchy; the user can tap it to launch the App Clip
}
}
Key points:
LPMetadataProviderAsynchronously obtain link metadata -LPLinkViewRender rich text cards with icons and titles- Users click on the card to directly launch the App Clip, without the need for Safari transfer
Method 2: Call up directly (Default App Clip Link)
SwiftUI:
var body: some View {
let appClipURL = URL(
string: "https://appclip.apple.com/id?p=com.example.naturelab.backyardbirds.Clip"
)!
Link("Backyard Birds", destination: appClipURL)
}
UIKit:
func launchAppClip() {
let appClipURL = URL(
string: "https://appclip.apple.com/id?p=com.example.naturelab.backyardbirds.Clip"
)!
UIApplication.shared.open(appClipURL)
}
Key points:
- Default App Clip Link can be used directly
Linkoropen(_:)call up - After calling up, the system will display the App Clip card, and the user will enter after confirmation.
- Any App can call up any App Clip, not limited to the same developer
Detailed Content
Practical impact of volume restrictions
(01:10) The reason physical calls remain at the 15MB limit is that users are often on the move and have unstable network conditions. Increasing the number call to 50MB allows for a richer experience:
- Game trial: can include complete level resources, character models, and sound effects
- Online ordering: can include menu pictures and restaurant environment photos
- Content preview: can include video clips and high-definition picture sets
(02:04) If your target users include iOS 15 users, the 10MB limit will still apply. Processing can be differentiated through conditional compilation or runtime instrumentation.
Generation and use of Default App Clip Link
(03:13) Default App Clip Link is automatically generated when App Store Connect publishes App Clip, with a fixed format:
https://appclip.apple.com/id?p={BundleIdentifier}
Bundle Identifier is the full bundle ID of the App Clip target, usually ending with.ClipThe end.
Parameter passing example:
https://appclip.apple.com/id?p=com.example.game.Clip&level=demo&character=knight
Analysis in App Clip:
.onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { activity in
guard let url = activity.webpageURL,
let components = URLComponents(url: url, resolvingAgainstBaseURL: true),
let items = components.queryItems else { return }
let level = items.first(where: { $0.name == "level" })?.value
let character = items.first(where: { $0.name == "character" })?.value
// Configure the initial interface based on the parameters
}
Cross-App recall scenario
(04:33) The speaker used Notes App to demonstrate: put the Backyard Birds App Clip link in the notes, and the App Clip card will pop up directly after clicking it. Safari does not need to be involved in this process.
Practical application scenarios:
- Share restaurant app clips in social apps, and friends can click to order directly
- Launch the parking lot App Clip in the navigation app and complete the payment directly
- Launch the meeting app clip in the email app and join the video conference directly
Core Takeaways
1. Build a game trial app clip for the full app
- What to do: Take advantage of the 50MB size limit and package the first level or tutorial of your game as an App Clip
- Why it’s worth it: Users can experience the core gameplay without downloading a complete game of several hundred MB, and the conversion rate is much higher than traditional advertising
- How to start: Add App Clip target to the project in Xcode, share the level resources and core logic, and distribute it through Default App Clip Link
2. Embed App Clip in content sharing
- What to do: When users share content in your app, a Default Link to the relevant App Clip is attached.
- Why it’s worth it: The recipient can experience the relevant functions by clicking on the link without downloading the full app first, lowering the experience threshold.
- How to start: Generate Default App Clip Link with parameters (such as
?itemID=123),useLPLinkViewShow rich text preview
3. Fast service in offline scenarios
- What to do: Use NFC tags or QR codes to launch lightweight App Clips within 15MB in restaurants, parking lots, gyms, etc.
- Why it’s worth it: Users can order, pay, and check in by placing their phone close to the label, without downloading an app or opening a web page.
- How to start: Control the App Clip size within 15MB, configure the physical calling experience, and generate App Clip Code in App Store Connect
4. Real-time services across App ecosystem
- What: Let your App Clip be directly called up by other apps and become a service node in the ecosystem
- Why it’s worth doing: iOS 17 allows any App to call up any App Clip, which is an opportunity to build a cross-app service network
- How to start: Design a simple Default App Clip Link parameter protocol and document the activation method to make it easy for partners to integrate
Related Sessions
- Meet StoreKit for SwiftUI — In-app purchase implementation in App Clip
- What’s new in Safari and WebKit — Launching and displaying App Clip in Safari
- Design App Clips — User experience design guide for App Clips
- Meet App Intents — Another way to expose App functionality to the system, complementary to App Clips
Comments
GitHub Issues · utterances