Appointedd is a multi-timezone online booking system that helps businesses sell and manage their time. Up until now we only had a simple iOS app to accompany our main web app, with limited functionality in comparison. With feedback from our users, we realised more and more businesses require access to Appointedd on the move. It became obvious we needed to expand the functionality of our mobile app, and start replicating functionality already available in the web app over to mobile. We decided we would start from scratch and take a cross-platform approach so our Android users could also benefit from the mobile app. The first question was: Which technology would we use?
There are generally two paths to take when developing a cross-platform mobile app. You can go fully native or use a framework such PhoneGap or Ionic which uses web views to wrap UI components in. Both have their pros and cons; going fully native gives you a blazing fast app which takes full advantage of the device it's running on. It can be expensive, however, requiring separate development teams with knowledge of Objective-C/Swift for iOS and Java for Android. PhoneGap and other web view wrappers remove the need for separate development teams and allow you to create an app for both platforms with a single codebase -- which is great, but performance isn't anywhere near that of a fully native app.
NativeScript allows you to write the App UI using a subset of HTML and CSS which compiles down to the native equivalent for both platforms. This means access to essentially any native element such as list-views, buttons or dialogs which naturally perform much better than web wrappers as they were built specifically for the device they are running on. We use Angular 2 with TypeScript for the application architecture and logic. The ability to use Angular 2 is easily one of the best things about NativeScript, it makes routing and data-binding simple and blazingly fast.