Is there a way to remove system extension without rebooting the device?

I am trying to develop a system extension. During development process I often like to create a version, debug it, fix some issue, and then try a new version.

This is a normal flow for development, but it doesn't seem to work for me when developing a system extension.

It seems like removing a system extension using the systemextensionsctl only registers it for removal after the next restart, which means I need to restart my machine for every code change.

it also seems like calling

OSSystemExtensionRequest.activationRequest(forExtensionWithIdentifier: queue: )

with the new extension version will not replace the running one despite the

    _ request: OSSystemExtensionRequest,
    actionForReplacingExtension existing: OSSystemExtensionProperties,
    withExtension ext: OSSystemExtensionProperties
  )

being called on the OSSystemExtensionRequestDelegate

So is there another way to iterate on app extension versions?

I certainly haven't found a way to replace a running system extension (in my case, a Camera Extension), without rebooting. I don't know how this is supposed to be communicated to end users, because the impression given by Apple is that if they update your app (with its built-in extensions), that the extensions are automatically updated. They are, but only at the next reboot.

If you make a protocol change such that App version N only works with Extension version N, but not Extension version N-1, you'll have to tell the user that they need to reboot. The OS won't tell the user.

That's a sham...how about when developing the extension? Did you find a way to locally replace the extension without a reboot of the dev machine?

Is there a way to remove system extension without rebooting the device?
 
 
Q