App Studio is still in Beta but already many people are using it to build apps and submit them to the store. Seems reasonable enough as that's what it's for. The only issue is that the apps that it generates contain bugs that mean they shouldn't pass the testing that is done as part of the application certification process. Every time such an app is certified it highlights a failing of the publisher and the store test processes to identify the issues and stop them reaching the consumer.
Even if the person using the app can get past the, arguably, poor design of the generated apps, no one deserves an app that crashes.
So what's the issue?
We'll, the biggest and easiest to demonstrate is an issue that should cause the app to fail the technical certification requirement 5.1.2:
So how do the apps fail this requirement?
The app must handle exceptions raised by the any of the managed or native System API and not close unexpectedly. During the certification process, the app is monitored for unexpected closure. An app that closes unexpectedly fails certification. The app must continue to run and remain responsive to user input after the exception is handled.
Recommendations
When handling exceptions, an app should provide a user-friendly error message. You may present a message that is relevant to the context of the app.
Just follow these simple steps to recreate a crashing scenario:
- Launch the app
- Tap on an item loaded from the internet.
- Pin that item (via the link in the app bar)
- Disconnect the phone's network connection (enabling flight mode is easiest)
- Tap on the pin created earlier.
- Observe the app open for a few seconds without displaying any content before crashing/closing.
I documented this and other issues previously but they all appear to still exist.
Two important lessons:
- Don't assume that a generated app is good enough to release to the store. Test it thoroughly yourself!
- All apps will be used in an occasionaly connected environment. You MUST test the apps behaviour in all network connection scenarios.