<!--
{
  "availability" : [
    "iOS: 11.0.0 -",
    "iPadOS: 11.0.0 -",
    "visionOS: 1.0.0 - 1.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "ARKit",
  "identifier" : "/documentation/ARKit/ARSession",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ARKit"
    ],
    "preciseIdentifier" : "c:objc(cs)ARSession"
  },
  "title" : "ARSession"
}
-->

# ARSession

The object that manages the major tasks associated with every AR experience, such as motion tracking, camera passthrough, and image analysis.

```
class ARSession
```

## Overview

An `ARSession` object coordinates the major processes that ARKit performs on your behalf to create an augmented reality experience. These processes include reading data from the device’s motion sensing hardware, controlling the device’s built-in camera, and performing image analysis on captured camera images. The session synthesizes all of these results to establish a correspondence between the real-world space the device inhabits and a virtual space where you model AR content.

### Create a Session

Every AR experience requires an `ARSession`. If you implement a custom renderer, you instantiate the session yourself.

```swift
let session = ARSession()
session.delegate = self
```

If you use one of the standard renderers (like <doc://com.apple.documentation/documentation/RealityKit/ARView>, [`ARSCNView`](/documentation/ARKit/ARSCNView), or [`ARSKView`](/documentation/ARKit/ARSKView)), the renderer creates a session object for you. When you want to interact with your app’s session, you access it on your app’s renderer.

```swift
let session = myView.session
```

### Run a Session

Running a session requires a configuration. Subclasses of [`ARConfiguration`](/documentation/ARKit/ARConfiguration) determine how ARKit tracks a device’s position and motion relative to the real world, and thus it determines the kinds of AR experiences you create. For example, [`ARWorldTrackingConfiguration`](/documentation/ARKit/ARWorldTrackingConfiguration) enables you to augment the user’s view of the world around them though the device’s back camera.

## Topics

### Configuring and running a session

[`run(_:options:)`](/documentation/ARKit/ARSession/run(_:options:))

Starts AR processing for the session with the specified configuration and options.

[`runWithConfiguration:`](/documentation/ARKit/ARSession/runWithConfiguration:)

Starts AR processing for the session with the specified configuration.

[`identifier`](/documentation/ARKit/ARSession/identifier)

A unique identifier of the running session.

[`ARSession.RunOptions`](/documentation/ARKit/ARSession/RunOptions)

Options for transitioning an AR session’s current state when you change its configuration.

[`configuration`](/documentation/ARKit/ARSession/configuration)

An object that defines motion and scene tracking behaviors for the session.

[`pause()`](/documentation/ARKit/ARSession/pause())

Pauses processing in the session.

### Responding to events

[`delegate`](/documentation/ARKit/ARSession/delegate)

An object you provide to receive captured video images and tracking information, or to respond to changes in session status.

[`delegateQueue`](/documentation/ARKit/ARSession/delegateQueue)

The dispatch queue through which the session calls your delegate methods.

[`ARSessionDelegate`](/documentation/ARKit/ARSessionDelegate)

Methods you can implement to receive captured video frame images and tracking state from an AR session.

[`ARSessionObserver`](/documentation/ARKit/ARSessionObserver)

Methods you can implement to respond to changes in the state of an AR session.

### Managing anchors

[`add(anchor:)`](/documentation/ARKit/ARSession/add(anchor:))

Adds the specified anchor to be tracked by the session.

[`remove(anchor:)`](/documentation/ARKit/ARSession/remove(anchor:))

Removes the specified anchor from tracking by the session.

### Saving or sharing state

[`getCurrentWorldMap(completionHandler:)`](/documentation/ARKit/ARSession/getCurrentWorldMap(completionHandler:))

Returns an object encapsulating the world-tracking session’s space-mapping state and set of anchors.

[Recording and Replaying AR Session Data](/documentation/ARKit/recording-and-replaying-ar-session-data)

Record an AR session in Reality Composer and replay it in your ARKit app.

### Scanning 3D objects

[`createReferenceObject(transform:center:extent:completionHandler:)`](/documentation/ARKit/ARSession/createReferenceObject(transform:center:extent:completionHandler:))

Creates a reference object (for 3D object detection) from the specified region of the session’s world space.

### Updating the world origin

[`setWorldOrigin(relativeTransform:)`](/documentation/ARKit/ARSession/setWorldOrigin(relativeTransform:))

Changes the basis for the AR world coordinate space using the specified transform.

### Finding real-world surfaces

Cast a ray from a point on the screen to find intersections with real-world surfaces.

[`raycast(_:)`](/documentation/ARKit/ARSession/raycast(_:))

Checks once for intersections between a ray and real-world surfaces.

[`trackedRaycast(_:updateHandler:)`](/documentation/ARKit/ARSession/trackedRaycast(_:updateHandler:))

Repeats a ray-cast query over time to notify you of updated surfaces in the physical environment.

### Converting local coordinates to geographic coordinates

[`getGeoLocation(forPoint:completionHandler:)`](/documentation/ARKit/ARSession/getGeoLocation(forPoint:completionHandler:))

Converts a position in the framework’s local coordinate system to latitude, longitude and altitude.

### Accessing the camera frame

[`currentFrame`](/documentation/ARKit/ARSession/currentFrame)

The most recent still frame captured by the active camera feed, including ARKit’s interpretation of it.

[`ARFrame`](/documentation/ARKit/ARFrame)

A video image captured as part of a session with position-tracking information.

[`captureHighResolutionFrame(completion:)`](/documentation/ARKit/ARSession/captureHighResolutionFrame(completion:))

Requests a frame outside of the normal frequency that contains a high-resolution captured image.

### Managing collaboration

[`update(with:)`](/documentation/ARKit/ARSession/update(with:))

Updates your session with information about the physical environment that is collected by another user.

[`ARSession.CollaborationData`](/documentation/ARKit/ARSession/CollaborationData)

An object that holds information that a user has collected about the physical environment.

### Providing a session

[`ARSessionProviding`](/documentation/ARKit/ARSessionProviding)

An object that provides a session.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)