The topic for today is hybrid mobile app development and I thought I would give you some of my thoughts on how the whole state of things are with regards to flutter, react native, web views, general app development across Android iOS and web.
This comes at a time when we’ve seen companies like Airbnb recently sunsetting their use of React Native and we’ve also seen other companies having poor experiences with hybrid app development like the next-door, Coursera, Udacit, etc.
So I think this is an area that we need to be careful about when we look at which technologies were choosing to use. It’s not just about which technology you’re choosing but when you’re using the technologies and you can categorize a native app into three categories.
- We have fully native apps that need high interactivity.
- We have apps are basically like web views.
- There are apps that maybe somewhere in between using hybrid technology.
1. Fully Native App Development
100% pure native app development is a pretty expensive thing these days. You got the develop not only your mobile web presence but you need to have a separate code base for Android and another one for iOS.
But I think this makes sense, especially for larger companies. so these apps have millions of users and if they can go all native and increase the usage of the app by saying even 1%, it’s generally your worth well because they can generate millions of dollars in revenue just from a 1% increase in usage.
Now there is a statistic that came out a while back that said Americans install on average zero apps per month and that’s probably exaggerated but it’s clear that the enthusiasm for installing apps has probably gone down quite a bit. If you’re one of those top apps that users are using then you want to make sure that you’re giving users,
- A really good experience.
- The code startup time should be very good.
- Performance should be good.
- The app should function smoothly.
- Generally, make sense as support for user gestures and animations.
A lot of these things you can really only do with a fully native application since there’s so much competition. There’s an analogy that photographer you need to get the best photo and you can take a hundred photos of something but you only pick one. That’s kind of the same with app development.
It doesn’t matter if there’s like five or ten versions of an app for Reddit. Users will generally pick the one best app and that’s the only one that they’ll install. So it’s a winner takes all scenario. That’s why sometimes you need to ask yourself, are you going to have competition from other app developers?
If you will, then the native app is going to win because if you start developing your app in web views, flutter, react native or something and then another guy comes along and puts it the time to develop the app fully native. So it has faster, more fluid supports gestures and all of that good stuff.
Then all they need to do is spend a few months to copy your app, make it fully native, add in a few more features and they would have beat in your app. The main negative point of native app development is that you need to develop the app twice. Each time in the Android, iOS and maybe even for the mobile web.
The old days you could just develop for say one platform like iPhone and capture a large percentage of the market but these days, it’s not so easy because the iPhone is only like 40 percent of the US market, maybe 20 percent of the global market and then Android is capturing the rest of the market.
So you really need to be developing for both platforms and I think that makes it especially difficult for Sri Lankan developers and startups these days because they need to invest twice the resources to get an app going. Now the other side of the coin is we have apps that have no business being apps they’re basically web views.
2. Webview Mobile App Development
If you don’t have a lot of native features and you’re essentially native app shells that contain just a web view. Examples of these types of apps are like the iOS App Store and it is actually done with web views. The Amazon app is also using a lot of web views. If you go to the Amazon mobile site, it looks almost exactly the same as the Amazon app that you open up.
Other sorts of apps may also make sense as web views like a car insurance or health insurance app where are you want to do is just check some basic information.
Generally, these apps will have a few native features maybe being able to log in with face the ID or something like that, some developers will here a web view and just immediately think oh that’s garbage and then they just throw away the idea.
But it’s important to remember that if you take a look at the app market in China, they’re using WeChat and WeChat has built this whole platform of apps, built on web views.
Many companies, there are building on WeChat and building web view applications. it’s cross-platform and a platform like WeChat may be able to provide are just some quick integration points. For example, quick login without needing to use a password or payment information.
So people don’t have to keep entering their credit cards, push notifications, access to location, quick bookmarks. Another good point about web views is if you have a mobile website you’ve already got most of the code probably and you only have to write once and reach three platforms by using a Webview.
Web views may be something that you can consider, I’ve used web views myself to great success and in my opinion, the Amazon app shows how impressive web view technology can be. It’s a top app it has great reviews.
3. Hybrid Mobile App Development
Now that brings us to the most interesting category of apps. That’s where I think technologies like Xamarin, flutter react native, Cordova or titanium. All of these may be very interesting to take a look at. If you look at some of these technologies like Xamarin, flutter and native script, most of these were built in mind with the idea that the entire app would be built on this technology.
If you want some of the top apps using your technology, you need to make sure that is incrementally adoptable on the page by page basis. It’s very risky to bet your home mobile app strategy on some brand new technology that hasn’t quite yet been proven.
For example, some developers found Xamarin to be kind of slow and if it turns out that your app is too big and xamarin can’t compile your app quickly anymore. Then you need to rebuild your whole app.
Now flutter is relatively new on the market and it is interesting because the technology is based on a canvas and you essentially control every single pixel on that canvas. It’s using like game graphics technology type of thing. The thing to know is that it will never purely be native. For example, text may not be selectable the way you think it should be selectable
All of that is not going to work the way you normally think. It would work is going to be a simulation but at the same time if you adopt a certain design philosophy like the material design, then your app is going to at least always be up to spec to say material design philosophies.
The user interface design of your app is going to be a key consideration here. Flutter is still pretty early though it has some issues supporting things like inline map views, inline video playback, voiceover and accessibility may act a little bit weird. The biggest issue with flutter so far is they don’t support incremental pages option.
So your whole app needs to be in flutter if you want to use it and brings us to react native which only technology that has heavily invested in being incrementally adoptable on the page by page basis. That makes it easy to integrate into native applications and it gives you a chance of becoming very popular because then you’ll see top applications that are going to be pure native.
They may have use cases to react-native. In scenarios, where they don’t need that last ounce of performance like settings and profile pages things and I would imagine that when other technologies like flutter are better able to support page by page incremental adoption then they could also become more used.
So it’s important to keep in mind is that react native is still a technology that is under quick development and recently the team announced that they would be doing a complete re-architecture of the internals of React Native to make it more performant and address some of the issues.
Any scenario where you’re starting to mix technologies, very possible to get the worst of both worlds. Developers will need to learn two different technologies, you’re mixing and matching different technologies on different pages. It becomes very difficult to maintain and refactor the app.
The thing to know about adopting any new technology is you don’t want to underestimate the amount of investment in infrastructure and tooling that you may need to add to support that new technology. You probably need to add support for bridging API calls code linters, accessibility, internationalization, offline support, exposing the networking layer and so forth.
I would encourage you to think carefully about whether the advantages over the disadvantages and the investment support that you will need to add. Because often the largest cost and code is not going to be in the initial development of the feature but in the additional long-term investment and maintaining that feature.
Beyond that, you may find refactoring is just very difficult to like if you want to implements a dark theme across the whole app. I believe in iOS 12 it’s rumored that iOS will support dark theme so if you want your app to be at the cutting edge, all of these hybrid technologies support a dark theme.
I found this simpler to do when most of the app was built on the same underlying technology and I could just do a large search and replaces create infrastructure and tooling that would only need to be done once.
If there was some hybrid technology like saying web views, react native, flutter integrated into the app that would have doubled or tripled the amount of work I had to do and increase a lot of the maintenance and tooling support that needs to be built in.
So this comes back to the question of when you should be using hybrid technology and I would say you want to find areas of your app that you can easily isolate like the settings page. That’s going to look and feel different than the rest of your app and that’s okay!.
For scenarios like that, you may be able to get a boost out of switching your technology stack entirely. The entire tech stack is going to be different if you’re going to have a second way to do everything.
2 ways to create buttons, 2 ways to create text labels, do control flow business logic, accessibility, internationalization, networking stack may be different, the way images are loaded may be different, offline access and so forth.
The way I like to think of it is it’s almost like two apps at one and ideally, developers aren’t switching contacts from one app to another app. If you’re using react native, the chances are. You may be using Redux control-flow which is a very different way about thinking of the app compared to ‘mother view controller’ which is the general technique that iOS is recommending.
I mean the entire language is going to be different.
Hybrid technology generally works best when you’re in the native application and then you can segment off certain portions of your app to be built in the hybrid app technology and it may be a completely different team that is managing that portion of the app so that developers don’t have to keep contact switching between different languages.
Finally, I would say that native app development is not something to be underestimated. Like the app space is very competitive these days users are expecting more from their apps and they’re not installing as many apps as they used to.
We’ve seen that increasing performance decreasing co-star latency and making the app fluid and smooth can really increase the app usage but at the same time we have seen that web-view technology has been coming a long way especially in China where a lot of businesses are building web views instead of full native applications.
I think this would be a great direction for US companies to go towards too.
- Flutter 1.2 and newly introduced google’s toolkit
- Why iPhones are not selling as expected?
- React Native vs Flutter (2019)
- Best iPhone Reviews in 2019
- What are flutter and dart?