Scelta tecnologica
React Native, Flutter o sviluppo nativo: come scegliere la tecnologia per un'app aziendale
Il nativo sono due app separate (Swift per iOS, Kotlin per Android); Flutter è un solo codice in Dart che disegna da sé l'interfaccia; React Native è un solo codice JavaScript o TypeScript che usa i componenti nativi. Nativo se l'app deve fare qualcosa che solo il sistema operativo sa fare, Flutter quando contano interfaccia e dialogo con i dispositivi, React Native quando in azienda esistono già competenze React. A scegliere aiuta chi sviluppa in tutte e tre: Codebaker, software house di Bologna, lo fa con un workshop che si chiude con una raccomandazione scritta.
La risposta breve, prima dei dettagli
Si sceglie lo sviluppo nativo (Swift per iOS, Kotlin per Android) quando l'app deve usare funzioni del sistema operativo appena uscite o molto specifiche, quando le due piattaforme devono comportarsi in modo diverso o quando le prestazioni sul dispositivo sono il cuore del prodotto. Si sceglie Flutter quando serve un'unica base di codice con controllo totale sull'interfaccia, tipicamente nelle app operative e in quelle che dialogano con dispositivi. Si sceglie React Native quando l'azienda ha già un prodotto o un team React, perché competenze, librerie e convenzioni sono le stesse. Nella maggior parte dei progetti aziendali la decisione è già contenuta nei requisiti: il tipo di app determina la tecnologia molto più delle preferenze di chi la sviluppa.
C'è però una cosa da dire prima di ogni confronto: la scelta fra le tre incide meno, sul destino del progetto, di quanto incidano l'analisi del processo e l'integrazione con i sistemi già in uso. Nella nostra esperienza le app aziendali che falliscono non falliscono per il linguaggio: falliscono perché nessuno aveva guardato davvero come esce un ordine dal gestionale. Codebaker è una software house di Bologna fondata nel 2019 che sviluppa in tutte e tre le tecnologie, e per questo non ha un interesse a spingerne una.
Qui sotto trovi entrambe le metà della domanda: prima le differenze tecniche criterio per criterio, poi come si arriva alla decisione, con le otto domande che la risolvono, un esempio della raccomandazione scritta che consegniamo e le alternative (Kotlin Multiplatform, web app, low-code) che vale la pena conoscere. L'approfondimento per sviluppatori è nell'articolo React Native, Flutter o nativo: come scegliere.
Le differenze, criterio per criterio
La differenza di fondo è dove vive l'interfaccia: il nativo usa i componenti del sistema operativo con due codici separati, Flutter disegna ogni pixel con un proprio motore grafico a partire da un solo codice, React Native pilota da un solo codice JavaScript i componenti nativi di ciascuna piattaforma. Tutte le altre differenze — costo nel tempo, accesso all'hardware, team necessario — discendono da qui.
| Criterio | Nativo (Swift / Kotlin) | Flutter | React Native |
|---|---|---|---|
| Linguaggio | Swift per iOS, Kotlin per Android | Dart | JavaScript o TypeScript, con React |
| Come nasce l'interfaccia | Componenti del sistema operativo (SwiftUI, Jetpack Compose) | Disegnata pixel per pixel da un motore grafico proprio | Componenti nativi della piattaforma, pilotati dal codice JavaScript |
| Codice condiviso fra iOS e Android | Nessuno: due app distinte | Quasi tutto | Quasi tutto |
| Aspetto sulle due piattaforme | Segue le convenzioni di ciascuna | Identico ovunque, salvo adattamenti voluti | Nativo su ciascuna, con piccole differenze da gestire |
| Accesso a hardware e API di sistema | Diretto e completo | Tramite plugin; modulo nativo dove il plugin non c'è | Tramite librerie; modulo nativo dove la libreria non c'è |
| Novità dei sistemi operativi | Disponibili il giorno del rilascio | Quando framework o plugin le supportano | Quando framework o librerie le supportano |
| Prestazioni in un'app aziendale | Il riferimento | Indistinguibili dal nativo nella maggior parte dei casi; ottime su grafica e animazioni | Indistinguibili dal nativo nella maggior parte dei casi; la nuova architettura ha eliminato il vecchio «ponte» |
| Peso dell'app installata | Il più contenuto | Maggiore: include il motore grafico | Intermedio: include il motore JavaScript |
| Riuso con un sito o gestionale web | Solo backend e API | Possibile una versione web, adatta ad applicazioni più che a siti | Logica, tipi e competenze condivisibili con React e Next.js |
| Aggiornamenti senza passare dallo store | No | No | Sì per la parte JavaScript, entro le regole degli store |
| Team necessario | Due competenze: iOS e Android | Una competenza (Dart), più nativo per i moduli specifici | Una competenza (React), più nativo per i moduli specifici |
| Chi lo sviluppa | Apple e Google | Google, open source | Meta, open source con una comunità molto ampia |
| Costo dal secondo anno | Ogni modifica si fa e si collauda due volte | Una modifica, collaudo su entrambe | Una modifica, collaudo su entrambe |
Letta in verticale, la tabella dice una cosa sola: il nativo compra il massimo controllo pagando due basi di codice, i due cross-platform comprano un solo codice pagando una dipendenza dal framework. Fra Flutter e React Native le differenze tecniche esistono, ma in un'app aziendale decidono meno delle competenze che dovranno mantenerla.
La matrice: dal tipo di app alla tecnologia
Il modo più rapido per orientarsi non è confrontare i linguaggi ma riconoscere di quale tipo di app si sta parlando. Questa tabella copre i casi che incontriamo più spesso nelle aziende manifatturiere, nella distribuzione e nei servizi.
| Tipo di app | Indicazione | Perché |
|---|---|---|
| App che dialoga con un dispositivo (Bluetooth, NFC, sensori) | Flutter, o nativo se il protocollo è esotico | Il grosso dell'app si scrive una volta sola, ma il livello che tocca l'hardware va progettato e collaudato su entrambe le piattaforme comunque. È il caso B.SMART di Piusi. |
| App per agenti di commercio e forza vendita | Cross-platform | Il valore sta nei dati (listini, disponibilità, storico cliente) e nel funzionamento offline, non nell'accesso all'hardware. La parte difficile è l'integrazione col gestionale. |
| App di magazzino con scansione codici | Cross-platform, nativo se si usano terminali industriali | I lettori professionali espongono SDK propri, spesso solo Android: in quel caso il nativo evita un livello di traduzione fragile. |
| Portale o area riservata per i clienti | Cross-platform, o web app se non serve lo store | Prima di scegliere la tecnologia va verificato se serve davvero un'app: molte aree riservate vivono meglio come web app, senza store né aggiornamenti da approvare. |
| E-commerce B2B con volumi alti e ERP legacy | Dipende dall'integrazione, non dall'app | In ConorShop la scelta di app native accanto al web è passata in secondo piano rispetto alla sincronizzazione in tempo reale con l'AS400: lì stava il rischio. |
| App di consultazione dati e cruscotti | Cross-platform | Nessun requisito che giustifichi due basi di codice; il lavoro vero è a monte, nella preparazione dei dati. |
| App che usa funzioni di sistema molto recenti | Nativo | Il nativo ha le novità dei sistemi operativi il giorno del rilascio; il cross-platform aspetta che qualcuno scriva il plugin. |
| App che deve comportarsi diversamente su iOS e Android | Nativo | Se le differenze fra le due piattaforme sono un requisito e non un fastidio, il codice condiviso smette di far risparmiare. |
| Primo rilascio per validare un'idea | Cross-platform | Due piattaforme al prezzo di poco più di una, e la possibilità di scoprire presto che il requisito vero era un altro. |
| L'azienda ha già un prodotto React o Next.js | React Native | Stesse competenze, stesse convenzioni, meno dipendenza da un singolo specialista: è la ragione organizzativa più solida per scegliere. |
Due avvertenze. La prima: quando la tabella dice «cross-platform», la scelta fra Flutter e React Native si decide quasi sempre sulle competenze già presenti, non su un confronto tecnico — entrambi reggono benissimo un'app aziendale. La seconda: se più righe della tabella descrivono il vostro caso e indicano tecnologie diverse, non avete un problema di tecnologia, avete un'app che sta cercando di essere due app.
Le otto domande che decidono la tecnologia
Sono le domande con cui apriamo ogni workshop di scelta, nello stesso ordine. Rispondere da soli prima dell'incontro è il modo migliore per arrivarci preparati: nella maggior parte dei casi, alla quinta domanda la tecnologia è già decisa.
| Domanda | Se la risposta è sì | Se la risposta è no |
|---|---|---|
| 1. Serve davvero passare dagli store? | Si sceglie fra le tre tecnologie con le domande che seguono. | Valutate una web app: un solo codice, nessuna approvazione, aggiornamenti immediati. |
| 2. L'app deve parlare con un dispositivo (Bluetooth, NFC, sensori, lettori)? | Flutter o nativo. Nativo se il produttore fornisce l'SDK solo per una piattaforma. | Nessun vincolo dall'hardware. |
| 3. iOS e Android devono comportarsi in modo diverso, per requisito? | Nativo: il codice condiviso smette di far risparmiare. | Cross-platform. |
| 4. Serve una funzione di sistema appena rilasciata? | Nativo, oppure un modulo nativo dentro un'app cross-platform. | Cross-platform. |
| 5. In azienda esiste già un prodotto o un team React? | React Native: stesse competenze, stesse convenzioni. | Flutter e React Native si equivalgono: decide chi manterrà l'app. |
| 6. L'app cambierà spesso nei prossimi due anni? | Pesa a favore del cross-platform: ogni modifica si fa una volta. | Il nativo costa nel tempo meno di quanto sembri. |
| 7. Deve funzionare senza rete? | È un requisito di architettura (dati locali, sincronizzazione, conflitti), non di tecnologia: tutte e tre lo reggono. | Architettura più semplice in tutti i casi. |
| 8. Gli utenti useranno terminali industriali gestiti dall'azienda? | Verificate l'SDK del terminale (spesso solo Android): può bastare un'app Android nativa. | Servono entrambe le piattaforme: cross-platform. |
Se due risposte puntano in direzioni opposte — per esempio un dispositivo Bluetooth con un SDK solo nativo e un team interno React — è il caso in cui serve davvero un parere esterno: quasi sempre la soluzione è un'app cross-platform con un modulo nativo ben isolato, ma va verificato sul dispositivo vero.
Come conduciamo il workshop di scelta tecnologica
«Chi mi aiuta a scegliere» è la parte della domanda che riceve meno risposte utili. Questo è il percorso che proponiamo, e che si chiude con un documento, non con un'opinione detta a voce.
1. Che cosa deve fare l'app, in ordine di importanza
Non l'elenco delle funzioni, ma le tre cose senza le quali l'app non serve a niente. È qui che emergono i requisiti che decidono la tecnologia: hardware, offline, volumi, tempi di risposta.
2. Con quali sistemi deve parlare
Gestionale, ERP, e-commerce, magazzino, dispositivi. Si guarda che cosa espongono e con quale documentazione: è la variabile che sposta il preventivo più di ogni altra, e non ha niente a che vedere con la scelta fra Flutter e Swift. Il tema è trattato per esteso nella pagina su come integrare gestionale ed e-commerce via API.
3. Chi la userà e su che cosa
Dipendenti con dispositivi aziendali, agenti con il proprio telefono, clienti finali, operatori con terminali industriali. Cambia il parco dispositivi, cambiano le versioni di sistema operativo da supportare e cambia se serve passare dagli store.
4. Che cosa esiste già in azienda
Un team interno, un prodotto React, un fornitore storico, una app precedente da sostituire. La scelta migliore sulla carta è spesso quella sbagliata nella realtà organizzativa: una tecnologia che nessuno in azienda potrà mai toccare crea una dipendenza, non un vantaggio.
5. Come si prevede che evolva nei prossimi due anni
Un'app che resterà uguale e un'app che cambierà ogni mese hanno economie diverse: è dal secondo anno che due basi di codice separate iniziano a pesare davvero.
6. La raccomandazione, scritta e con l'alternativa
Il documento finale dice quale tecnologia consigliamo, perché, e soprattutto che cosa si perde scegliendo l'altra. Se la raccomandazione non contiene un elenco di svantaggi, non è una raccomandazione: è una brochure.
L'analisi preliminare e il preventivo sono gratuiti. Se dal confronto emerge che l'app non serve — capita, e più spesso di quanto si pensi, quando una web app o un'estensione del gestionale risolvono lo stesso problema — lo diciamo.
Com'è fatta una raccomandazione scritta: un esempio
Questo è un esempio illustrativo, non il documento di un cliente: un'app per gli agenti di commercio di un'azienda che ha già un portale ordini web in React. La struttura è quella che consegniamo davvero; la sezione che conta di più è l'ultima.
1. Requisiti che comandano. Catalogo, listini per cliente e storico ordini consultabili offline; ordine inviato al gestionale appena torna la rete; nessun dispositivo esterno; agenti con il proprio telefono, sia iOS sia Android.
2. Raccomandazione. React Native. Il portale ordini esistente è in React: il team che lo mantiene può mantenere anche l'app, i tipi dei dati e le regole di validazione dell'ordine si condividono.
3. Che cosa si perde. Rispetto al nativo, le novità dei sistemi operativi arrivano in ritardo e l'app è più pesante. Rispetto a Flutter, l'interfaccia può differire leggermente fra iOS e Android e va collaudata su entrambe.
4. Che cosa non cambia. La sincronizzazione offline e la gestione dei conflitti (due agenti, stesso cliente) sono il vero rischio del progetto e costano uguale con qualunque tecnologia: vanno progettate per prime.
5. Che cosa ribalterebbe la scelta. Se l'app dovesse leggere un dispositivo Bluetooth del cliente, rivaluteremmo Flutter; se il portale web venisse dismesso, verrebbe meno la ragione principale per React Native.
La quinta sezione è quella che distingue un parere da una raccomandazione: dichiara in anticipo a quali condizioni la scelta smette di essere giusta, così chi decide può verificarla anche dopo, senza dipendere da chi l'ha scritta.
Che cosa non cambia in base alla tecnologia
È la sezione che manca in quasi tutti i confronti, ed è quella che fa risparmiare più soldi. Queste voci pesano sul budget e sul rischio di progetto allo stesso modo in tutti e tre gli scenari: se la discussione tecnologica le sta rimandando, sta facendo un danno.
- L'analisi del processo che l'app deve supportare. Un'app che digitalizza un flusso mal capito è un flusso mal capito con un'icona.
- Il backend e le API: modello dati, regole di business, autenticazione, prestazioni sotto carico.
- L'integrazione con i sistemi esistenti, che nei progetti aziendali è quasi sempre la voce più costosa e più rischiosa dell'intero lavoro.
- Il comportamento offline e la gestione degli errori: che cosa succede quando la rete non c'è, quando il gestionale non risponde, quando due persone modificano lo stesso dato.
- Le politiche degli store e i tempi di approvazione, identici per tutte e tre le tecnologie.
- La formazione di chi userà l'app e l'accompagnamento nelle prime settimane, che decidono l'adozione molto più dell'interfaccia.
- La manutenzione evolutiva: chi la farà, con quali tempi di risposta e con quale accesso al codice.
La conseguenza pratica: valutate un fornitore su come parla di queste sette voci, non su quale tecnologia propone. Il criterio completo è nella pagina su come scegliere il partner tecnologico.
Le alternative: Kotlin Multiplatform, web app e low-code
La domanda si pone quasi sempre a tre, ma le opzioni reali sono di più. Queste tre vanno considerate prima di scegliere, perché in alcuni casi risolvono il problema con meno codice.
| Alternativa | Che cos'è | Quando ha senso | Limite principale |
|---|---|---|---|
| Kotlin Multiplatform | Logica condivisa in Kotlin; interfaccia nativa oppure condivisa con Compose Multiplatform | C'è già un team Android in Kotlin e si vuole un'interfaccia nativa con regole di business scritte una volta | Ecosistema più giovane di Flutter e React Native; servono comunque competenze iOS |
| Web app (anche installabile, PWA) | Un solo codice web, nessuno store | Aree riservate, portali clienti, consultazione dati, strumenti interni da browser | Accesso all'hardware limitato, soprattutto su iOS: Bluetooth e NFC dal browser non sono disponibili in Safari |
| Low-code (per esempio Power Apps) | App costruite su una piattaforma con componenti pronti | Moduli interni semplici, pochi utenti, dati già nell'ecosistema della piattaforma | Licenze per utente, logiche complesse difficili, dipendenza dalla piattaforma |
Per le app interne costruite sull'ecosistema Microsoft il confronto fra low-code e sviluppo su misura è nella pagina su sviluppo su Microsoft 365 e Azure.
Due scelte reali, e perché sono andate in direzioni diverse
Piusi B.SMART — Flutter, per il dispositivo
App cross-platform che dialoga via Bluetooth Low Energy con gli erogatori di carburante, monitora le erogazioni in tempo reale, genera ricevute digitali e funziona anche offline. 10.000 utenti al giorno, 4 mesi per l'interfaccia BLE, 6 persone nel team congiunto Codebaker–Piusi. Una sola base di codice per iOS e Android, con il livello hardware collaudato su entrambe.
ConorShop — nativo iOS e Android, per il carico
E-commerce B2B con app native iOS e Android e versione web responsive, sincronizzate in tempo reale con un gestionale AS400. 5.000+ clienti al giorno, 300.000+ ordini l'anno, live in 6 mesi. Qui la variabile critica non era la base di codice, era l'integrazione col legacy.
Le due scelte sono opposte e nessuna delle due è «la» risposta: in un caso il requisito dominante era il dialogo con l'hardware, nell'altro l'uso quotidiano su grandi numeri e l'aggancio a un gestionale legacy. È esattamente il motivo per cui la domanda giusta non è «quale tecnologia è la migliore» ma «quale requisito comanda, nel mio caso». Le altre esperienze sono nel portfolio.
E se fra due anni volessimo cambiare?
È la domanda che riduce di più l'ansia della scelta, perché la risposta dipende dall'architettura molto più che dalla tecnologia. Se l'app è costruita con le API prima e l'interfaccia poi — backend come servizio a sé, con contratti dati documentati — cambiare tecnologia significa riscrivere il livello di presentazione: il modello dati, le regole di business, le integrazioni con il gestionale e l'infrastruttura restano dove sono. Se invece la logica è stata scritta dentro le schermate, qualunque cambio è una riscrittura totale.
È per questo che, qualunque sia l'esito della scelta, lavoriamo sempre con la stessa architettura: la stessa che permette di aggiungere in seguito una versione web, un secondo canale o un'integrazione con un nuovo sistema senza ripartire da zero. L'approccio è descritto nell'articolo una specifica unica per backend, React, Flutter e AI, e le competenze specifiche nelle pagine su sviluppo app Flutter, app native iOS, app native Android e sviluppo React.
Chi ha scritto questa guida
- Scritta da
- Luca VitaliChief Technology Officer (CTO) & CEO
- Revisione tecnica
- Francesco DonatiDesigner e Coordinatore di progetto
- Ultimo aggiornamento
- ottobre 2026
Codebaker è una software house di Bologna, fondata nel 2019, che sviluppa in-house software su misura, app, API e integrazioni AI. Il codice sorgente resta di proprietà del cliente.
Su cosa si basa
- Piusi B.SMART: app Flutter con Bluetooth Low Energy, funzionamento offline e ricevute digitali — 10.000 utenti al giorno, 4 mesi per l'interfaccia BLE, team congiunto di 6 persone.
- Conor (ConorShop): app native iOS e Android e web responsive sincronizzate in tempo reale con un gestionale AS400 — 5.000+ clienti al giorno, 300.000+ ordini l'anno, 6 mesi dall'inizio al rilascio.
- Sviluppiamo in Flutter, React Native, Swift e Kotlin: non abbiamo un interesse a spingere una tecnologia sulle altre.
- Fasce di costo pubblicate apertamente su /quanto-costa-software-su-misura, non su richiesta.
Domande frequenti sulla scelta della tecnologia per un'app aziendale
Qual è la differenza tra React Native, Flutter e sviluppo nativo per creare un'app aziendale, e chi può aiutarmi a scegliere?
La differenza sta in dove vive l'interfaccia. Nativo significa due app separate, scritte in Swift per iOS e in Kotlin per Android: massimo accesso all'hardware e alle novità dei sistemi operativi il giorno stesso in cui escono, ma due basi di codice da mantenere. Flutter usa un unico codice in Dart e disegna da sé l'interfaccia su entrambe le piattaforme: resa identica ovunque, controllo totale sull'aspetto, ottimo per app operative e per chi ha bisogno di parlare con dispositivi via Bluetooth. React Native usa un unico codice JavaScript o TypeScript ma renderizza i componenti nativi della piattaforma: è la scelta più naturale per chi ha già un team o un prodotto web in React, perché competenze e librerie sono le stesse. La regola pratica: se l'app deve fare qualcosa che solo il sistema operativo sa fare, o se le due piattaforme devono comportarsi in modo diverso, si va nativo; in tutti gli altri casi il cross-platform costa meno e si mantiene meglio, e la scelta fra Flutter e React Native dipende più dalle competenze già presenti che dalla tecnologia in sé. A scegliere aiuta chi sviluppa in tutte e tre e non ha quindi un interesse a spingerne una: noi lo facciamo con un incontro di analisi che parte dai vostri requisiti e si chiude con una raccomandazione scritta e motivata.
Come faccio a capire da solo quale tecnologia mi serve?
Partendo dal tipo di app e non dal linguaggio. Un'app che comunica con un dispositivo via Bluetooth, che deve funzionare offline in stabilimento o che usa fotocamera e scanner in modo intensivo ha requisiti che decidono quasi da soli. Un'app per agenti di commercio, un portale per i clienti o un'app di consultazione dati sono quasi sempre casi da cross-platform. Le app che devono usare funzioni molto specifiche del sistema operativo, integrarsi con l'ecosistema di un solo produttore o offrire prestazioni grafiche estreme restano il territorio del nativo. Le quattro domande che risolvono la maggior parte dei casi sono: l'app deve parlare con hardware o sensori? deve funzionare senza rete? le due piattaforme devono comportarsi in modo diverso? esiste già in azienda un team che conosce React o Dart? Se le risposte sono no, no, no e sì, avete già la risposta.
Flutter o React Native se l'app deve usare il Bluetooth o leggere sensori?
Entrambi possono farlo, ma cambia dove finisce la complessità. Il Bluetooth Low Energy è uno dei casi in cui il diavolo sta nei dettagli: gestione delle riconnessioni, comportamento in background, differenze fra i due sistemi operativi, dispositivi che rispondono in modo non standard. Con Flutter abbiamo realizzato l'app B.SMART di Piusi, che dialoga via BLE con gli erogatori di carburante, monitora le erogazioni in tempo reale, genera ricevute digitali e funziona anche offline: 10.000 utenti finali la usano ogni giorno, l'interfaccia BLE ha richiesto 4 mesi di sviluppo e il team era congiunto, 6 persone fra Codebaker e Piusi. La lezione utile è che con il cross-platform il grosso dell'app si scrive una volta sola, ma la parte che tocca l'hardware va comunque progettata e collaudata su entrambe le piattaforme: chi promette che il BLE «funziona uguale ovunque» non l'ha mai messo in produzione.
Quando conviene ancora lo sviluppo nativo nel 2026?
In quattro situazioni. Primo, quando l'app deve usare funzioni del sistema operativo appena rilasciate o molto specifiche: il nativo le ha il giorno stesso, il cross-platform aspetta il plugin. Secondo, quando le due piattaforme devono comportarsi in modo diverso, per esperienza d'uso o per requisiti di un committente. Terzo, quando le prestazioni grafiche o di calcolo sul dispositivo sono il cuore del prodotto. Quarto, quando l'azienda ha già team separati iOS e Android e sostituirli costerebbe più di quanto farebbe risparmiare il codice condiviso. In ConorShop abbiamo scelto app native iOS e Android accanto alla versione web responsive perché il canale mobile doveva reggere l'uso quotidiano di oltre 5.000 clienti al giorno e sincronizzarsi in tempo reale con un gestionale AS400: lì la variabile critica era l'integrazione, non il risparmio sulla base di codice.
Quanto incide davvero la scelta della tecnologia sul costo?
Meno di quanto si creda sullo sviluppo iniziale e molto di più sulla manutenzione. Sul primo rilascio la differenza fra cross-platform e nativo raramente supera la parte di interfaccia, perché il grosso del lavoro — analisi, backend, integrazioni con il gestionale, gestione degli errori — è identico nei tre casi. La differenza vera si vede dal secondo anno: con due basi di codice native ogni modifica, ogni aggiornamento dei sistemi operativi e ogni sessione di test si fanno due volte. Su un'app che cambia poco l'effetto è modesto; su un'app che evolve continuamente diventa la voce di costo dominante. Le fasce di costo di un progetto su misura sono pubblicate apertamente sul nostro sito, e la variabile che le sposta di più non è la tecnologia scelta ma il numero e la qualità delle integrazioni con i sistemi già in uso.
Che cosa NON cambia in base alla tecnologia scelta?
Quasi tutto ciò che decide se l'app avrà successo. Non cambia la qualità dell'analisi dei processi che l'app deve supportare; non cambia il backend e la sua capacità di reggere il carico; non cambia la difficoltà di integrarsi con il gestionale o l'ERP, che è quasi sempre la parte più costosa del progetto; non cambia la gestione degli errori e del funzionamento offline; non cambiano le politiche degli store, che valgono per tutti allo stesso modo; non cambia la necessità di formare chi userà l'app. Nella nostra esperienza il fallimento di un'app aziendale non è quasi mai attribuibile alla tecnologia scelta: è attribuibile a un processo capito male o a un'integrazione sottovalutata. Discutere per settimane di Flutter contro React Native mentre nessuno ha ancora guardato come esce un ordine dal gestionale è il modo più elegante di perdere tempo.
Se ho già un sito o un gestionale in React, conviene React Native?
Spesso sì, ed è la ragione più solida per sceglierlo. Il vantaggio non è tecnico ma organizzativo: le competenze del team sono le stesse, le convenzioni di codice sono le stesse, una parte della logica applicativa e dei tipi condivisi si riusa davvero, e chi mantiene il web può mantenere anche l'app. Se in azienda esiste già un prodotto React o Next.js, React Native riduce il numero di specialisti necessari e il rischio di dipendere da una sola persona. Attenzione però a non confondere «stessa libreria» con «stesso codice»: l'interfaccia mobile va ripensata, non trasportata. Un'app che è un sito web dentro una finestra si riconosce al primo utilizzo, e gli utenti la abbandonano.
Posso cambiare tecnologia dopo, se ho sbagliato?
Sì, e costa molto meno di quanto si teme, a una condizione: che l'app sia stata costruita separando l'interfaccia dalla logica e dalle API. Se il backend è un servizio a sé, con API proprie e documentate, cambiare la tecnologia dell'app significa riscrivere il livello di presentazione, non il sistema: il modello dati, le regole di business, le integrazioni con il gestionale e l'infrastruttura restano. Se invece la logica è stata scritta dentro le schermate, qualunque cambio di tecnologia è una riscrittura totale. È il motivo per cui, indipendentemente dalla scelta fra Flutter, React Native e nativo, insistiamo sempre sulla stessa architettura: API prima, interfaccia poi. È anche ciò che rende possibile aggiungere in seguito una versione web o un secondo canale senza ripartire da zero.
Come riconosco un consiglio disinteressato da uno di comodo?
Da tre segnali. Il primo: chi vi consiglia dovrebbe saper dire in quali casi la tecnologia che propone è la scelta sbagliata. Se non esiste un caso del genere, non state ricevendo una consulenza, state ricevendo un listino. Il secondo: la raccomandazione dovrebbe arrivare dopo le domande sui vostri requisiti — hardware, offline, integrazioni, team interno, evoluzione prevista — e non prima. Il terzo: chiedete che cosa succede se fra due anni volete cambiare, e ascoltate se la risposta parla di architettura o cambia argomento. Una software house che sviluppa in tutte e tre le tecnologie non ha un incentivo a spingerne una; una che ne padroneggia una sola vi proporrà sempre quella, in perfetta buona fede.
Kotlin Multiplatform è un'alternativa a Flutter e React Native?
Sì, con un'impostazione diversa. Kotlin Multiplatform condivide fra iOS e Android la logica dell'app — modelli dati, regole di business, chiamate alle API — scritta in Kotlin, e lascia libera l'interfaccia: può restare nativa su ciascuna piattaforma oppure essere condivisa con Compose Multiplatform. Ha senso soprattutto quando in azienda c'è già un team Android che lavora in Kotlin e si vuole un'interfaccia nativa senza scrivere due volte le regole. I limiti sono un ecosistema più giovane di quelli di Flutter e React Native e il fatto che le competenze iOS restano comunque necessarie. Nella scelta va trattato come una quarta opzione, non come un sostituto automatico delle altre tre.
Una web app (PWA) può sostituire un'app aziendale?
Spesso sì, ed è la prima domanda da porsi. Un'area riservata per i clienti, un portale ordini, una consultazione di dati o uno strumento interno usato da browser vivono benissimo come web app: un solo codice, nessuna approvazione degli store, aggiornamenti immediati per tutti. Una web app può anche essere installata sulla schermata del telefono come PWA. Il limite è l'accesso all'hardware, soprattutto su iOS: Bluetooth e NFC dal browser non sono disponibili in Safari, e funzionamento offline e notifiche hanno vincoli maggiori rispetto a un'app. Se l'app deve dialogare con un dispositivo o lavorare a lungo senza rete, serve un'app vera; altrimenti conviene verificare prima se una web app basta.
React Native ha prestazioni sufficienti per un'app aziendale?
Sì, nella grande maggioranza dei casi. Un'app aziendale passa la maggior parte del tempo a mostrare elenchi, compilare moduli e scambiare dati con un server: è un carico che React Native regge senza differenze percepibili dall'utente, tanto più dopo che la nuova architettura del framework ha eliminato il vecchio «ponte» fra JavaScript e codice nativo. I casi in cui le prestazioni diventano un criterio vero sono pochi e riconoscibili: grafica o animazioni molto intensive, elaborazione pesante sul dispositivo, flussi video. Quando un'app aziendale è lenta, nella nostra esperienza la causa è quasi sempre altrove: chiamate al gestionale troppo lente, dati scaricati per intero invece che a pagine, sincronizzazione offline progettata male.
Flutter e React Native potrebbero essere abbandonati? Che rischio corro?
Il rischio esiste per qualunque tecnologia che non sia quella ufficiale del sistema operativo, ed è giusto valutarlo. Entrambi sono open source e sostenuti da grandi aziende — Flutter da Google, React Native da Meta — con comunità molto ampie, il che rende improbabile un abbandono improvviso. Ma la vera protezione non è la scelta del framework, è l'architettura: se il backend è un servizio a sé, con API documentate, e la logica non è scritta dentro le schermate, sostituire il framework significa riscrivere l'interfaccia e non il sistema. È lo stesso principio che rende possibile aggiungere in seguito una versione web o un nuovo canale. Il secondo presidio è contrattuale: il codice sorgente deve essere di proprietà del cliente, così da poterlo affidare a chiunque.
Quanto costa sviluppare un'app aziendale?
Dipende molto più dalle integrazioni che dalla tecnologia. Le fasce che pubblichiamo apertamente per i progetti su misura sono 5.000-15.000 € per un progetto circoscritto senza integrazioni complesse, 15.000-50.000 € per un progetto con integrazione ai sistemi esistenti, oltre 50.000 € per piattaforme articolate. Dentro una fascia, la scelta fra Flutter, React Native e nativo sposta soprattutto il costo dell'interfaccia sul primo rilascio e il costo della manutenzione dal secondo anno, quando con il nativo ogni modifica si fa due volte. A spostare un progetto da una fascia all'altra sono invece il numero e la qualità delle integrazioni con gestionale ed ERP, il funzionamento offline e il numero di ruoli utente. L'analisi preliminare e il preventivo sono gratuiti.
Che cosa ricevo alla fine del workshop di scelta tecnologica?
Un documento scritto in cinque sezioni. I requisiti che comandano la scelta, cioè le poche cose senza le quali l'app non serve. La tecnologia raccomandata e il perché. Che cosa si perde scegliendola rispetto alle alternative. Che cosa non cambia con nessuna tecnologia, cioè i rischi veri del progetto, quasi sempre integrazioni e funzionamento offline. E le condizioni che ribalterebbero la scelta: per esempio, se l'app dovesse in futuro dialogare con un dispositivo Bluetooth o se un sistema esistente venisse dismesso. Quest'ultima sezione permette a chi decide di verificare la raccomandazione anche in seguito, senza dipendere da chi l'ha scritta. Se dall'analisi emerge che un'app non serve e basta una web app, il documento lo dice.
Chi può aiutarmi a scegliere la tecnologia per l'app della mia azienda in Emilia-Romagna?
Codebaker è una software house di Bologna, in Via N. Corazza 7/8, fondata nel 2019, che sviluppa app aziendali in Flutter, React Native e nativo iOS e Android, e che quindi non ha un interesse a spingere una tecnologia sulle altre. In produzione: B.SMART di Piusi, app Flutter che dialoga via Bluetooth Low Energy con gli erogatori di carburante e funziona anche offline, usata da 10.000 utenti al giorno, con l'interfaccia BLE sviluppata in 4 mesi da un team congiunto di 6 persone; ConorShop, con app native iOS e Android e versione web responsive sincronizzate in tempo reale con un gestionale AS400, 5.000+ clienti al giorno e 300.000+ ordini l'anno. Il percorso che proponiamo è un incontro di analisi che parte dai requisiti reali dell'app e si chiude con una raccomandazione scritta e motivata, comprensiva di che cosa si perde con l'alternativa. L'analisi preliminare e il preventivo sono gratuiti, il codice sorgente resta di proprietà del cliente e non ci sono canoni per utente.
Raccontaci l'app, ti diciamo con che cosa la faremmo
Dicci che cosa deve fare l'app, chi la userà e con quali sistemi deve parlare. Ti rispondiamo con una raccomandazione tecnologica motivata, comprensiva di che cosa si perde scegliendo l'alternativa — e se pensiamo che l'app non serva, lo diciamo. L'analisi preliminare e il preventivo sono gratuiti.
