What You Need To Know Before Choosing A Tech Stack For Your App
When building an app, deciding on what tech stack to use is perhaps one of the biggest obstacles to overcome. The right tech stack can help provide the user with a great experience, thus helping drive adoption and growth in the early stages of an app’s lifecycle. But if the wrong choice were to be made in selecting a tech stack, the consequences are dire. There is often no going back, and development teams will have no choice but to scrap everything, move to a new stack, and restart development efforts all over again.
There are a few important factors to consider when choosing a tech stack. They are:
- Current requirements and feature roadmap
- Budget (especially in the case of startups)
- Competency of the development team
However, care must be taken to not let the capabilities of the development team override or constrain the feature roadmap.
Next, it is important to pay attention to the proposed architecture of the app. For instance, one can choose to build a native app, cross-platform app, or a hybrid app. Today, ‘Progressive Web Apps’ are also popular, but we don’t think it is apt to consider them as a distinct application architecture, primarily because they are essentially repackaged web apps.
Let’s now compare the pros and cons of each architecture.
Native apps are specially made and coded for a specific mobile platform in its native programming language, and as such are extremely suitable for processor intensive and GPU intensive apps. Native apps make full use of technologies provided by the platform itself, and hence there is minimal chance of running into issues. Development of native apps is also relatively straightforward. Components are provided out of the box, and connecting them to an app is quite simple.
The most obvious drawback with opting for a native tech stack is that if you decide to build apps for multiple platforms, you also have to build separate versions of the app. Native apps do not allow for code sharing between platforms and as a result, development times are longer and require a higher investment. By virtue of also having two separate codebases, maintenance can also be challenging. Even if a new feature is to be rolled out, your development will have to build the feature into two different codebases.
- Technologies available: Swift (iOS), Kotlin (Android), Objective-C, Java
- Native apps: Uber, Pinterest, WhatsApp (These apps all make use of extensive functionalities available on the device, hence the need to go with a native tech stack)
Cross platform apps can be deployed or published on multiple platforms using a single codebase, instead of having to deploy multiple native apps, one for each platform.
A cross platform tech stack will allow you to potentially use upto 80% of code used within an app, across multiple platforms. This is perhaps the biggest advantage of opting for a cross platform stack. Apart from this, there is also the benefit of being able to quickly render UI elements using native controls, very much similar to how a native app would.
However, the very characteristics which make cross platform tech stacks attractive can also be their downfall, depending on the envisaged use case. The fact that not all code can be shared necessitates extra, and a rather tedious amount of development. Further, a cross platform stack may not be as fast as a native stack, and the level to which it can interact with the device is largely dependent on the framework.
- Technologies available: React Native, Flutter, Xamarin, NativeScript
- Cross platform apps: Uber Eats, FB, CitiBank, Instagram
A hybrid app is created as a single app, but for use on multiple platforms such as Android, iPhone and Windows. From a technical standpoint, hybrid apps are actually a combination of native apps and web apps. As a result, a single hybrid app will work seamlessly on any operating system such as iOS, Android, Windows etc.
Hybrid tech stacks allow for a significant degree of code sharing between different platforms. In a boon for developers, hybrid stacks also allow for the core part of an app to be built using web technologies, paving the way for shorter development times. The web app underpinnings of hybrid tech stacks also mean that the core codebase of a hybrid web app can always be updated via a ‘hot code push’, bypassing the formal App Store and Play Store channels.
Apart from lower performance compared to native or cross platform tech stacks, hybrid tech stacks also suffer from a design flaw whereby not all code can be shared between different platforms, therefore a certain degree of native code development becomes mandatory. Further, performance too can take a hit, since all in-app interaction is routed through an embedded web browser control. A good example for how this can go wrong comes from Facebook, which in 2012, disastrously bet on an HTML5 stack for its apps. Today though, all of Facebook’s apps are built on React Native, which is a cross platform tech stack. When a hybrid tech stack is used, UI elements will also be rendered as HTML components, instead of native elements, thus leading to slower performance.
- Technologies available: Ionic, Mobile Angular UI, Bootstrap
- Hybrid apps: Diesel, MarketWatch, McDonalds, Sworkit
So Which Tech Stack Is The Best?
There’s no definitive answer to this question, and the decision would always depend on factors such as current requirements, the feature roadmap, budget etc. as we mentioned earlier. But, what is important is to choose the right stack for the job. A mis-step here can often be the difference between success and failure for your app.