<!--
{
  "availability" : [
    "macOS: 10.15.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SystemExtensions",
  "identifier" : "/documentation/SystemExtensions/OSSystemExtensionRequestDelegate/request(_:actionForReplacingExtension:withExtension:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "System Extensions"
    ],
    "preciseIdentifier" : "c:objc(pl)OSSystemExtensionRequestDelegate(im)request:actionForReplacingExtension:withExtension:"
  },
  "title" : "request(_:actionForReplacingExtension:withExtension:)"
}
-->

# request(_:actionForReplacingExtension:withExtension:)

Tells the delegate that the user has a different version of the extension installed on their system.

```
func request(_ request: OSSystemExtensionRequest, actionForReplacingExtension existing: OSSystemExtensionProperties, withExtension ext: OSSystemExtensionProperties) -> OSSystemExtensionRequest.ReplacementAction
```

## Parameters

`request`

The request that encountered a conflict.

`existing`

A properties object that describes the installed version of the extension.

`ext`

A properties object that describes the updated version of the extension.

## Return Value

A replacement action the manager should take to resolve the conflict.

## Discussion

The manager calls this method when it encounters an existing extension with the same team and bundle identifiers, but with different version identifiers. It uses the <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/CFBundleVersion> and <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/CFBundleShortVersionString> identifiers to determine if the existing and new versions differ. The delegate must make a decision on whether to replace the existing extension.

Implement this method to return an [`OSSystemExtensionRequest.ReplacementAction`](/documentation/SystemExtensions/OSSystemExtensionRequest/ReplacementAction), which tells the manager what to do. If you return [`OSSystemExtensionRequest.ReplacementAction.cancel`](/documentation/SystemExtensions/OSSystemExtensionRequest/ReplacementAction/cancel), the manager aborts the installation and calls [`request(_:didFailWithError:)`](/documentation/SystemExtensions/OSSystemExtensionRequestDelegate/request(_:didFailWithError:)), with the [`OSSystemExtensionError.Code.requestCanceled`](/documentation/SystemExtensions/OSSystemExtensionError/Code/requestCanceled) error code.

If the local system has System Extension developer mode enabled, the manager always calls this method when it finds an existing installation, even if the version identifiers match.

---

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)