# Custom Configuration

ContextSDK operates seamlessly in the background, designed from the ground up to minimize resource usage and have no impact on your app’s performance. For most use cases, we recommend keeping the default settings unless you have specific requirements.

If needed, you can customize these options by passing a `Configuration` object to the `applicationDidFinishLaunchingWithOptions` method, as seen here:

{% code title="AppDelegate.swift" %}

```swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // …
    let config = Configuration(…)
    ContextManager.applicationDidFinishLaunchingWithOptions(launchOptions, licenseKey: "YOUR_LICENSE_KEY", configuration: config)
    // …
}
```

{% endcode %}

## Configuration Options

### App Group Identifier

{% hint style="info" %}
Required for ContextPush reporting because the Notification Service Extension relies on App Group data sharing.
{% endhint %}

The `appGroupIdentifier` enables data sharing between your main app and a Notification Service Extension. This allows the extension to verify your license and share user preferences.

```swift
let config = Configuration(appGroupIdentifier: "group.com.yourcompany.yourapp")
```

**Requirements:**

* Both main app and extension must have the App Groups capability enabled
* Both must use the same App Group identifier
* The main app must be launched at least once after configuration to initialize shared data

See [Notification Service Extension](https://docs.contextsdk.com/context-push/notification-service-extension) for complete setup instructions.

***

For a comprehensive list of all configuration options, please refer to our [iOS SDK Reference (Configuration)](https://context-sdk.github.io/docs-ios/documentation/contextsdk/configuration).
