Adding Capabilities to Your App

Add capabilities to configure app services provided by Apple, such as push notifications, or Apple Pay.


A capability grants your app access to an app service provided by Apple, such as CloudKit, Game Center, or In-App Purchase. To use some app services, you must provision your app, adding a capability with Xcode's project editor that configures the app service correctly for you. Xcode edits the Entitlements and Information Property List files, adds related frameworks, and configures your signing assets.

However, some app services—such as Game Center and In-App Purchase—require additional configuration in App Store Connect and your developer account. For example, you need to upload a geographic coverage file using App Store Connect for an app that uses Maps to provide directions for other apps.

The platform, and whether you're a member of the Apple Developer Program, may limit the capabilities available to your app. For the supported capabilities, go to the Reference section of Developer Account Help—for example, go to Supported capabilities (iOS) for the capabilities available to iOS apps.

Before you begin, add your Apple ID account and assign the project to a team so that Xcode can provision your app. For iOS, tvOS, and watchOS apps, run your app on a device to register a device and create a development provisioning profile.

Add a Capability

You add capabilities to your app using the Signing & Capabilities pane of the project editor.

In the Project navigator of the main window, select the project (the root group with the same name as your app), and in the project editor that appears on the right, select the target. Choose the target for the app from either the Project/Targets pop-up menu or in the Targets section of the outline view. Then click the Signing & Capabilities tab in the project editor.

Screenshot showing the Signing & Capabilities pane, where you choose a project and target, and click to show the pane.

Optionally, select a build configuration (All, Debug, or Release). For example, if you want to add the capability to the Debug configuration only, select Debug; otherwise, select All.

In the toolbar, click the Library button (+) to open the Capabilities library (alternatively, click + Capability to the left of the build configurations, or choose Editor > Add Capability). The Capabilities library displays only the capabilities available to the target platform and your program membership.

To see a description of each capability, click the Show Details button in the upper-right corner of the library. Select a capability on the left to read a description on the right.

Screenshot showing the Signing & Capabilities pane with the App Groups capability added, controls to select and create an app group, and button to remove the capability.

To add a capability to the app target, double-click the capability in the library or drag the capability from the library to the Signing & Capabilities pane. The capability appears below the Signing section. If there are more configuration steps, the capability expands to show additional controls (see Perform Additional Configuration Steps). To remove a capability, click the X button in the upper-right corner of the capability in the Signing & Capabilities pane.

Screenshot showing the Capabilities library with a capability selected, and showing the detail view where you can read a description of the capability.

If errors appear in the Signing section, read the message, correct the problem, then click Try Again. For example, the bundle ID (CFBundleIdentifier) that appears in the Bundle Identifier field under Signing needs to be unique. The default value for the bundle ID is the organization identifier concatenated with the app name that you entered when creating the project.

Perform Additional Configuration Steps

For some capabilities, you may need to perform additional configuration steps in Xcode, your developer account, or App Store Connect. For other capabilities, you may need to write some code.

For more guidance on specific capabilities, see the table below.

See Also

Project Configuration

Adding Package Dependencies to Your App

Integrate package dependencies to share code between projects, or leverage code written by other developers.

Creating a Mac Version of Your iPad App

Bring your iPad app to macOS with Mac Catalyst.