Peculiarities of mobile app development
- Alexey Dubrovin
- July 8, 2024
- Digital transformation, Mobile development
Lets’ say you want to develop a mobile app…
Where do you start?
What do you need?
Where do you start?
There are so many technologies – how do you choose the one which is right for you?
Unfortunately, many publications on this are giving limited or even sometimes misleading information…
Lets’ dig a little into the details, to make sure you understand what you need and what to ask for…
Nearly every one mixes the way the app was developed (or the tool/IDE the app was developed with the product being developed (mobile app).
First, there are three types of development tools
Native tools – These are the tools dedicated to creating apps running on a specific OS (iOS or Android).
Cross-platform development tools – Generally speaking “Cross-platform” just means “for any platform”, but there are several ways to implement that.
Hybrid tools – This is a sub-type of “cross-platform” approach – The app is generally a web app, but running inside a platform-specific container which provides (typically) a limited set native features.
I hope this did not appear a rocket since… but… If you happen to order the development of a mobile app – did your provider explain to you all your options?
Where do you start?
What do you need?
Where do you start?
There are so many technologies – how do you choose the one which is right for you?
Unfortunately, many publications on this are giving limited or even sometimes misleading information…
Lets’ dig a little into the details, to make sure you understand what you need and what to ask for…
1. Native, Cross-Platform or Hybrid?
Nearly every one mixes the way the app was developed (or the tool/IDE the app was developed with the product being developed (mobile app).
First, there are three types of development tools
Native tools – These are the tools dedicated to creating apps running on a specific OS (iOS or Android).
Cross-platform development tools – Generally speaking “Cross-platform” just means “for any platform”, but there are several ways to implement that.
Hybrid tools – This is a sub-type of “cross-platform” approach – The app is generally a web app, but running inside a platform-specific container which provides (typically) a limited set native features.
I hope this did not appear a rocket since… but… If you happen to order the development of a mobile app – did your provider explain to you all your options?
2. Product – Native or Hybrid
While there are 3 ways to develop a mobile app, there are only two kinds of Mobile apps that could be developed
Native app – an app compiled into native machine codes or byte-codes which are run by a virtual machine on the device.
Hybrid app – an app created with IDE or framework like Sencha or React.Native which is essentially a specific kind of a web-app running inside of a specialised browser-like container. Both the app and the container are packaged and signed together so it is still delivered the same way as any native app.
Note: there is no such thing as a cross-platform mobile app because every platform (iOS and Android) introduces very specific requirements to the application format, these requirements are incompatible and there is no solution to run the same app on both platforms without a platform-specific medium.
Although there is a cross-platform way to deliver functionality to mobile devices… it is a mobile-friendly (aka responsive design) web app…
3. Developing your app Native way – Pros and Cons
Pros
- Native development tools provide access to all the features offered by the device and operating system and because of the nativity – as soon as the OS is released.
- It allows you to operate on a really low system level – utilising advanced sensor features/modes, etc.
- Because you run native code and there is nothing extra in between – the speed is fastest (however sometimes non-optimal algorithm can nullify this)
- It can provide a native UX ‘out of the box’ at your next OS upgrade – _when_done_correctly_ the app’s user interface will have all the new OS features just after the system upgrade.
- Advanced user interface customisation without limits
Cons
- If you need to support multiple devices (iOS & Android), two separate apps will need to be developed
- No code can be shared between the platforms
- Development time grows (if supporting different platforms)
- Basically, if you support different mobile platforms you have to spend X amount of effort to implement your functionality in each platform and then – Y amount to ensure the UX is consistent between the platforms