Development: Approaches on creating iOS apps

Currently there are several different ways to create an iOS app, but there are two main approaches at the present time. First, create the app with Swift (the language created by Apple to replace Objective-C) and second, make the app using React Native (the JavaScript UI library created by Facebook).

Each approach has it own pros and cons. This article is going to compare the two approaches, and hopefully to give you some ideas of what is involved in each approach before creating your first app.

Using Swift

Swift is easy to set up for development, you just launch Xcode on your Mac machine and you can start development right away (zero bootstrapping is required). Also, Swift supports Linux (even on Raspberry Pi) and you can create web apps using Swift as well (using server-side frameworks such as Vapor).

However, supporting Linux does not mean you can create a full-blown iOS app purely from Linux, because you need Xcode (i.e.: on your Mac) to compile the app and to test using the iOS simulator. It is feasible to write pure backend codes for an iOS app, or to create an entire web app using Swift from Linux, but there is currently no (easy) way to go around XCode for creating a complete iOS app.

There are online services for building/testing iOS apps (such as BuddyBuild and BrowserStack), but they are too expensive and not practical for local/personal usage. These services are designed for team collaboration (e.g.: obtaining feedback from your globe team members) and multi-devices testing (e.g.: testing your app on 100 different devices simultaneously). Trying to replace Xcode with these services does not make sense in terms of the costs and the overheads you have to spend in the development cycle. Buying a Mac for using Xcode will definitely be cheaper and more efficient in the long run.

Using React Native

React Native is written in JavaScript, which many developers (either for web or mobile apps) are already quite familiar these days. Also, since React Native is designed to be cross-platform, you can port your app from iOS to Android or Web. And the most essential advantage of React Native is, not only it can port your app to different platforms, but also it can transform your app into a native app on each platform. Most other cross-platform frameworks simply transform your app into a hybrid app running in a WebViews component on each platform, which have significant performance issues comparing to running a native app. 

Another advantage is, React Native can make use of the native libraries to enhance the functionalities on different platform. For instance, you can call a library written in Swift from React Native when you build an iOS app, or similarly call another Java library when building an Android app.

Having said that, there are couple of drawbacks you should consider before diving into React Native. In terms of the cross-platform support, React Native allows you to reuse just the code logic of your app, but not the UI codes. That means, it is not like you can just click a few buttons to create your entire app for different platforms. You still need to write the UI codes for each platform, but you will be doing it using the same React Native way on each platform.

Another drawback for React Native is, it is not easy to set up the development environment. It took me more than 15 hours to bootstrap a pre-built Linux container in Codeanywhere for running a Hello World app. Also, there are complaints that React Native currently does not have enough support in its core libraries, which cause developers to rely on the native libraries more than expected.

Conclusion

For creating iOS app, I would suggest going with Swift first, because it is so much easier to get started, you can build your first app and deploy it on your iPhone within an hour. Next, if you need to support multiple platforms down the road, you can always consider using React Native then. Since React Native can reuse the Swift codes as native libraries, it will not be a total waste of effort when switching to React Native from Swift. Plus, working on Swift will definitely help you understand the internals of an iOS app, for working on React Native in the later phase if you need to.

By the way, AppCoda has published an excellent book in early 2017 for beginners on creating iOS apps. The book covers from a simple Hello World app all the way to a sophisticated Restaurant Recommendations app for App Store submission. Also, AppCoda has just updated the book in late 2017 (for iOS 11 and Swift 4) which you can buy from its web site.

At this moment, it is pretty hard to get the late 2017 version of the book for free, but you can easily get the previous version if your search around. :)

Other References

1. The Good and the Bad of ReactJS and React Native
2. The Good and the Bad of the Swift Programming Language
3. React Native Tutorial: Building iOS Apps with JavaScript (by a Facebook engineer)
4. Intermediate iOS Programming with Swift Book (by AppCoda)

Comments

  1. I like this post,And I figure that they having a great time to peruse this post,they might take a decent site to make an information,thanks for sharing it to me
    android mobile app development services in lahore

    ReplyDelete
  2. I simply want to say I’m very new to blogs and actually loved you’re blog site. Almost certainly I’m going to bookmark your blog post . You absolutely come with great well written articles. Thanks a lot for sharing your blog.
    Mobile App Development Company In Chennai
    Android App Development Company In Chennai
    Android Application Development Company In Chennai
    Mobile App Development Company In India

    ReplyDelete
  3. Great article!! Thank you for sharing this informative content . iPhone users are increasing day by day. Thus iOS app development company play an important role in developing an iOS app.

    ReplyDelete
  4. Amazing Post!! this is very informative post,keep it up.Thanks for share it with us Mobile App development companies in india

    ReplyDelete
  5. I am really enjoying reading your well written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work.

    iOS App Development Company in Singapore

    ReplyDelete
  6. Excellent blog thanks for sharing Pixies Beauty Shop is unlike any of the other cosmetic shops in Chennai. With tons of exclusive imported brands to choose from and the best value, this is the best shopping destination for your personal and salon needs.

    ReplyDelete
  7. Nice content.Thank you for sharing this useful information. I would also like to add that iOS Apps Development Company Islamabad,
    iOS Apps Development Company Islamabad

    ReplyDelete

Post a Comment