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!