When an iOS developer begins a coding project, one of the first items to consider will be to determine which technologies will be used to create the app. Typically, that will mean deciding between creating a purely native iOS app, or going with a hybrid app, which can leverage additional web-based technologies not found in the iOS development framework.
As with all things in life, there are pros and cons with each possibility, so let’s take a look to see what your development options are.
Native iOS App – It’s all Xcode
Native iOS apps are built using only the technologies provided by Xcode. Since Apple says that all newly created apps must be iOS 7 friendly as of February 1st in order to be listed in the iTunes store, we’d strongly encourage you to use Xcode 5 going forward.
Xcode 5 offers up Objective-C for your business logic language, view controllers and the interface builder. Or you could programmatically create your controls for the user interface. But the bottom line is you’re only using what is included in Xcode 5 to build your native iOS apps.
The Hybrid App – It’s a free for all, y’all!
Why Is This A Big Deal?
Like we said above, there are pros and cons to each direction you might need to go. If you know that you’ll never need to port the app to Android or Windows Phone, you might be able to go native, but increasingly, cross platform development is the new normal. So it could be a great time saver to leverage the common elements on the web, and leave the device specific stuff to Android and iOS.
On the other side, your app might need to run effectively without being able to hit the internet. Can you really rely on web-based components that might not be available? Will your app be rendered useless without the web?
For what it is worth, the look of the app you develop won’t really be impacted no matter which way you go. But the feel can be a different matter. Put simply, the user experience can suffer when you choose to use web controls as they won’t be as responsive as would native controls.
When a user taps a web control, even with high-speed wifi available, there will be a delay between sending the request and getting a response from the server. The user, however, may not understand this, and so they continually hit the control as if that will somehow make the response appear more rapidly. Instead it just sends the request again and again, and the app may have difficulties determining which response to display from the server. That makes for a frustrating user experience.
Equally annoying to the user would be relying on web controls to animate the User Interface. Heavy reliance on animations can make web UIs appear jittery and sloppy. Granted, a talented developer could work to minimize these issues with additional coding and checks, but when this could all be handled smoothly with native iOS controls, it may make more sense to use what is provided out of the box with Xcode 5.
But as we noted earlier, if you know that your app will eventually be a cross-platform one, then it isn’t such an easy decision. When that same HTML/CSS code can be used across multiple platforms, then the tradeoffs in terms of development time may make for a compelling case. Hybrid apps that are written using HTML+JS+CSS are going to be portable but your mileage may vary, is what we’re saying.
If you’re going cross-platform and targeting a host of different screen sizes, you know that cascading style sheets can make that web UI easily adaptable to all of the form factors. But if you’re only going for iOS, you may be better off going native, knowing that there are only so many iPhone and iPad screen sizes with which to concern yourself.
All of this talk of native versus hybrid app development won’t mean too much if you’re not up to speed on what Xcode 5 offers or if you’re not really adept using the web-based technologies. But assuming that you’re skilled on both sides of the divide, you just have to decide how much time you have to deliver the finished app, what, if any, third party frameworks are in the mix, and if you’re going cross platform.
If you know you can use a lot of HTML+JS+CSS code as a cross-platform time saver, then clearly you should consider doing so. If you don’t you may find yourself building an identical app for Android environment. Be sure you know what your client is seeking down the line and ask questions about platforms and such. While it pains us to admit as iOS developers, Android controls about 80% of the devices in the real world, so it is likely that your client will want a solution that will hit that user base.
So what’s the answer?
As you may have gathered, there isn’t a definitive answer to any of this. But speaking generally, if you need to code just for iPhones and iPads, and you’re not going to be hitting the web for components or data, then you’re pretty safe building a purely native iOS app. You’ll definitely be able to provide a solid and smooth user experience.
But if you need to go cross platform, and you need to minimize development time across those platforms, consider the hybrid option. The HTML+JS+CSS code will do the trick so long as there is access to the web.
Was this blog helpful to you? If so, please share across your social networks. Also please share your experiences with going native or going hybrid in the comments section below.