|Linguaggio2 = Java
|Linguaggio3 = C++
|LinguaggioAltri = [[Objective C]], [[Python]]
|Genere = web framework
|Licenza = [[Licenza MIT]]
|SitoWeb = https://reactnative.dev/
|nome = React Native
}}'''React Native''' è un [[framework per applicazioni mobili]] [[open- source]] creato da [[Meta Platforms|Meta]]<ref>{{Cita web|url=https://www.oreilly.com/library/view/learning-react-native/9781491929049/ch01.html|sito=oreilly.com|dataaccessoaccesso=30 July 2020}}</ref>. Viene utilizzato per sviluppare applicazioni per [[Android]],<ref>{{Cita web|url=https://code.facebook.com/posts/1189117404435352/react-native-for-android-how-we-built-the-first-cross-platform-react-native-app/}}</ref> [[Android TV]],<ref>{{Cita web|url=https://reactnative.dev/|sito=reactnative.dev|dataaccessoaccesso=2020-10-02}}</ref> [[iOS]], [[macOS]],<ref name=":0">{{Cita web|url=https://microsoft.github.io/react-native-windows/|sito=microsoft.github.io|dataaccessoaccesso=2020-10-02}}</ref> [[tvOS]],<ref>{{Cita web|url=https://dlowder-salesforce.github.io/react-native-apple-tv/|sito=React Native for Apple TV|dataaccessoaccesso=2020-10-02|titolo=Copia archiviata|dataarchivio=21 settembre 2020|urlarchivio=https://web.archive.org/web/20200921042522/https://dlowder-salesforce.github.io/react-native-apple-tv/|urlmorto=sì}}</ref> [[Sito web|Web]],<ref>{{Cita web|url=https://github.com/necolas/react-native-web/|dataaccessoaccesso=2019-11-06}}</ref> [[Microsoft Windows|Windows]] e [[Universal Windows Platform|UWP]]<ref>{{Cita web|url=https://blogs.windows.com/buildingapps/2016/04/13/react-native-on-the-universal-windows-platform/|autore=Windows Apps Team|sito=blogs.windows.com|dataaccessoaccesso=2016-11-06}}</ref> consentendo agli sviluppatori di utilizzare [[React (web framework)|React]] framework insieme alle funzionalità della piattaforma nativa.<ref>{{Cita web|url=https://reactnative.dev/docs/out-of-tree-platforms|sito=reactnative.dev|dataaccessoaccesso=30 July 2020}}</ref>
== Storia ==
In passato, l'utilizzo di [[HTML5]] per la versione mobile di Facebook ha portato ad avere un'applicazione instabile con un lento recupero dei dati.<ref>{{Cita web|url=https://mashable.com/2012/09/11/html5-biggest-mistake/|sito=Mashable|lingua=en|dataaccessoaccesso=2020-10-29}}</ref> Per questo motivo, [[Mark Zuckerberg]] ha promesso che [[Meta Platforms|Meta]] avrebbe presto offerto una migliore esperienza mobile.
All'interno di Meta, Jordan Walke ha trovato un modo per generare elementi dell'[[interfaccia utente]] per iOS da un [[Thread (informatica)|thread]] [[JavaScript]] in background, che è diventato la base per il [[React (web framework)|framework React web]]. Hanno deciso di organizzare un [[Hackathon]] interno per perfezionare questo [[prototipo]] in modo da poter creare [[Applicazione mobile|app native]] con questa tecnologia.<ref>{{Cita web|url=https://jobninja.com/blog/short-story-react-native/|dataaccessoaccesso=16 January 2018|titolo=Copia archiviata|dataarchivio=17 gennaio 2018|urlarchivio=https://web.archive.org/web/20180117011925/https://jobninja.com/blog/short-story-react-native/|urlmorto=sì}}</ref>
Dopo mesi di sviluppo, Meta ha rilasciato la prima versione per React in JavaScript nel 2015. Durante un discorso tecnico,<ref>{{Cita web|url=https://www.youtube.com/watch?v=7rDsRXj9-cU|sito=YouTube|dataaccessoaccesso=16 January 2018}}</ref> Christopher Chedeau ha spiegato che Meta stava già utilizzando React Native in produzione per la sua app di gestione degli annunci.<ref name="initial_rn_post">{{Cita web|url=https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/}}</ref>
== Implementazione ==
I principi di funzionamento di React Native sono fondamentalmente identici a [[React (web framework)|React]], tranne per il fatto che React Native non manipola il [[Document Object Model|DOM]] tramite il [[React (web framework)|Virtual DOM]]. Avviene infatti un'[[esecuzione in background]] che interpreta il [[JavaScript]] scritto dagli sviluppatori direttamente sul dispositivo finale che comunica con la piattaforma nativa tramite una [[serializzazione]] dei dati su un ponte [[asincrono]].<ref>{{Cita web|url=https://tadeuzagallo.com/blog/react-native-bridge/|dataaccessoaccesso=16 January 2018}}</ref><ref>{{Cita web|url=https://blog.uptech.team/how-we-build-apps-on-react-native-part-2-7-things-you-should-know-to-save-your-development-time-944533f81c03|dataaccessoaccesso=2019-11-06|urlmorto=sì}}</ref>
I componenti di React avvolgono il codice nativo esistente e interagiscono con le API native tramite la [[programmazione dichiarativa]] di React e il [[JavaScript]].<ref>{{Cita web|url=https://www.xongolab.com/blog/how-react-native-can-empower-your-mobile-app-development-process/|dataaccessoaccesso=15 February 2019}}</ref>
Sebbene lo stile di React Native abbia una sintassi simile al [[CSS]], non utilizza [[HTML]] o [[CSS]].<ref>{{Cita web|url=https://reactnative.dev/docs/style|dataaccessoaccesso=24 February 2021}}</ref> Invece, i messaggi dal [[Processo (informatica)|thread]] JavaScript vengono utilizzati per manipolare le visualizzazioni native. React Native consente inoltre agli sviluppatori di scrivere codice nativo in linguaggi come [[Java (linguaggio di programmazione)|Java]] o [[Kotlin (linguaggio di programmazione)|Kotlin]] per [[Android]] e [[Objective-C]] o [[Swift (linguaggio di programmazione)|Swift]] per [[iOS]], il che lo rende ancora più flessibile.
== Esempio di base ==
|