In probably just a few short weeks, the biggest change to iOS will be rolling out across iPhones, iPads, and iPods all over the world. Whether or not you’re a fan of the new visual design, iOS 7 is shaping up to be a groundbreaking mobile OS. It’s got dozens of killer new features for users and over 1,500 brand-new APIs for developers. It’s also going from skeuomorphic to flat in one fell swoop.
What all that means for a developer who is transitioning their app to fully take advantage of the new OS is that they have their work cut out for them. But is it worth it? What are the pros and the cons of getting your app ready for Apple’s new OS?
I talked to seven developers who gave me their opinion. Here’s what they had to say.
Cons: "Transitioning from one version of iOS to another is always a challenge. Not because the new API features are difficult to understand, but because you as a developer get so excited with the new possibilities that you almost forget you have to support previous versions—meaning, all these new cool developer "gadgets" (APIs) are not available for people who haven’t upgraded yet (or won't). If you have built a strong customers base you unfortunately cannot force them to update just like that.
One of the cons when preparing the app for iOS 7 is having to change somewhat the way you think about animations in screen and image processing. Things can be very simplified with the new APIs, if you're a developer in the image processing category, like me. With iOS 7 your app does gain value from cool animation and other UI tweaks, so you don't want to miss the chance of integrating cool-looking features. But there is a learning curve—a bigger one this time—that makes this task a big one. Sure, you can keep your UI as it is, but everyone else is going to study all the new, cool, innovative ways to show off content and change their UI and animations to build more attractive apps, so why not you?"
Pros: "On the pros side are creativity—both stylish and programatic; simplicity—again, both stylish and programatic; and a number of interesting solutions to the most common problems we developers face daily. Apple doesn't upgrade just to raise a number, they dig really deep into what developers struggle with on their current apps and try to simplify everything they can. By doing that, you as a developer get presented with wonderful new tools, and Apple—responsible for the hardware and operating system—gets stability, high performance, and attractiveness into their products.
I cannot think of better times than these for a developer to solve problems and create great-looking, fast-working apps for the most beautiful devices in the world. I love iOS 7 and it is going to set a big mark for mobile development."
Cons: "Supporting iOS 7 is major investment. We've been working nonstop on our iOS 7 since the WWDC. This has delayed other improvements we planned, but we believe it is well worth the effort to update our design to iOS 7 principles.
One thought I've heard from other developers is that apps should go iOS 7 only. I think that's a big mistake. We're spending the effort required to support iOS 5 through iOS 7 versions in one application. Keeping the loyalty of our installed base is extremely important. A majority of customers will likely switch to iOS 7 inside of a few months, but some will take longer, and it's worth helping them through the transition."
Pros: "Following the iOS 7 design principles of deference, clarity, and depth will lead to better applications. The timing was great for us, because our apps were due for a user interface update after four years of functionality-focused updates.
Platform transitions like these separate the great developers from the good developers. Software development is a marathon, and the competition may stumble in this transition."
Cons: "Talking about pros/cons of moving apps on iOS 7 we touch two points here—writing new apps and making existing iOS 6 apps compatible with iOS 7. Taking existing apps—it is not even pros/cons; it is a need because if you don’t make an app compatible with a new version of iOS you will have problems when people start upgrading. Taking new apps—I would say the term 'moving apps to iOS 7' means creating apps with features that appear in iOS 7. From this point I would say we have pros/cons. The cons are:
iOS 7 is formally compatible with the still-popular iPhone 4, but really it runs very slowly on it. This means a loss of audience. Many people will not upgrade because of that and if you set your app target as iOS 7 you lose those people. Likewise, iOS 7 is not officially compatible with the iPhone 3GS and similar iPods. Many people will not upgrade and if you set your app target as iOS 7— meaning you lose those people as well.
The UIKit framework in the iOS 7 SDK is quite different from several previous versions. As a result many standard UI controls look different. Sometimes it is just not good-looking and sometimes it looks buggy. So you will have to fix/re-implement/re-release, which is extra effort.
Some of the new key features announced are only compatible with a limited number of devices—those being the most recent ones. Even if a device is compatible with iOS 7 some features are not available. For example, let’s say AirDrop is not compatible with iPad 2, iPad 3, iPhone 4/4S and similar iPods. If your app is using the AirDrop SDK some people will miss this functionality and you as a developer will have to put extra effort to determine the type of the device and implement additional logic to prevent the app from crashing and also alert people that 'this feature is not available for your type of device,' which is upsetting for customers."
Pros: "But generally every time something new comes up it has to do with the breaking of something existing—it is normal flow of things. Some of the pros of iOS 7 are: Cool new features are available for the most recent Apple mobile devices, such as AirDrop, 60 FPS video recording, etc.—so apps can be more functional when running on particular devices. Also, multitasking allows loading assets in the background, which leads to more efficient processor performance use. That means apps can be more independent and do some stuff while inactive. Finally, all the new social networks support means your app will be more functional in this important area."
Cons: "We are a team of four indie developers and make high-quality utility/productivity/imaging apps (as opposed to games/marketing freebies). As a consequence, it is imperative that we follow the move toward the new design of iOS 7. We have mostly focused on a single app only for now. It’s an app that we just released in May 2013 as version 2.0 after a one-year development effort. It is very important to us that our app integrates nicely in the new OS, so that it feels right at home.
With that being said, the move to iOS 7 was not expected. At least, not with the kind of effort required for existing apps (it would be much easier for new apps, I suppose). We had to change the schedule of most of our future developments. It's hard to say if that will be worth it business-wise, yet we expect that not making that effort will harm the business. More, being coherent with the platform is a plus for our users. So we do it. We are basically releasing an unscheduled major release in three months.
Our app makes use of text—a lot of text—and there are many changes on that front (for the better, much closer to the Mac now). That required a lot of effort to adapt.
It's difficult to make design choices with so little prior knowledge and examples. We experimented a lot. We would have liked to see more stuff. Apple's apps are not always very good in the beta by themselves, nor are they coherent: paper texture (Reminders, Notes) in a flat world?
Also, some APIs are not documented and difficult to get. Some of them show the main iPhone background (which makes sense in the transparent world of iOS7), yet that feature seems to not be allowed in third-party apps (well, actually, Apple does not say anything about it when we asked). In summary: It's hard to be an early adopter as a developer."
Pros: "We started development with a bad mood. We didn't like many of the design choices Apple had made (the three of us were quite depressed when leaving the Keynote in June, seeing the new icons, etc.). Then upon using the iOS 7 beta, we were surprised to like those changes more and more (there remain things we don't like, though).
So made a new icon for our app, for more coherence with the new OS. Then we removed most textures and custom designs. That was pretty easy. The challenge now is to find the right color palette, and subtle animations. ‘Less chrome’ does not mean ‘no chrome.’ We have to be coherent with the new design language. Supporting both iOS 6 and iOS 7 seems to be very difficult, and we decided to focus only on iOS 7. That makes it easier to use the new stuff too (like speech synthesis, out-of-app downloads, etc.).
This iOS 7 announcement and following development phase has been a eye-opener, though. What many people would have considered poor or bad design just six months ago will soon be considered the norm."
Cons: "Not too many. Though the development costs for revamping GUI and code were higher than expected. Also, listening to Android users bitch is never fun."
Pros: "We think iOS 7 looks more modern, which means developers will push their apps' visuals and processing to suit the new paradigm—so that’s good. Also, I think we’ll see a potential surge in app downloads and updates because users will be inclined to use iOS 7-specific features. As for the SDK itself, the ability to process things in the app background, though still limited, is welcomed. There’s also better control and handling of the app GUI, improved iCloud handling of data, AirDrop for sharing documents to other devices, and extended OpenGL capabilities, which means graphic objects can be rendered faster."
Cons: "The first time we launched our app in iOS 7, it didn’t take long to realize we had a much larger project on our hands than originally anticipated. It looked out of place. It felt out of place. And like a lot of developers, we immediately went to work updating our app for Apple’s most ambitious iOS update yet.
A lot has been written about the content-centric approach of iOS 7, and it’s true that it does everything in its power to remove chrome and superfluous items. Over-designed apps are going to stand out like a sore thumb, as if they are legacy versions being run in a simulator. And even though our app puts content first and has a minimal design, switching to Helvetica and putting our icons on a diet did little to make it feel like a good iOS 7 citizen.
One of the biggest challenges we encountered was to follow the new design gestalt without becoming too generic and sterile. A lot of early release apps are going to suffer from all looking the same, by taking the safe approach. Knowing when to break the rules and add something that’s not off the shelf will be key. Of course, this has always been the case, but so much has changed and everyone is scrambling to find their footing. And on the code side, it doesn’t help that many of the new APIs are still in the process of being documented, and sometimes even change between releases. Getting up to speed is taking time, and because of this there’s a casualty: support for older versions of iOS.
Like many other developers, we’ve decided our next update will be iOS 7-only. We’re small and have limited resources, and can’t support both. Trying to create a ‘hybrid’ app that bridged the chasm was immediately shelved. We were compromising both versions, and neither felt ‘right.’ But we are lucky, the current version of (app redacted) is fairly feature complete. If a customer has an old phone that can’t run iOS 7, they will still have a great app that feels at home on their phone. I imagine a lot of devs that have less mature apps will be in a tougher spot."
Pros: "On the flip side, our developer has been able to rip out a ton of custom code that is now supported through APIs. Something that might have taken days to get right can be accomplished in minutes. Typography and physics controls are more fully baked in, which saves a lot of effort. It means we get to focus on additional features, fine-tuning, and testing. We have more time to sweat the details and make revisions. Our developer told me, ‘If the typography is shitty, you can’t blame me or the OS.’ He’s right—so I’ve been spending too many hours making sure line spacing and kerning and the page balance is just right, and I love it. We’ve decided to license a font from the Font Bureau because the typographic controls are wonderful. We think it’s money well spent.
WIth iOS 7, customers are going to expect a much higher level of fit and finish. Developers that think they can simply spend a day putting a coat of paint on their apps will pay the price."
Developer 6: Experienced iOS and Android developer, and author of books that teach people how to code.
Cons: "iOS 7 is, by far, Apple's most disruptive update. Up until now, the process of migrating an application from a previous version of iOS to a new version of iOS was pretty painless. In most cases, your application would ‘just work’ for the majority of applications. However, with iOS 7, Apple finally made the decision to make a necessary break from the past in order to move their platform forward. It's definitely a win for Apple and will be a win for app developers as well, but not without some pain.
Probably the biggest source of uncertainty for most developers is going to be around the design and look-and-feel of their apps. In general, unless an app is a game or a custom full-screen app, I recommend that folks get with the times as quickly as possible, otherwise their designs will look very outdated. The best way to think about this is to imagine that the older versions of iOS never existed and that Apple just released iOS and it looks like iOS 7 and to design your app accordingly. This will be a huge context shift for a lot of designers, but it brings iOS up to date with and possibly moves it beyond current design trends and so the new look and feel of iOS 7 won't be going away. Apple will be shifting everything they do toward this new design scheme.
From a coding perspective, developers are going to have to deal with really annoying user interface layout issues. When building existing applications against the iOS 7 SDK, designers and developers will have to review every screen of their application in detail to find potential layout/display quirks. In particular, Apple has changed how the status bar at the top of the screen is treated within apps, and this is going to cause a lot of headaches. Previously, this area was off limits (although you could hide the status bar if you wanted to), but now apps are expected to use this area of the screen for display purposes, so it's a dramatic shift for applications."
Pros: "There's some really fun stuff in iOS 7 though, which includes background tasks and peer-to-peer Bluetooth functionality and new ways of handling text. The new peer-to-peer stuff is really interesting because it will make it easier for an app to do fun things between devices when those devices are close by. You used to have to jump through a lot of hoops to get this to work. Background tasks are really great as well since this brings iOS a little more inline with Android. Essentially, apps can now request more designated time to run in the background every so often in order to fetch new data from a server or do anything else that the app developer feels will enhance the experience of the application and potentially save their user some time. My one concern here with background tasks, though, is battery life, especially older devices with already-worn-out batteries. Some users might wonder why their phones are losing power more quickly with iOS 7 and might not be aware that a ton of apps are now periodically scheduled to execute in the background. Apple originally restricted this to save battery life but is starting to open the floodgates. Time will tell.
In short, I recommend that folks get going on iOS 7 support as soon as humanly possibly. Staying exclusively on iOS 6 isn't an option and keeping your current app design isn't an option either. Apple will be switching over its development toolchain to Xcode 5, and once that happens it will be painful for developers to keep two development environments going simultaneously. I find it's always best to switch over to Apple's newest tools as soon as Apple lets you submit to the App store using them (which is usually just before they come out of beta). I also recommend that folks drop iOS 4 and 5 support pretty much immediately. Supporting these versions of iOS at this point result in a very small return on investment. I think the adoption to iOS 7 is going to be fast and so I'd recommend that most folks stop supporting iOS 6 by early next year as it's going to be worth to keep their user interfaces up to date on iOS 6."
[Image: Flickr user Olivier Ortelpa]