Add builds for different targets
You can't have separate builds with the same BundleID shipped to the AppStore. If you really want to have "Something special" for devices that are ARKit capable - Use some kind of checks during the app launch. Here's the quote from Apple


  Important
  All ARKit configurations require an iOS device with an A9 or later processor. If your app otherwise supports other devices and offers augmented reality as a secondary feature, use this property to determine whether to offer AR-based features to the user.
  If your app requires ARKit for its core functionality, use the arkit key in the UIRequiredDeviceCapabilities section of your app's Info.plist to make your app available only on devices that support ARKit.


So you can use ARConfiguration.isSupported to check the device capabilities in the runtime. If It's not supported fallback to the "Old" implementation.

In order to compile the code for targets &lt; 11 you can mark methods or even classes with @available(iOS 11.0, *) like so:

@available(iOS 11.0, *)
func doSomeARStuff() {
    if ARConfiguration.isSupported { print("Supported") }
}


In order to call those methods using your existing code do it like:

if #available(iOS 11.0, *) {
    doSomeARStuff()
} else {
    // Fallback on earlier versions
}