Build, test, and submit your app with Apple's integrated development environment.


Xcode consists of a suite of tools that developers use to build apps for Apple platforms. Use Xcode to manage your entire development workflow—from creating your app to testing, optimizing, and submitting it to the App Store.

Screenshot of MacBook Pro running Xcode that shows SwiftUI with a preview and running the app on an iPhone device.

Xcode can launch its development tools, or you can launch them independently from the Xcode > Open Developer Tool menu:

  • Use Simulator for rapid prototyping and testing your app in a simulated environment when a real device isn't available. Simulator provides environments for iPhone, iPad, Apple Watch, and Apple TV devices with different settings, files, and operating system versions. For more information, see Simulator Help.

  • Use Instruments to profile and analyze your app, improve performance, and find memory problems. Instruments collects data and presents the results using different tools called instruments. For more information, see Instruments Help.

  • Use Create ML to create and train custom machine learning models for your app. See Create ML for more information.

  • Use Reality Composer to construct 3D compositions and augmented reality (AR) experiences. See Creating 3D Content with Reality Composer for more information.

To start using Xcode, see Creating an Xcode Project for an App. For additional information, see Xcode Help.



Creating an Xcode Project for an App

Start developing your app by creating an Xcode project from a template.


Creating Your App's Interface with SwiftUI

Develop apps in SwiftUI with an interactive preview that keeps the code and layout in sync.

Supporting Dark Mode in Your Interface

Update colors, images, and behaviors so that your app adapts automatically when Dark Mode is active.

Creating Custom Symbol Images for Your App

Create symbol images and expand on the icons provided by SF Symbols.

Project Configuration

Adding Capabilities to Your App

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

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.


Running Your App in the Simulator or on a Device

Launch your app in a simulated iOS, tvOS, or watchOS device or on a device connected to your Mac.

Improving Your App's Performance

Model, measure, and boost the performance of your app by using a continuous-improvement cycle.

Building Your App To Include Debugging Information

Configure Xcode to produce the symbol information for debugging and crash reports.

Diagnosing Issues Using Crash Reports and Device Logs

Use crash reports and device logs to debug app issues.


Improving Your App's Performance

Model, measure, and boost the performance of your app by using a continuous-improvement cycle.

Reducing Your App’s Size

Measure your app’s size, optimize its assets and settings, and adopt technologies that help streamline installation over a mobile internet connection.


Testing Your Apps in Xcode

Detect logic failures, UI problems, and performance regressions with XCTest.

Adding Unit Tests to your Existing Project

Remove coupling between components to increase test coverage and reliability.


Preparing Your App for Distribution

Configure the information property list and add icons before you distribute your app.

Notarizing macOS Software Before Distribution

Give users even more confidence in your macOS software by submitting it to Apple for notarization.

Distributing Your App for Beta Testing and Releases

Release your app to beta testers and users.

Code Sharing

Creating a Standalone Swift Package with Xcode

Bundle executable or shareable code into a standalone Swift package.

Publishing a Swift Package with Xcode

Publish your Swift package privately, or share it globally with other developers.