I remember my first Ionic app ever. It was a weekend on my 25th birthday. I was supposed to be celebrating but instead found myself excitedly running the build command for the calculator app I made the night before. I’ve been told that birthdays are supposed to be your one special day of the year. I used mine to learn a new framework and loved every moment of it.
Fast forward a few years later, I haven’t had the chance to pick up the framework since that day. Life happened. Work happened. Or rather, work followed me home and took over whatever time I used to dedicate to learning. But that’s a different story.
Over the past few days, I’ve been looking at Ionic again but since my last encounter with it, other frameworks have flourished and gained traction. It’s sort of like React rising out of nowhere to become as popular (if not more) than Angular. Here’s a list of a few other frameworks out there that look promising in my reevaluation of which framework to pick up for mobile development.
I didn’t know NativeScript existed until I found it as one of the requirements for a remote job I was looking at. It was at this moment that something clicked inside my brain and made me realize that Ionic isn’t the only framework out there.
NativeScript is licensed under Apache 2.0 — which makes it free and open source. The biggest difference between an MIT license and an Apache license is the number of words. The Apache license has the same core free and open source philosophy as MIT. However, Apache differs from MIT because it explicitly allows for patents to be attached to the apps made with the framework — on condition that you don’t go around suing other people using the framework as the reason for infringement.
I need to do a bit more research on licenses in general and its potential legal ramifications — perhaps in a later post.
Anyway, back to NativeScript.
The framework has a strong following with over 4 million npm downloads. Learning resource looks pretty solid with major sites like Envato Tuts+ and scotch.io providing tutorials. YouTube has a good mix of commercial and individual developers contributing to the NativeScript ecosystem.
React Native is self-descriptive. It’s built for React so the overhead of learning is pretty minimal. It’s like writing a React app but with React Native has the base framework. The perks of React Native is that it’s fully optimized for React.
This doesn’t really work for me since I’m going down the Angular track first.
It’s currently being used by big names like Facebook (its grand creator), Skype, Pinterest, and Walmart.
There was the big drama about licensing but they’ve now gone to an MIT license. Since then, the community has really picked up its game and React is now in high demand in nearly all job boards I’ve encountered.
There is also an abundance of learning resources — both free and paid — which can come in really handy when you’re just starting out. But if you don’t know React, it means that you’ll need to learn that too.
I remember a guy talking about the awesomeness of Meteor at a Meetup. It supports React, Vue, Angular, and MongoDB — making it a flexible solution to pick up. The framework was initially seeded with $11.2M in 2012 and another $20M in its Series B funding round.
Due to a large amount of seed funding, the framework was able to launch and increase their user base and community generated support quite quickly. They’ve also managed to successfully monetize their user base through offers of web hosting for Meteor apps through their Galaxy hosting service.
The free + commercial structure (which is similar to the way WordPress is structured in their free MIT license and the commercial side of WordPress) means that the framework is actively maintained and updated by both a commercially backed entity and the community. When this happens, you can usually guarantee that if you get stuck, help is usually available in a Google search away.
Apache Cordova, originally known as PhoneGap, existed all the way back in 2009 and was created at an iPhoneDevCamp event in San Francisco. In comparison to everyone else, Apache Cordova is like the mid-30s guy among a room full of teens and early 20s.
The framework is free and backed by Adobe. However, the first impressions of a community spirit aren’t as strong as the others. There are a lot of professionally produced resources like books and Microsoft based blog posts but not much in the way of community-driven content. There’s a bit more on YouTube but 45% of my first-page search results were in Hindi and Arabic. Awesome work to the people behind the videos but it’s a bit of a roadblock for me as an English speaker.
When I decide on a framework, I usually select something that has strong community backing. This is for selfish learning reasons. It’s much more time cost effective when you can just Google what Error xxx means rather than spend half a day trying to figure out what went wrong.
Flutter is the latest baby to be born. Launched in May 2017 by Google, this framework promises to build ‘beautiful native apps on iOS and Android from a single codebase’. Google’s logo is plastered everywhere just to make sure that you know who made it.
They also provide documentation on how to apply your knowledge in iOS, Android, Web, react Native and Xamarin knowledge to Flutter — a very handy feature.
Community wise, Flutter is still small but growing. The content and learning materials available is considerably smaller than Ionic, NativeScript, and Meteor but there are signs of fledgling growth. Flutter looks like one of those platforms that will grow over time as it gets picked up by more people. Their biggest poster child that isn’t Google related is Alibaba.
I’ll probably fully jump into Ionic, NativeScript or Meteor in a few weeks time due to their strong communities, abundance of resources and because all explicitly support Angular. But before I make that decision, I’ve got to finish a few more Angular apps from scratch first.
Personally, React Native, Apache Cordova and Flutter are not on my immediate to do’s list.
I could start learning React but I’ve decided to take a depth year — which means no framework jumping until I’ve mastered the one I’m working on. I would rather be a master in one language than mediocre in a lot of them. Besides, it’s easier to learn and identify the harder concepts, kinks, and quirks in a new language if you’ve experienced it before in another.