On multitasking and Safari ViewControllers
The new Safari ViewController that’s part of iOS 9 is one of my favorite new features introduced by Apple in recent years. It makes surfing the web a lot faster, continuous login and cookie sharing across apps is super easy, and I can only praise the uniform experience across apps.Ever since its release I’ve gradually phased out apps that don’t support the in-app Safari experience for ones that do. It makes the apps good citizens of iOS, and, combined with support for split screen multitasking, allows for a more productive workflows. Less app switching means less time lost by the animations and less confusion of where you were working.
I wouldn’t be writing this article if I didn’t have some issues with its implementation. Take the screenshot above as an example: Tweetbot as a secondary app on the right, Safari as the app in focus in the left:
I love browsing Twitter via Tweetbot in side mode next to other apps. It’s big enough to read and follow the timeline, but it allows for the main app I’m working in to be bigger and in focus.
But when I click a link in Tweetbot (the Tapbots website in this case) Tweetbot opens up the website in the SafariViewController by default. It’s expected behavior but it’s not the optimal behavior. There’s a bigger canvas on the left which gives me a better way to view the website and would keep Tweetbot focused on what it does best: show Twitter.
A better way
What I’d like in a perfect scenario would be the following:
Default behavior: SafariViewController
When the app is in the premium slot on the left, or full screen, it would know it’s using the larger size class, and would show the link in-app via Safari ViewController since its already the focus of the user.
Multitasking behaviour: redirect to Safari
The app in tiny mode on the right knows it’s using the smaller size class and is considered the lesser of the two apps currently in view. When clicking a link it doesn’t open the link in a SafariCiewController, its default behavior, but it would pass the link to the real Safari instead. The app keeps its current view, and the user gets a better experience browsing the web.