An object that defines the particular ARKit features enabled in your session at a given time.


class ARConfiguration : NSObject


ARConfiguration defines a base class for the different options you can configure in your AR experience. You don't allocate ARConfiguration yourself; instead, you instantiate one of its subclasses.

Choose Your Configuration

To implement the features of your AR experience, you create one of the following subclasses and run it on your session via run(with:). A session can run only one configuration at a time, so choose the one that best facilitates the desired AR experience.


Tracks the device's position and orientation relative to any surfaces, people, or known images and objects that ARKit may find and track using the device's rear camera.


Enables you to track a person, planes, and images using the device's rear camera.


Tracks only the device's orientation using the rear camera.


Tracks only known images you provide via trackingImages using the device's rear camera.


Tracks only faces in the device's selfie camera, including movement and facial expressions.


Uses the rear camera to collect high-fidelity data about specific objects you want your app to recognize later, at runtime.


Tracks only the device's position in 3D space.

Choose Frame Features

Some configurations support subfeatures relating to a session's frame. You enable these features by setting the following flags in the configuration's frameSemantics:


Enables 2D human body tracking.


Enables people occlusion.


Enables people occlusion based on whether the people in the camera feed are closer to the camera than the virtual content.

Switch Configurations at Runtime

When you want to toggle features like plane detection, frame semantics, and environment texturing, you switch your configuration at runtime by calling run(with:) on your existing session. Where possible, ARKit maintains all the information collected during the session under the prior configuration, such as information about the physical environment and anchors.


Verifying Device Support

class var isSupported: Bool

A Boolean value indicating whether the current device supports this session configuration class.

Enabling Frame Features

var frameSemantics: ARConfiguration.FrameSemantics

The set of active semantics on the frame.

struct ARConfiguration.FrameSemantics

Types of optional frame features you can enable in your app.

class func supportsFrameSemantics(ARConfiguration.FrameSemantics) -> Bool

Checks whether a particular feature is supported.

Configuring the AR Session

var isLightEstimationEnabled: Bool

A Boolean value specifying whether ARKit analyzes scene lighting in captured camera images.

var worldAlignment: ARConfiguration.WorldAlignment

A value specifying how the session maps real-world device motion into a 3D scene coordinate system.

enum ARConfiguration.WorldAlignment

Options for how ARKit constructs a scene coordinate system based on real-world device motion.

Managing Video Capture Options

var videoFormat: ARConfiguration.VideoFormat

The video capture size and frame rate to be used for sessions running this configuration.

class var supportedVideoFormats: [ARConfiguration.VideoFormat]

The set of video capture formats available on the current device.

class ARConfiguration.VideoFormat

A video size and frame rate specification for use with an AR session.

Recording Audio

var providesAudioData: Bool

A Boolean value that specifies whether to capture audio during the AR session.

Reconstructing the Scene

struct ARConfiguration.SceneReconstruction

Options that enable ARKit to detect the shape of the physical environment.


Inherits From

See Also


Choosing Which Camera Feed to Augment

Augment the user's environment through either the front or back camera.

Verifying Device Support and User Permission

Check whether your app can use ARKit and respect user privacy at runtime.

Managing Session Lifecycle and Tracking Quality

Keep the user informed on the current session state and recover from interruptions.

class ARSession

The main object you use to control an AR experience.

class ARAnchor

A position and orientation of something of interest in the physical environment.