App Clips Setup for iOS (Mini Apps)

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
App Clips Setup for iOS (Mini Apps)
Medium
~3-5 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Setting Up App Clips for iOS (Mini-Apps)

App Clip is a part of the main application up to 15 MB in size, which users launch instantly via QR code, NFC tag, Safari Banner, or link in Maps — without installing the full app. Parking payment, quick café order, event registration: scenarios where the requirement "first install the app" kills conversion.

Architecture: Target and Shared Code

App Clip is a separate target in Xcode (AppClip), not a separate application. It shares code with the main app through shared frameworks or direct inclusion of files in both targets. Principal limitation: App Clip cannot access main app data (different sandboxes), but can transfer data on subsequent installation via NSUserActivity.

Project structure:

MyApp (main target)
├── Sources/
│   ├── SharedFeatures/   ← compiled in both targets
│   └── MainAppOnly/
MyAppClip (App Clip target)
└── Sources/
    └── ClipEntry.swift

Add file to both targets: Build Phases → Compile Sources → add common files to MyAppClip.

App Clip Info.plist requires NSAppClip dictionary with NSAppClipRequestEphemeralUserNotification and NSAppClipRequestLocationConfirmation — if notifications and geolocation are needed. Without explicit specification, Clip won't be able to request these permissions.

App Clip Experience URL

Each App Clip launches via URL. URL is registered in App Store Connect → App Clips → Add New App Clip Experience. Format:

https://example.com/clips/parking?lot=A1

In App Clip code, handle URL via NSUserActivityTypesNSUserActivityTypeBrowsingWeb:

@main
struct AppClipEntry: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { activity in
                    guard let url = activity.webpageURL else { return }
                    handleClipURL(url)
                }
        }
    }

    func handleClipURL(_ url: URL) {
        // Parse parameters: lot=A1
        let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
        let lot = components?.queryItems?.first(where: { $0.name == "lot" })?.value
        // Open appropriate screen
    }
}

URL association is configured via apple-app-site-association file on server:

{
    "appclips": {
        "apps": ["TEAMID.com.example.myapp.Clip"]
    }
}

File must be available at https://example.com/.well-known/apple-app-site-association with Content-Type application/json.

Payments and Authorization in App Clip

Apple Pay — works in App Clip without restrictions. That's why payment scenarios are the main use of Clips. PKPaymentAuthorizationViewController connects standardly.

Sign in with Apple — works. Important: user gets ephemeral identifier for App Clip, different from identifier in main app. On full app installation, handle migration via SKOverlay:

// Offer full app installation after successful action
let config = SKOverlay.AppClipConfiguration(position: .bottom)
let overlay = SKOverlay(configuration: config)
overlay.present(in: windowScene)

Ephemeral notifications — App Clip can request notification permission without standard system dialog, but only for Clip session duration (8 hours). Requested via NSAppClipRequestEphemeralUserNotification.

Testing

Local testing: MyAppClip scheme + environment variable _XCAppClipURL with test URL. Xcode launches Clip in simulation mode without needing App Store Connect registration.

Scheme Environment Variables:
_XCAppClipURL = https://example.com/clips/parking?lot=A1

Testing via TestFlight: full App Clip experience with real QR/NFC — only via TestFlight or production. Simulator doesn't support NFC.

Limitations to Know

  • No access to HealthKit, HomeKit, CallKit
  • No background tasks (Background Tasks)
  • CloudKit available only for reading public records
  • Size 15 MB — after App Store compression, not bundle size in project

Timeline Benchmarks

App Clip target setup, URL association, basic flow with Apple Pay — 3 days. Full scenario with data transfer to main app, SKOverlay, TestFlight testing — 4–5 days.