Mobile-first development approaches

Progressive Web Apps

PWA

features

Works offline

Full responsiveness and browser compatibility

App-like interface

Push notifications

Self-updates

Easy installation

PWA

Also

Camera access

GPS access

Other APIs like background caching

Fast development!

Weaknesses refer to:

  • iOS support from version 11.3 onwards;
  • greater use of the device battery;
  • not all devices support the full range of PWA features (same speech for iOS and Android operating systems);
  • it is not possible to establish a strong re-engagement for iOS users (URL scheme, standard web notifications);
  • support for offline execution is however limited;
  • lack of presence on the stores (there is no possibility to acquire traffic from that channel);
  • there is no “body” of control (like the stores) and an approval process;
  • limited access to some hardware components of the devices;

Quick development 

Easy onboarding

Mobile-first approach

Desktop for free

React Native

What is React Native not?

  • React Native is not a webview
  • React Native is not React
  • React Native is not PWA
  • React Native as of this writing supports web development using React Native for Web
Pros Cons
Device support High development cost
High performance Time-consuming
One app for several platforms One product, two problems
JavaScript Hard to hire people
Large communities of developers around the world Sometimes requires native devs help

React native

Don't use React native if

  1. Your app needs to handle less common, or ultra-specific tasks (like calculations) in the background
  2. You require custom communication via Bluetooth (which can be tricky to implement using React Native)
  3. You want to create an app for Android only

iOS and Android – but there are select libraries that allow you to use the same code to build iOS, Android, web, and Windows10 apps.

 

You can also extract shared code in mobile, desktop, and web apps, to a separate repository; treat it as a separate project; then inject it in the same way as another dependency.

This allows a developer to focus on writing code for a specific platform without having to consider compatibility with another one.

Sharing code

Trends

Flutter?

Since React Native is already mentioned in Javascript therefore, for most developers, it is one of the most preferred software development languages whereas Flutter uses Dart, therefore it is considered as an object-oriented programming language.

Currently on iOS and Android – but the long-term vision for Flutter is to offer an integrated solution that allows developers to write one code for both desktop & mobile, and for the web.

Official release December 2018, Google I/O March 2015, F8 Conference
Created by Google Facebook
Top apps made with this technology Xianyu app by Alibaba, Hamilton app for Hamilton Musical, Google Ads  Instagram, Facebook, Facebook Ads, Skype, Tesla
Programming language Dart JavaScript

Flutter

React Native

Don't use Flutter if

  1. Your app needs to support 3D  (for now, Flutter support of 3D is basic – but it features on the Flutter team’s long-term roadmap)

  2. The design of your app is platform-specific

  3. Your app requires multiple interactions with an OS; or requires rare, little-known native libraries

  4. You need a minimalistic UI, but rely on significant use of the phone hardware (e.g. an application that plays music, or only takes pictures)

  5. You want to create an instant app (small-sized app)

    If your app sounds like any of the above, it’s probably better you choose native app development.

Ionic

It uses multiple technologies (including HTML5, CSS, and JS) to develop and run applications and access the Cordova wrapper to use native platform controllers. To improve the quality of the code, you can also use TypeScript while using Ionic.

djinni.co

React Native available devs (around 120people) count 3 times more than Flutter 

Answer following questions:

  1. What is the expected lifespan of the project?
  2. Who is the target auditory?
  3. What is the device/OS/browser support matrix?
  4. In-house expertise?
  5. How is the existing platform (which we integrating with) look like? REST or Graph? WS? Backend technologies? Mb you already have a set of styled web components?
  6. What kind of application you expect: media streaming and capturing; 3D; Forms; Geolocation and maps; etc.
  7. Where is the dev-team will be located?
  8. When do you plan to start the development?
  9. Are we limited in the budget?
  10. How quickly you expect a production-ready application with a minimum set of features?
  11. How do you want it to be distributed? App store? Web?
  12. Continuous deployment?
  13. Do you want this application to look natively on the mobile OS?
  14. SEO and SSR? Do you want it to be indexed by search engines?

Mobile-first development approaches

By Vladimir Vyshko

Mobile-first development approaches

  • 432