Apple regularly provides platform updates to add new features, fix bugs, and continue to improve the experience for everyone who uses our products. As part of that process, we offer beta software for developers as well as a Public Beta Software Program. This lets developers test apps on upcoming software, address pesky bugs, and provide information to engineering teams around upcoming software changes and improvements.
While we encourage people to only install beta software on a secondary device, you may still find that some of your customers want to run your app while using a beta version of an operating system. Here are some of the ways to ensure your app’s stability for those people, get feedback from them, and provide some of your own to Apple’s engineering teams.
Test early, test often
When new beta software is released, we recommend downloading it as soon as possible to test with your existing apps. Not only is it an opportunity to ensure your app continues to work well, but it also puts you in a great position to experiment with our latest APIs and features.
The earlier you test, the earlier you can identify possible bugs or issues and flag them to Apple engineers. It’s also your best opportunity to register feedback around new features and influence future operating system updates.
Triage the trouble
Sometimes, changes to an API or operating system updates in an early beta may seriously affect your app. This is never a great feeling, but don’t panic! Chances are, many of your fellow developers are in the same boat. First, do a bit of triage to identify the problem. Is this a system issue, or a latent bug in your own code?
To troubleshoot, isolate your issue by creating a minimally-reproducible case in a new Xcode project. When you only focus on the code that causes the bug, the problem can often be easier to find — and this also gives you a smaller project that you can share with others to troubleshoot or attach to a bug report.
If you find that the beta has revealed an existing bug in your code, you may be able to fix it immediately and provide an update that makes your app more stable for both people on production as well as those running beta software.
Sometimes you may be able to isolate the code in such a way that you can reproduce the issue on shipping software. If that’s the case, and if you need help fixing it, submit a Technical Support Incident for code-level support.
If there’s an issue with the beta itself that’s preventing you from providing a fix, it’s time to file some feedback. Even if you think others have filed this bug before, you should always send in a report: Your reproduction steps and data could be the key that unlocks the problem, or pushes the issue to a higher level of prioritization.
Amidst all the work you’re already doing on your app, you may be tempted to post a blanket statement to your website or within your app that you aren’t providing support for people who use beta software. We strongly discourage this approach: Your customers may be fellow developers or need to run beta software for another reason, and deterring them from running your app may make them feel shut out or lose trust in your software. Instead, if you’re running into a serious problem on a beta that may make for a sub-par experience that you haven’t been able to address in an update, consider sharing your issue on your website and social media channels, as well as the steps you’re taking to address it.
Though people running beta software on their devices can’t leave reviews for your app in the App Store, they still might have valuable feedback for you. Consider creating an easy way for your customers to provide bug reports — they may find something you’ve missed!
Connect with the community
Are you struggling to fix an issue brought on by a beta update? Consider reaching out to our broader developer community and post to the Apple Developer Forums. Your question may be able to help others who may be struggling with similar challenges.
Future-proof your app
Outside of the beta release cycle, it’s worth taking a look at your project and any server-side code you maintain to see if there are ways you can improve and future-proof aspects of your app.
- Can you fix or remove any additional warnings in your Xcode project?
- Do you have any code that relies on a specific OS version or deprecated API that you update or make OS-agnostic?
- Are you using any third-party frameworks that rely on deprecated code?
- Can you improve your app’s error handling to continue gracefully when encountering unexpected issues?