App Clip is a lightweight version of an iOS app that launches instantly without installation on the device. Introduced in iOS 14, the technology allows users to access a specific app function by scanning an NFC tag, QR code or App Clip Code. The App Clip size does not exceed 10 MB, and launch takes less than two seconds. This is Apple's solution for instant interaction with a native app without needing a full installation.
Key Takeaways
App Clip is Apple's technology for iOS that allows launching a small part of a full app without installing it. When a user scans an NFC tag, QR code or App Clip Code, the operating system downloads and opens the App Clip as a card on top of the current screen. Apple designed App Clip for “pay, order or sign up” scenarios — actions that must be performed without friction and waiting.
App Clip works in ephemeral mode. iOS stores App Clip data for a limited time (usually several days or until the user explicitly deletes it). If the user needs the same function again, the App Clip is re-downloaded. Apple intentionally limits App Clip persistence to encourage installing the full app for ongoing use. Data created in the App Clip is automatically transferred to the full app upon installation via CloudKit.
Real examples: scanning an NFC tag on a restaurant table to order and pay (Panera, Pizza Hut), a QR code on a rented scooter to unlock (Lime, Bird), an App Clip Code at a parking meter to pay (PayByPhone), scanning a product in a store to purchase (Shopify). All these scenarios share one thing — a transactional task that benefits from having no installation step.
App Clip is activated through five mechanisms. The most common are NFC tags (tap launches the App Clip), QR codes (camera scanning shows the App Clip card at the bottom of the screen) and App Clip Codes (Apple's proprietary visual codes with a patterned border and built-in NFC tag). App Clip also launches via Safari App Banner and iMessage links.
App Clip Code is Apple's patented technology. Unlike QR codes, App Clip Codes look aesthetic — they support brand colors and a logo in the center, with the URL encoded in sound-like waves around the edges. The code contains a built-in NFC tag, providing a dual launch mechanism: visual scanning and tapping. Apple provides App Clip Code generation tools through the App Store Connect portal.
// SceneDelegate.swift — handling App Clip launch via NSUserActivity
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene,
willContinueUserActivityWithType userActivityType: String) {
// Preparing for incoming NSUserActivity
}
func scene(_ scene: UIScene,
continue userActivity: NSUserActivity) {
guard let invocationURL = userActivity.webpageURL else { return }
// Parsing URL and navigating to the required screen
handleInvocationURL(invocationURL)
}
private func handleInvocationURL(_ url: URL) {
// Example: /order/restaurantID — order screen
// Example: /pay/parkingID — payment screen
}
}All triggers ultimately create an NSUserActivity with a webpageURL parameter that contains the invocation context. The App Clip parses this URL and displays the corresponding screen. App Clip also supports geolocation triggers — iOS can suggest an App Clip when the user is near a specific location (e.g., near a coffee shop with an App Clip).
App Clip development starts from an existing Xcode project of the full app. You add a new App Clip target — it uses the same project, the same team and most of the shared code. The App Clip target includes only the files, storyboards and resources needed for the specific function. Apple provides an App Clip template with pre-configured entitlements and Info.plist keys.
// AppClip/ProductViewModel.swift — shared logic between App Clip and full app
import Foundation
import StoreKit
class ProductViewModel: ObservableObject {
@Published var items: [Product] = []
@Published var total: Decimal = 0
func checkout() {
// Sending order via API
}
func showInstallPrompt() {
// Showing SKOverlay to install the full app
guard let scene = UIApplication.shared()
.connectedScenes
.first(where: { $0 is UIWindowScene }) as? UIWindowScene else { return }
let overlay = SKOverlay(configuration: SKOverlay.AppClipConfiguration(
position: .bottom
))
overlay.present(in: scene)
}
}
// AppClip/MainViewController.swift — main App Clip screen
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Compact UI for App Clip card
// Using SF Symbols to reduce size
// Loading only data for the current transaction
}
@IBAction func openFullApp(_ sender: Any) {
// Opening app page in the App Store
guard let url = URL(string: "https://apps.apple.com/app/id123456789") else { return }
UIApplication.shared.open(url)
}
}The App Clip target uses the same Apple Developer Team ID and Bundle ID as the main app (with a .Clip suffix). Key entitlements: com.apple.developer.app-clip and associated domains for URL handling. App Clip supports Apple Pay, Sign in with Apple, StoreKit for purchases and Core Location. Some frameworks are unavailable: background modes, HealthKit, Media Library and certain sensor APIs.
App Clip size limit is strictly controlled by Apple — no more than 10 MB compressed. The check is performed at the upload stage to App Store; builds exceeding the limit are rejected. The size includes binary code, resources (storyboards, asset catalogs) and linked frameworks. Swift runtime libraries are part of iOS and are not counted, but third-party frameworks increase the size.
| Optimization method | Effect | Notes |
|---|---|---|
| Thinning asset catalogs | 30–60% | Single image scale (3x), exclude unused device idioms |
| SF Symbols | Significant | System icons are free — do not include custom ones |
| SwiftUI instead of UIKit | 20–30% | SwiftUI requires fewer linked frameworks |
| Minimum dependencies | Variable | Include only frameworks needed for the App Clip function |
| On-demand resources | Variable | Loading non-critical data (images) after launch |
| Code stripping | 10–40% | Dead code stripping and whole-module optimization in Swift |
Xcode provides an App Clip size report in Organizer after archiving. The report breaks down size by component (code, resources, frameworks) and shows the estimated download size. Apple recommends keeping the App Clip within 8 MB to account for compression variations across different delivery channels.
The App Clip usage scenario consists of four stages. Discovery: the user encounters an NFC tag, QR code or App Clip Code in the physical world. Launch: scanning or tapping loads the App Clip (less than 2 seconds, usually 1 second). Interaction: the App Clip opens as a card with a single function — an order, payment or reservation screen. Completion: the user completes the task and sees an offer to install the full app via SKOverlay or an App Store link.
Apple pays special attention to privacy in App Clip. The system requests camera, geolocation and notification permissions separately for the App Clip. Data created in the App Clip (payment information, preferences) is stored locally and transferred to the full app via CloudKit upon its installation. App Clip cannot request sensitive permissions (Health, Motion, Media Library) — these require installing the full app.
An important feature is SKOverlay, a native iOS element that appears at the bottom of the App Clip screen and offers to install the full app. SKOverlay does not require going to the App Store and works in the context of the current app. The user can install the full app in one tap, and the App Clip automatically transfers all created data after installation.
| Characteristic | App Clip (iOS) | Instant App (Android) |
|---|---|---|
| Size limit | 10 MB compressed | 10 MB total |
| Launch methods | NFC, QR, App Clip Code, Safari, iMessage, geolocation | Deep links, Google Play “Try Now”, NFC, QR |
| Development | Xcode + Swift (single target) | Android Studio + Kotlin (feature modules) |
| Support | iOS 14+ (iPhone, iPod touch) | Android 5.0+ (API 21+) |
| Data storage | Temporary, transferred to full app | Temporary (cookie API), transferred |
| Monetization | Apple Pay, StoreKit | Google Pay, Google Play Billing |
| Visual trigger | App Clip Code (proprietary format) | Standard QR codes |
Both technologies — App Clip and Android Instant App — solve the same problem: instant launch of a native app without installation, but use different platform approaches. App Clip is more limited (iOS only, smaller ecosystem), but offers deep integration with Apple Pay and the Apple device ecosystem. Instant Apps win with broader Android reach and flexible triggers, including standard QR codes without additional infrastructure.
Frequently Asked Questions
App Clips require iOS 14 or later and work on iPhone 6s and later, iPod touch (7th generation) and all iPads with an A9 chip or later. App Clip Code scanning is available through the built-in Camera app. Launch via NFC tags requires iPhone XR/XS or later (iPhone 7/8 can read NFC but cannot launch App Clip).
No, an App Clip must be linked to a full iOS app in the App Store. An App Clip cannot be published independently. The full app and App Clip use the same Apple Developer Team ID and Bundle ID (with a .Clip suffix). Apple positions App Clip as an entry point to the full app, not as a standalone distribution mechanism.
The maximum App Clip size is 10 MB compressed. Apple strictly checks this limit when uploading to the App Store. It is recommended to keep the size within 8 MB to account for compression differences. Use SF Symbols, SwiftUI and minimize third-party dependencies to stay within the limit.
No, App Clips cannot send push notifications. Apple intentionally blocked this capability to prevent spam. Local notifications are allowed within the short lifetime of the App Clip. To receive notifications, the user must install the full app. This is a key difference from PWAs and full native apps.
iOS stores App Clip data for a limited time (typically 7–30 days of inactivity). If the user installs the full app, data is automatically transferred via CloudKit. If no installation occurs, iOS deletes the App Clip and its data. The user can also manually delete the App Clip through Settings in the “App Clips” section.
For a simple scenario (order + payment), adding an App Clip to an existing iOS app usually takes 2–4 weeks for one developer. App Clip uses most of the main app's codebase, so costs are significantly lower than building a separate app from scratch. The main time is spent on size optimization and trigger configuration.
App Clip supports Apple Pay, Sign in with Apple, StoreKit, Core Location, MapKit and PushKit (VoIP only). Unavailable are HealthKit, ResearchKit, HomeKit, CarPlay, Metal (full scope), background modes (background fetch, location updates) and Media Library. App Clip also cannot access the microphone and some device sensors.
Summary
We will develop a mobile application turnkey
IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.
Read also