Reagire nativo contro nativo "reale"

5

Sto lavorando per la società orientata al consumatore che ha un'app mobile come prodotto principale.

La nostra app mobile ha 100.000 utenti attivi mensilmente e viene sviluppata utilizzando Cordova + Kendo Mobile + Telerik Appbuilder (che verrà interrotto tra un paio di giorni). Stiamo pensando di migrare il nostro codice a una soluzione nativa (nativa o React nativa).

In primo luogo voglio dire che per noi lo sviluppo di app per Cordova con Kendo Mobile è stato un inferno.

Questo è principalmente a causa di Kendo, ma anche a causa della dipendenza da vari plugin (alcuni dei quali erano fantastici, e altri non così tanto) e ti viene lasciata la scelta di usare il plugin o scrivere codice nativo e plugin Cordova per te stesso) .

Ovviamente, il problema più grande sono le prestazioni. E la nostra app non ha calcoli complicati, o animazioni o qualcosa di simile, ma la differenza quando si scorrono gli elenchi infiniti o il passaggio rapido tra uno schermo è ovvio. Quindi abbiamo dedicato molto tempo all'ottimizzazione (o addirittura alla scrittura di codice da zero) per cose che avremmo ottenuto fuori dalla scatola se fossimo nativi. E a causa di ciò non possiamo facilmente stimare le versioni di nuove funzionalità e l'intero processo di sviluppo è lento.

Dal punto di vista del business sarebbe meglio per noi andare con React Native perché abbiamo già 3 sviluppatori JS e gli sviluppatori nativi sono scarsi e costosi.

D'altra parte siamo un po 'traumatizzati dalla nostra intera esperienza con lo sviluppo ibrido e non siamo sicuri che React Native sia davvero buono e maturo come pubblicizzato, e non abbiamo tempo per gli errori.

Le nostre più grandi paure sono:

  • Reagisce nativo e quando "next big thing" accade, tutti salteranno su quel carrozzone (ad esempio Google Flutter)
  • Dipendenza da plugin open source (che possono essere abbandonati in qualsiasi momento)
  • Lo sviluppo è più veloce in teoria (perché la maggior parte del codice è condivisa) ma per l'app veramente look / feel nativo dovremo dedicare un sacco di tempo all'ottimizzazione di varie cose e alla fine saremo molto più lenti
  • Ho letto in pochi articoli che riproducono perfettamente le esecuzioni native su iOS, ma Android è un'altra storia - è più lento e ci sono stranezze tra varie versioni di Android (ad esempio qualcosa funziona bene su 5.1.0 ma non su 5.1.1)
  • Apple cambierà qualcosa. (come introdurre notch) e ci vorrà molto tempo per adattarci ai cambiamenti a causa dei limiti tecnologici

In cima alla mia testa qui ci sono alcuni requisiti che la nostra app ha, e non sono sicuro che tutti siano trattati correttamente con React nativo:

  • Sensazione nativa durante lo scorrimento di un feed infinito (il feed è simile a quello che ha FB)
  • Acquisti in-app
  • Riproduzione audio e video nativa
  • Cronometro di sfondo
  • Internazionalizzazione
  • Deep linking
  • Sistema di reporting di Analytics e Crash (come GA e Crashlytics)
  • SQLite o qualche altra soluzione DB / Storage
  • Nativo come la navigazione tra gli schermi
  • Grafici e amp; Grafici (come D3.js ha)

I tuoi pensieri e le tue esperienze sarebbero molto apprezzati!

    
posta hyperN 14.03.2018 - 18:31
fonte

1 risposta

1

Ho usato l'app Blomberg come campione di reagire nativo. Puoi controllarlo se hai bisogno di qualche dimostrazione del concetto. Ha un'infinità di feed e un'interfaccia utente complicata. Lo scorrimento e la commutazione delle schede non è così veloce, ma continua a funzionare. E sarebbe più difficile rendere tutte queste UI usando lo sviluppo nativo.

In questo momento stiamo sviluppando il progetto (che ha anche un feed infinito) in nativo su Android e in React Native su iOS. Abbiamo anche provato a far funzionare la versione nativa su Android e a confrontarne due versioni. Le prestazioni di scorrimento sono comparabili. React native ha tutte le log delle app in esecuzione sul thread in background, quindi il thread ui è gratuito. La nostra app Android nativa ha utilizzato molto più il thread dell'interfaccia utente.

Ancora nativo è una scommessa sicura e se qualcosa va storto con le prestazioni sei sicuro che possa essere corretto.

Hai molti requisiti e sarebbe necessaria anche una parte nativa della programmazione.

    
risposta data 26.05.2018 - 01:05
fonte

Leggi altre domande sui tag