Mobile Development Options

What do you use? What do you recommend? (This post is a wiki - feel free to edit/update it.)

Native Options

Swift/Obj-C (iOS)
Java (Android SDK)
C/C++ (Android NDK)

Hybrid Options

RubyMotion

Write cross-platform apps for iOS, Android and OS X in Ruby

Ionic Framework

Free and open source, Ionic offers a library of mobile-optimized HTML, CSS and JS components and tools for building highly interactive native and progressive web apps. Built with Sass, optimized for AngularJS.

Adobe Phonegap

Build amazing mobile apps powered by open web tech.

Appcelerator/Titantium

Native apps. Mobile APIs. Real-time analytics. One Platform.

Steroids

The missing tooling for hybrid apps
Build, test and distribute for iOS and Android

Ratchet

Build mobile apps with simple HTML‚ CSS‚ and JS components.

Empower your digital marketing team with the Famous Micro-App CMS

Crosswalk Project

Build world class hybrid apps
Enable the most advanced web innovations with the Crosswalk Project web runtime to develop powerful Android and Cordova apps

React native

A framework for building native apps using React

Xamarin

Deliver native iOS, Android, and Windows apps using existing skills, teams, and code.

Native Script

Java script to native

Haxe

Haxe is an open source toolkit based on a modern, high level, strictly typed programming language, a cross-compiler, a complete cross-platform standard library and ways to access each platform’s native capabilities.

Quasar Framework

Build responsive websites, PWAs, hybrid mobile Apps (that look native!) and Electron apps, all simultaneously using same codebase, powered with Vue.

Flutter / Forum thread

Flutter is Google’s mobile UI framework for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.

PWAs

A Progressive Web App, or PWA, uses modern web capabilities to deliver an app-like user experience. Any website can be a PWA

4 Likes

Hi!

I use Objective-C/Swfit. I recommend Swift, but you will probably learn a bit of Objective-C.

The downside is that it requires OS X to be able to use Xcode. I know there’s some other IDEs available, a good one is AppCode but I have no experience using them to develop apps.

Options for Android
If you dont like the syntax of java, a promising option is Kotlin. The syntax reminds me of Swift, haha.

The future of hybrid
I recommend checking out React Native which is developed by Facebook. I believe this is future of mobile, and it will only become better with time. For any critical you can write native code which then interacts with react native.

1 Like

I think react-native is good to go.

2 Likes

React native is really awesome, I highly recommend it if you would like to target both iOS and Android. You can save a lot of time, because you avoid writing the same business logic twice. The only thing that’s a bit rough around the edges is UI customizations (animations and view constraints). But this will only get better with time, and if you want to there’s the option of dropping down to Objective-C/Java for the animations or view constraints :smiley:

2 Likes

+1 to Kotlin!

1 Like

I’m usually a bit wary of the “writing the same biz logic twice” argument. Also, the Android ecosystem is very mature.

Also, JavaScript. Sigh. I think React Native has a place though, in simpler mobile apps.

And XCode is terrible. Unfortunately, AppCode is only a crutch.

1 Like

There’s also the option of writing the core in C++ and build the UI in Swift/Java.

You can use the Atom editior with the Nuclide package. Then you can develop for both iOS and Android, however I have no experience with it so can’t recommend it. I believe it is used alot at Facebook.

1 Like

Also, https://github.com/facebook/react-native/blob/master/PATENTS is a bit dodgy.

3 Likes

Thanks for posting that Ben - I am not a fan of Facebook - I just don’t trust them.

This is an excerpt from @akitaonrails’s recent blog post - something I’ve been hearing more and more lately…

Fragmentation is no stranger to the Javascript world. But it’s a different kind of value generation. Facebook, Google, Microsoft, they all want to be the thought-leaders in the fast evolving Millenials generation. It’s a long term strategy. And one of the elements of this game is the Browser. But not only in terms of Chrome vs Firefox vs IE, but also on how applications are implemented.

Facebook came up with React. Google came up with Polymer and Angular. The Node guys went through a power struggle with Joyent which almost resulted in further fragmentation but they settled for the Node Foundation.

Apple went all on war against Adobe’s Flash and then only now Google is turning them off in Chrome, but they are all looting on the consequences for all the attention it brings in the Web Development communities.

Apple wants native to succeed and Swift to be the one language to lead it all. Google has conflicting strategies because they want native Instant Apps to succeed but if it fails, plan B continues to be for them to dominate HTML5/CSS3 based web apps with Angular. Facebook don’t want to have their fate being decided by the power struggle between Apple and Google.

It’s a complex power struggle unfolding, and you can see that it’s not about technical prowess, it’s not about value generation. It’s about ego, influence and power. Very fitting for the YouTuber generation. And the web technologies are being held hostage in this siege, if you havent’s noticed.

8 Likes

Very interesting, never thought about it like that.

4 Likes

Xamarin!

3 Likes

Ehi you forgot Ruboto :stuck_out_tongue: ok this is only for Android apps but worth mentioning being completely free and Ruby based… :slight_smile:

By the way among the Phonegap/Cordova solutions i think Ionic offers the most complete set of tools and widgets to create good UI, it is well documented and widely used, the version 2 will be based on Angular 2 and the two teams are tightly working to solve issues.

Another plus is that Angular is considered the best lightweight solution to write SPA in mobile environment too, and the second version will embrace Ecma Script 6 which is eavily object oriented…

I will give a deep look to the other solutions you listed but i am pretty sure to stay with Ionic for now.

2 Likes

although i have done some ios apps with objective c in college, not a fan of apple in general and not interested getting a mac to develop.
Android sdk/java on the other hand is pretty nice and doesnt restrict you that much. i personally wouldnt replace it with some javascript framework and i bet the performance wouldnt be that great either.
that said, i would like to check out xamarin, it should be free by now right?

1 Like

I was using Cordova (Phonegap is based on Cordova) in my Componay. It was backbone app + jq mobile. I know old stack :slight_smile: . What problems we have:

  • Using webview could slow, especialy on some older phones
  • Bugs in webview on different android systems -> very fragmented
  • Many webview related bugs especially on joint with native interface example: showing, hiding keyboard
  • Less functionality compared to native apps for example google analtytics integration

So in conclusion I would not recommend webview for mobile app. I haven’t tried Ionic. For sure I would not use Ionic 1 with Angular 1 (can be slow on mobile). I would try Xamarin, Reactive native or Native Script if I would like to do some cross platform. Slack Client for mobile is based on Xamarin. Lately Xamarin was bought by Microsoft and now is free to use and you can program in F# :slight_smile:

2 Likes

Of course native will offer the best performance and freedom, but I think we all are curious how we can be the most effective in the shortest amount of time. Besides native i’ve also worked with Cordova and React Native. And I think React Native offers a very nice prospect (especially with Android support improving and Windows support).

Your target market and relation with the people that will use your app is very important. Meaning that in some countries/areas people have faster phones. Also if you need to “sell” your app to your public, you want to deliver top notch experience. Whereas an app for example your employees a lesser experience is acceptable. Which can influence your choice.

Regarding Cordova, I’ve done a fair amount of benchmarking of Cordova on iPhone 4s up to iPhone 6s, and the difference is pretty remarkable. Implying that for certain markets, Cordova apps performance can be very acceptable especially in the near future. However, dont try to be too fancy with animations and stuff.

I think react-native is a very good option for a lot of apps. Personally I feel that the component based UI and unidirectional dataflow is better to work with than the native alternatives. And the performance is way better than Cordova based apps. Another (very) important factor is that there is an important focus on the developper experience. Finally, taking into account the easiness to bridge native code it can be applied to a very wide range of apps. Just dont expect you will only need JavaScript for all your apps :grinning:
I think that in the near future in most cases RN will offer a better solution than Cordova, unless you want to support an obscure platform :laughing:

So, my opinion: native is best but react-native is/will be a very good alternative for a wide range of use cases.

Ps. I’ve never used Xamarin or NativeScript.

5 Likes

I think React Native has a place though, in simpler mobile apps.

Not true. Discord, an IRC-like chat for gaming and gamers (meaning supporting chat and voice) that hosts some large communities (interestingly, the React community itself!) wrote their iOS app in React Native and it runs just as fast if not faster than native. Remember, the JavaScript (which can be type-safe now, thanks to Flow) compiles to native code.

That said, there were problems with Android performance because of the large numbers of devices available—so part of your point stands.

Source, and a very good read by an iOS programmer who ended up writing the app in React Native.

And more apps here.

BTW, buying your book soon!

4 Likes

One problem with React Native, if you need some special component you need to create it for native platform. This means you need at least one person who knows android and IOS.

1 Like

Fair point, have’t done much complex RN so the standard library has worked fine for me. There’s a growing community of native components as well, though.

1 Like

/me is thinking he is the only one that codes with Haxe for android/ios/web on occasion…

1 Like

Swift is absolutely great. Using it from the beginning and I really believe I will not use obj-c any more in my life. Don’t listen to folks who talks about cordova, react native, and friends. Swift rocks. Maybe someday we will have something battle tested and less ugly for android than java.

1 Like