Zendesk policy on Apple's iOS, Xcode, and Swift updates
This article answers common questions about the Zendesk update policy for its iOS SDKs.
How does Zendesk distribute its SDKs, and what's the impact when a new version of Swift, Xcode, or iOS is released?
Most of the Zendesk mobile SDKs are written in Swift, with the exception of the 1.x versions of the Chat SDK. Each Zendesk mobile SDK is also distributed as a closed-source SDK (which means the SDK code is pre-compiled before being distributed to our customers).
The combination of Swift and closed-source means that Zendesk may need to release new versions of the SDKs every time Apple releases a new version of Swift, Xcode, or iOS. Our customers may also not be able to use previous versions of the SDKs on top of the new versions without using a newly compiled version.
Zendesk has been waiting for Swift Module Stability for a long time. Apple is finally targeting its release as stable to Swift 5.1, and Zendesk is already working on integrating it in its iOS SDKs. As soon as Swift 5.1 is released in a stable version, Zendesk will support module stability and forward-compatibility with future versions of Swift won't be a problem anymore.
When Apple releases a new iOS or Xcode version (or Swift, until Apple releases the fully stable Swift Module Stability), the Zendesk policy for updating its iOS SDKs is as follows:
Zendesk doesn't release any versions of the mobile SDKs based on alpha releases from Apple.
When a beta version is released by Apple, Zendesk attempts to build the SDKs with the “Beta n” version:
- If the build passes, we run our automated test suites on it and release it. Normally a production release would involve more testing, including manual tests, but this would delay delivering the Beta build.
- If the build fails, we attempt to debug any issues though we can’t guarantee that we'll have a build for that beta. In the past, we faced some bugs from Apple on beta releases which prevented us from compiling for that specific version. The problem was usually solved in one of the following versions.
When the iOS, Xcode, or Swift version becomes a GM release, Zendesk builds the SDKs with that specific GM:
- If the build fails, we debug the issue until we have a successful build. This successful build is run against our automated test suites and released. We also shortly follow up this build with another release that has undergone a regression test.
Note that the build time is especially tricky with beta releases. Following industry best-practices and together with the majority of the iOS community, our build and release pipeline relies on third parties such as CI providers and testing facilities. If they do not provide beta compatibility, producing builds of our SDKs requires much more manual effort and is prone to errors.