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

# runWithConfiguration:

Starts AR processing for the session with the specified configuration.

```
- (void) runWithConfiguration:(ARConfiguration *) configuration;
```

## Parameters

`configuration`

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

## Discussion

The session tracks device motion, captures and processes scene imagery from the device camera, and coordinates with your [`delegate`](/documentation/ARKit/ARSession/delegate) object or [`ARSCNView`](/documentation/ARKit/ARSCNView) or [`ARSKView`](/documentation/ARKit/ARSKView) view only when running.

Calling this method on a session that has already started transitions immediately to the new session configuration. After you call this method, the session runs asynchronously.

To determine how existing session state transitions to the new configuration, use the [`run(_:options:)`](/documentation/ARKit/ARSession/run(_:options:)) method instead. Calling [`runWithConfiguration:`](/documentation/ARKit/ARSession/runWithConfiguration:) is equivalent to calling [`run(_:options:)`](/documentation/ARKit/ARSession/run(_:options:)) with no options enabled.

---

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)