Article

Creating Independent watchOS Apps

Set up a watchOS app that installs and runs without an iOS companion app.

Overview

Apple Watch users have come to expect that the apps on their watches just work, even when they don’t have their iPhones with them. To ensure the best experience for all Apple Watch users, create an independent watchOS app that doesn’t require an iOS companion.

You can organize a watchOS project in one of two ways:

Watch-only app

Use this option when creating a new experience that’s only available on Apple Watch, with no related iOS app.

watchOS app with an iOS app

Use this option when you have an iOS app and want to provide a watchOS app that delivers a similar or related experience.

Specify the type of watchOS project you want to build when you create the watchOS target. Additionally, if you bundle your watchOS app with an iOS app, you must specify how the watchOS app interacts with the iOS companion.

  • Independent apps don’t need an iOS companion app to operate properly. Users can choose to install the iOS app, the watchOS app, or both.

  • Dependent apps rely on the iOS companion to function properly; create dependent apps only when the watchOS app needs to interact with the companion. Users must purchase and install the watchOS app with its iOS companion. In watchOS 5 and earlier, all watchOS apps are dependent apps.

In watchOS 6 and later, users can purchase watchOS apps directly from the App Store on Apple Watch (see Figure 1). The system downloads and installs the watchOS app directly to Apple Watch, regardless of the app type (independent or dependent). For dependent apps, the user can’t launch the watchOS app until the iOS app finishes installing. For more information on specifying whether an app is dependent or independent, see Convert a Dependent App into an Independent App.

Figure 1

The App Store on Apple Watch

A screenshot of the App Store on Apple Watch.

Create a Watch-Only App

To build a watch-only app, start a new project in Xcode and choose the App template (see Figure 2).

Figure 2

Selecting the App template

A screenshot showing the App template and the iOS App with Watch App template. The App template is selected.

Xcode divides the project into two sections (see Figure 3). The WatchKit app contains your app’s storyboard and the assets used by the storyboard. The WatchKit extension contains your app’s code.

Figure 3

The contents of a new watch-only project

A screenshot of the Project navigator for an independent watch-only app. This project only contains the WatchKit app and the WatchKit extension. There is no iOS app.

Xcode also creates three targets for your app (see Figure 4).

Figure 4

The three targets for an independent watch-only app

A screenshot showing the targets in the Project editor, with the WatchKit App selected.

The root target is a stub, and acts as a wrapper for your project, so that you can submit it to the App Store. The other two are identical to the targets found in a traditional watchOS project. They represent your WatchKit app and WatchKit extension, respectively.

Convert a Dependent App into an Independent App

If you have a watchOS app that you’d like to convert into an independent app, do the following:

  1. In Xcode, open the WatchKit Extension’s General tab.

  2. Scroll down to Deployment Info.

  3. Select “Supports Running Without iOS App Installation” (see Figure 5).

Figure 5

Enabling the ability to run without an iOS companion app

A screenshot showing the “Supports Running Without iOS App Installation” setting in the General tab’s Deployment Info section.

In Xcode 11 and later, the system enables this setting by default when you create a new watchOS target.

Ensure Your App Runs Independently

Independent apps must function without relying on a companion iOS app. This functionality includes performing tasks like downloading data, setting up the user’s account, or configuring the app.

Specifically, an independent watchOS app must:

  • Let users sign in and create new accounts on Apple Watch. For more information, see Authenticating Users on Apple Watch.

  • Request permission on the watch for any system services that it requires. Users should never need to authorize an app on their iPhone. For example, in watchOS 6 and later, apps that use HealthKit can request user authorization on Apple Watch.

  • Download data directly to the watch. Independent apps can’t rely on WatchConnectivity to transfer data or files from an iOS companion app. If you need to sync data between devices, consider using CloudKit, or syncing through your own server. For more information, see Keeping Your watchOS Content Up to Date.

  • Send push notifications, including complication pushes, directly to the watch. For more information, see registerForRemoteNotifications().

An independent app can use WatchConnectivity to transfer information from its iOS companion app when the iOS device is available. However, the independent app can’t use WatchConnectivity as its main source of data, and must be capable of accessing information on its own.

Topics

Setting Up the Project

Setting Up a watchOS Project

Create a new watchOS project, or add a watch target to an existing iOS project.

See Also

Essentials

Creating an Effective watchOS Experience

Develop a complete watch experience that emphasizes brief interactions and presents the right information at exactly the right time.

Building watchOS App Interfaces with SwiftUI

Create your app’s user interface by programmatically composing single-responsibility views.

Creating a watchOS App with SwiftUI

Use common SwiftUI elements and watch-specific features in a comprehensive sample app.