The future of App development
Tags: javascript, react, pwa, flutter
Published: 2020-04-23 14:52:29

In the last few years, native app development has seen a shift from the 'native' tech stack to a more 'web' oriented development stack. While one can easily read articles and find loads of reason for this I think one the fundamental level there is only 1 reason for this shift: the need for One-to-many application. In this post, we will be diving into this reason to understand what it is.

# The need for one-to-many Application
Huh?
Okay fine. One-to-many application is just my way of saying one code base and support for all platforms (Android/iOS). But what is it anyway?
These applications are written once and supports both android and iOS out of the box. No need to rewrite anything separately for any platform. Well, is there anything even remotely similar to that? YES!

*Here are a few of them:*
1. *Flutter*
2. *React-Native*
3. *PWA*

Let's look into what these are.

## Flutter
It is a framework developed by a team at Google for building fast and responsive mobile applications. It can be deployed to both Android and iOS without you having to rewrite the entire application for a specific platform. 
*Pros:*
1. Easy to learn
2. lightning-fast development lifecycle
3. Compiles to native code
4. Fast and responsive
5. Growing community
6. Easy to connect to native APIs even if they are not directly supported
Out of the box support for many Google services

*Cons:*
1. Requires you to learn dart
2. Many native APIs not supported. Hence may require knowledge of native development cycle to interface it with those APIs

## React-Native
It is an extension to the popular front-end development framework *React* to develop fully functional and responsive mobile applications with web technologies alone. All you need is experience with *HTML*, *CSS*, *JavaScript*, *JSX* and you are good to go. If you haven't heard about *react* or *react-native* then you should definitely check them out.
*Pros*:
1. The only knowledge you need is ```Webdev```
2. Supports many of the APIs supported by ```react```
3. Amazing community online to help you out

*Cons*:
1. Flutter has a much more stable development life cycle even though react-native is more widely used

## PWA (Progressive Web Application)

*> Hey, What is PWA?*
*>> Progressive Web Application*
*> Aren't all applications progressive*
*>> d.e.a.d*

> Lame joke, sorry :P

What are they actually? Well, it is something which is truly *one-to-many application*. Have you ever visited a website and received an annoying popup asking you to add the app to your home screen? You have. Exactly. 

These applications run in the browser and can be installed in the device as an application. To be honest, *install* isn't the right word to use in this case but for the sake of argument, we will accept it. So, you write one application for the browser and that's it. Your application can be accessed from anywhere in the world on any platform and not just that, you can even install an instance of that application in your device that feels and works like a native application. Isn't it cool?

**PWA** is a relatively new concept and it can be a game-changer in the long run. If you have not started learning PWAs development cycle then you are seriously missing out. One such framework for PWAs is *Ionic*. Do check it out. 

### Additionally, these frameworks discussed above also help companies save money because now they don't have to divide their teams to work on iOS and Android separately. 

### Furthermore there are several more reasons to consider PWAs and such technologies and I hope this post makes you curious enough to explore them.

Cheers,
Jha