Ci capita spesso di parlare con clienti o altri professionisti a proposito di app native e app ibride e abbiamo notato che spesso la differenza tra le due opzioni non è ben chiara e, sopratutto, non sono chiare le possibilità e i limiti che ognuna di queste soluzioni offre. Vediamole insieme! 🙂

Prima di tutto: di cosa stiamo parlando?

Stiamo parlando di due diversi approcci allo sviluppo di una app. Il risultato finale sarà, da un punto di vista del prodotto, lo stesso: una app pubblicabile sugli store e successivamente scaricabile da tutti gli utenti. Dove sta quindi la differenza? Nell’implementazione. Entrambe le soluzioni hanno pregi e difetti, cerchiamo di capire in quali casi è meglio utilizzare una metologia o l’altra.

Le app native

Con il termine app nativa si intende una app implementata utilizzando il linguaggio nativo dei singoli sistemi operativi sui quali andrà a funzionare. L’app nativa Android sarà implementata in Java, l’app nativa iOS sarà implementata in Swift, e così via.

Vantaggi

  • User experience al TOP: c’è poco da dire, una app nativa ha sicuramente una responsività eccellente.
  • Sfrutta a pieno le potenzialità del dispositivo: tramite una app nativa possiamo interfacciarci con l’hardware del dispositivo senza problemi, eseguire operazioni cpu-intensive, eseguire operazioni in background e così via.

Svantaggi

  • Manutenibilità: come dicevamo in precedenza, è necessario implementare la stessa app per ogni tipologia di sistema che vogliamo supportare. Ne consegue che dovremo poi mantenere diverse app, con le complicazioni che ne conseguono. (Per ovviare a questo problema esistono dei framework che ci consentono di implementare le funzionalità dell’app una volta sola e trasformare in automatico il codice nei corrispettivi linguaggi nativi. Alcuni esempi sono react-native e nativescript.)
  • Ovviamente, il costo: una app nativa richiede competenze e tempi sicuramente diversi rispetto alla controparte ibrida, ne conseguono costi maggiori per il cliente.

Le app ibride

Le app ibride in realtà, non sono app. Panico? Mi spiego meglio: una app ibrida in realtà è una applicazione web eseguita all’interno di una “WebView“. L’utente aprendo l’app fa partire la WebView che carica l’applicazione web. Non preoccupatevi, da un punto di vista dell’utente non cambia assolutamente nulla: l’app ibrida, esattamente come l’app nativa, viene scaricata dagli store e installata sul dispositivo. Comunque sia, in questi termini sembra una soluzione assolutamente non paragonabile alla controparte nativa, ma in realtà soprattutto negli ultimi anni le app ibride hanno fatto passi da gigante da un punto di vista del supporto da parte dei diversi sistemi operativi e sono diventate una vera soluzione alternativa alla controparte nativa.

Vantaggi

  • Unica implementazione: le app ibride hanno il vantaggio che vanno implementate una volta soltanto e possono essere eseguite su tutte le tipologie di dispositivi che desideriamo (beh, ovviamente con micro sistemazioni qua e là).
  • Manutenibilità: conseguentemente, avendo una unica codebase sarà molto più semplice (e rapido) effettuare interventi di manutenzione dell’applicazione.
  • Semplicità: per sviluppare una app ibrida è necessario conoscere un solo framework (ad esempio Angular per Ionic) ed è quindi più semplice trovare sviluppatori in grado di “metter mano” all’app.

Svantaggi

  • Non si può fare tutto: come abbiamo detto sopra le app ibride in realtà vengono eseguite all’interno di una WebView e non hanno quindi accesso a tutte le funzionalità del dispositivo. Esistono dei plugin che consentono alla WebView di interfacciarsi con il sistema operativo del dispositivo, ma il raggio di azione rimane comunque ridotto rispetto alle app native.
  • Performances: le app ibride hanno ovviamente delle limitazioni molto maggiori rispetto alle app native, soprattutto da un punto di vista delle performance. Per questo è molto importante capire, in base alla tipologia di app che vogliamo sviluppare, se la soluzione ibrida può adattarsi bene alle necessità funzionali senza palesare rallentamenti.

Quindi le app native sono sempre meglio delle app ibride?

Come detto prima, non per forza. Sicuramente da un punto di vista delle performance le app native vincono a man bassa, ma questo fattore non è sempre determinante in quanto non è l’unico da tenere in considerazione per fare una scelta corretta. Ci sono situazioni in cui la differenza tra una implementazione ibrida e nativa sarà quasi impercettibile.

Quando conviene utilizzare una soluzione o l’altra?

In linea di massima, è necessario ricorrere alla soluzione nativa quando l’app ha bisogno di performance di un certo tipo e deve eseguire operazioni strettamente legate al dispositivo. L’app ibrida è ottima quando l’app in oggetto non ha particolari necessità di performance o integrazione, ad esempio quando deve solamente interfacciarsi con dei servizi web e salvare alcune informazioni localmente sul dispositivo (che per quanto banale possa sembrare, costituisce il cuore delle funzionalità di moltissime app).

Questo è tutto, spero che questo articolo vi potrà essere utile la prossima volta che sentirete parlare di app native o ibride. Ovviamente tutto ciò è una semplificazione dei veri ragionamenti che stanno dietro alla scelta da fare, è importante dedicare del tempo per valutare attentamente le implicazioni di entrambe le soluzioni, in base alle richieste funzionali dell’app.

Alla prossima! 🙂