What do you use? What do you recommend? (This post is a wiki - feel free to edit/update it.)
Java (Android SDK)
C/C++ (Android NDK)
Write cross-platform apps for iOS, Android and OS X in Ruby
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.
Build amazing mobile apps powered by open web tech.
Native apps. Mobile APIs. Real-time analytics. One Platform.
The missing tooling for hybrid apps
Build, test and distribute for iOS and Android
Build mobile apps with simple HTML‚ CSS‚ and JS components.
Empower your digital marketing team with the Famous Micro-App CMS
Build world class hybrid apps
Enable the most advanced web innovations with the Crosswalk Project web runtime to develop powerful Android and Cordova apps
A framework for building native apps using React
Deliver native iOS, Android, and Windows apps using existing skills, teams, and code.
Java script to native
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.
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.
A Progressive Web App, or PWA, uses modern web capabilities to deliver an app-like user experience. Any website can be a PWA
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.
I think react-native is good to go.
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
I’m usually a bit wary of the “writing the same biz logic twice” argument. Also, the Android ecosystem is very mature.
And XCode is terrible. Unfortunately, AppCode is only a crutch.
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.
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…
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.
Very interesting, never thought about it like that.
Ehi you forgot Ruboto ok this is only for Android apps but worth mentioning being completely free and Ruby based…
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.
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.
that said, i would like to check out xamarin, it should be free by now right?
I was using Cordova (Phonegap is based on Cordova) in my Componay. It was backbone app + jq mobile. I know old stack . 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#
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 that in the near future in most cases RN will offer a better solution than Cordova, unless you want to support an obscure platform
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.
I think React Native has a place though, in simpler mobile apps.
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!
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.
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.
/me is thinking he is the only one that codes with Haxe for android/ios/web on occasion…
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.