---
title: ARSession
framework: arkit
role: symbol
role_heading: Class
path: arkit/arsession
---

# ARSession

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

## Declaration

```swift
class ARSession
```

## Mentioned in

Displaying an AR Experience with Metal Managing Session Life Cycle and Tracking Quality

## Overview

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. let session = ARSession() session.delegate = self If you use one of the standard renderers (like ARView, ARSCNView, or 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. let session = myView.session Run a Session Running a session requires a configuration. Subclasses of 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 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:)](arkit/arsession/run(_:options:).md)
- [identifier](arkit/arsession/identifier.md)
- [ARSession.RunOptions](arkit/arsession/runoptions.md)
- [configuration](arkit/arsession/configuration.md)
- [pause()](arkit/arsession/pause().md)

### Responding to events

- [delegate](arkit/arsession/delegate.md)
- [delegateQueue](arkit/arsession/delegatequeue.md)
- [ARSessionDelegate](arkit/arsessiondelegate.md)
- [ARSessionObserver](arkit/arsessionobserver.md)

### Managing anchors

- [add(anchor:)](arkit/arsession/add(anchor:).md)
- [remove(anchor:)](arkit/arsession/remove(anchor:).md)

### Saving or sharing state

- [getCurrentWorldMap(completionHandler:)](arkit/arsession/getcurrentworldmap(completionhandler:).md)
- [Recording and Replaying AR Session Data](arkit/recording-and-replaying-ar-session-data.md)

### Scanning 3D objects

- [createReferenceObject(transform:center:extent:completionHandler:)](arkit/arsession/createreferenceobject(transform:center:extent:completionhandler:).md)

### Updating the world origin

- [setWorldOrigin(relativeTransform:)](arkit/arsession/setworldorigin(relativetransform:).md)

### Finding real-world surfaces

- [raycast(_:)](arkit/arsession/raycast(_:).md)
- [trackedRaycast(_:updateHandler:)](arkit/arsession/trackedraycast(_:updatehandler:).md)

### Converting local coordinates to geographic coordinates

- [getGeoLocation(forPoint:completionHandler:)](arkit/arsession/getgeolocation(forpoint:completionhandler:).md)

### Accessing the camera frame

- [currentFrame](arkit/arsession/currentframe.md)
- [ARFrame](arkit/arframe.md)
- [captureHighResolutionFrame(completion:)](arkit/arsession/capturehighresolutionframe(completion:).md)

### Managing collaboration

- [update(with:)](arkit/arsession/update(with:).md)
- [ARSession.CollaborationData](arkit/arsession/collaborationdata.md)

### Providing a session

- [ARSessionProviding](arkit/arsessionproviding.md)

### Instance Methods

- [captureHighResolutionFrame(using:completion:)](arkit/arsession/capturehighresolutionframe(using:completion:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### iOS

- [Verifying Device Support and User Permission](arkit/verifying-device-support-and-user-permission.md)
- [ARAnchor](arkit/aranchor.md)
- [ARKit in iOS](arkit/arkit-in-ios.md)
