A sensible tech stack for apps
When what makes sense where and why :-)
Over the past years I’ve had many discussions with regards to which tech stack would make sense in regards to developing new apps. Over the years this has only fortified my strong belief. But without spoiling what I actually believe, I want to take you through these choices step by step.
Disclaimer: when you already have an app — obviously — these arguments weigh differently. You might still take some of these arguments into consideration when you develop new features or service different audiences.
The first cut: games
There’s many kinds of types of apps. The type of app makes the first big cut.
Basically, when you develop a game, technologies like Unity make a lot of sense. Unless you develop a AAA game, in that case go native to be able to draw as much performance out of the device as you possibly can.
That distinction makes already a lot of sense right there. When you have the requirement, time, money and focus to develop visually high end applications, you want to be able to have as much grip as you can on how things are done. Even the level just below that when it comes to games (visually stunning but not necessarily distinctive), it already makes sense to leverage something that enables you to develop and spread fast, multi-platform with high quality and abilities (I think I said “Unity” with a lot of words there ;-)).
Now that we have the game argument out of the way, let’s focus on applications. Let’s focus from the perspective of ‘who you are’, rather than ‘what or why you make something’.
I am an Android or IOS developer
Cool! You are probably able to quickly develop on your platform knowing the ins and outs of that platform very well! I assume you’ll stick to that platform and try to make it there. That’s awesome! It makes sense you stick with what you know here. Build your app natively!
I am an owner of a startup
Hard spot to be at to make a decision! I’d say go with who you trust and have around you in this adventure. If you work closely with Android or IOS developers, it makes a lot of sense to go that route. However, take the risk of the developer leaving into account. It’s hard for a one-man-army to take over the work of another one-man’s-army. Consider if you need to go multi platform. But keep reading, because there are some benefits to already consider doing things differently.
I have a running company in bricks; no website
Sure there are some edge cases which justify app development here, but most of the time it makes sense to first spread information over standard platforms like social media, then start developing a (small) website to provide information to your customers when branding is key, or when you have a concept that requires more client interaction than social can provide. Start there. The App route sounds nice, but it’s way more costly, complex and harder to maintain that you might assume.
I have a running company, and I’ve bought a website
That’s amazing! In case your core business isn’t online, and you don’t have the budget to make a competitive edge online, it makes sense to leave it that way. Still interested in publishing an app to firm your branding? This is the spot where you could consider stretching the wallet. Since acquisition of good developers is super-duper-hard, buying a solution makes sense again. It allows you to explore the area whilst remaining able to pull the moneyplug when it suits your needs. You can hire people temporarily from a consultancy firm, so you can sit with them, iterate over your ideas and still build it within your walls. You can also choose to work out as much details as you possibly can and buy the app as it was developed behind closed doors. You should care less how they develop it, but remain vigilant you aren’t billed for double the cost if you want to roll out on both platforms. Xamarin could in example perfectly serve your needs, since you don’t require a web counterpart.
I have a running company, and I’m creating my website in-house
Now this is where I spend a lot of my time.
So you already have web developers in-house. If your in-house knowledge is good; leverage it! Make sure you have an app-stack that’s based on that knowledge! In case it’s not that good; awesome! All investments you’ll make on that hybrid web mobile stack flows right back in to your web solution!
There is no need for diversifying your tech stack, leading to invest time money and effort in three different platforms (iOS, Android and Mobile Web). You’ll increase your velocity if you focus all that effort on only one of them, which would be the one that leverages the web technology.
Okay, so web tech, but WHICH web tech.
There are so many!! React native? Vue native? Cordova? Ionic? Will you leverage a design system?
It completely depends on where you want to go and how omnichannel your brand is. React native and vue native are possibilities of course, but the question there is how distinctive your app should become.
Strong branding, strive to be competed against
When you intend to do strong branding whilst being strongly omnichannel, you might want to delve in to creating your own design framework, the advice would then be
- Take your framework of choice (in my case Vue)
- Take a renderer and bundler (e.g. Nuxt.js)
- Build as a SPA, or hybrid where needed
- Embed in Cordova with the required tooling to setup icons, naming conventions, splash screens and those kinds of things.
- For the rare case you actually need a plugin that doesn’t exist, simply create it!
- For completeness, enable the PWA plugin for mobile web ;-) . I firmly believe that PWA will become the future of app development. It just makes sense from a technical perspective. Perhaps not from a monetisation point of view from the app stores, but I remain hopeful :-).
One of the major counter arguments I hear a lot is ‘yeah but web tech doesn’t feel like an app’. I call nonsense on that. If you check the Vuetify framework in example, you should be able to call nonsense on that as well.
Another persistent one is: yeah but web tech isn’t as responsive as native tech. I call nonsense on that too. Sure, when you go back to the AAA game, that makes one hell of a lot of sense. But please, it’s an app, not a game. The app doesn’t require that much complexity.
The last argument that I hear often is: ‘But you can’t leverage the functions of a real phone. Like using it for barcode scanning, camera features, vibration, payment, GPS and all of that stuff’. For those thinking that’s the case; please check the Cordova plugin repositories.
All of the aforementioned counter arguments are valid in specific situations as mentioned before. And there are definitely scenarios in which native app development makes sense (as the majority of this document covers), but there are clear scenarios in which it doesn’t and going the web-tech route will increase velocity, reduce cost and will make up for a more homogenous / omnichannel experience cross device / platform.