Ambienti supportati
L'SDK Firebase JavaScript è supportato ufficialmente nei seguenti ambienti.
Browser
| Prodotto Firebase | Edge | Firefox | Chrome | Safari per iOS | Safari |
|---|---|---|---|---|---|
| Firebase AI Logic 1 | |||||
| Analytics | |||||
| App Check | |||||
| Authentication | |||||
| Cloud Firestore | (tranne la persistenza) |
(tranne la persistenza se iOS < 10) |
|||
| Cloud Functions | |||||
| Cloud Messaging | (Edge 17 e versioni successive, ad eccezione dei dispositivi mobili) |
||||
| Cloud Storage | |||||
| Firebase installazioni | |||||
| Performance Monitoring | |||||
| Realtime Database | |||||
| Remote Config | |||||
| SQL Connect |
1 Firebase AI Logic era precedentemente chiamato "Vertex AI in Firebase".
Altri ambienti
| Prodotto Firebase | React Native | Node.js (18+) | Estensioni di Chrome |
Cordova |
|---|---|---|---|---|
| Firebase AI Logic 1 | ||||
| App Check | (utilizzando un provider personalizzato per eseguire l'attestazione nativa del dispositivo) |
(utilizzando un provider personalizzato) |
||
| Analytics | ||||
| Authentication | (vedi Nota) |
(vedi Nota) |
(vedi Nota) |
(vedi Nota) |
| Cloud Firestore | (tranne la persistenza) |
(tranne la persistenza) |
||
| Cloud Functions | ||||
| Cloud Messaging | ||||
| Cloud Storage | (tranne i caricamenti) |
|||
| Firebase installazioni | ||||
| Performance Monitoring | ||||
| Realtime Database | ||||
| Remote Config | ||||
| SQL Connect |
1 Firebase AI Logic era precedentemente chiamato "Vertex AI in Firebase".
Polyfill
L'SDK JavaScript Firebase è basato sugli standard più recenti della piattaforma web. Alcuni browser e ambienti JavaScript meno recenti non supportano tutte le funzionalità richieste da Firebase. Se devi supportare questi browser/ambienti, devi caricare i polyfill di conseguenza.
Le sezioni seguenti identificano la maggior parte dei polyfill di cui potresti aver bisogno.
Polyfill obbligatori
| Ambienti | Polyfill |
|---|---|
| Safari 7, 8 e 9 | ES Stable |
| Nodo < 10 | ES Stable |
Polyfill facoltativi
| Ambienti | Polyfill | Prodotti Firebase |
|---|---|---|
|
fetch |
|
|
fetch |
|
|
base-64 |
|
Polyfill suggeriti
| Polyfill | Licenza |
|---|---|
| ES Stable | MIT |
| fetch - "cross-fetch" - ideale per i browser meno recenti | MIT |
| fetch - "undici" - ideale per Node.js | MIT |
| base-64 | MIT |
Configurazione del polyfill richiesta per React Native ed Expo
Per React Native ed Expo, se carichi una stringa con codifica base64, devi procedere nel seguente modo:
Installa base-64 da npm:
npm install base-64
Importa decode da base-64 e collegalo allo scope globale come atob in modo che Cloud Storage possa accedervi.
import { decode } from 'base-64';
if(typeof atob === 'undefined') {
global.atob = decode;
}
Aggiungi i polyfill nell'applicazione
Opzione 1: (consigliata) utilizza un bundler integrato con Babel
Se utilizzi un bundler, esegui l'integrazione con Babel e @babel/preset-env per ottenere i polyfill.
Utilizza la guida alla configurazione interattiva di Babel per scoprire come integrare Babel con il tuo bundler.
Con Babel, non devi preoccuparti dei polyfill esatti da includere. Devi invece specificare gli ambienti browser minimi che devi supportare. Babel aggiunge quindi i polyfill necessari. Babel garantisce che i tuoi requisiti per il supporto del browser siano sempre soddisfatti, anche se Firebase o il tuo codice iniziano a utilizzare nuove funzionalità ES.
@babel/preset-env contiene informazioni dettagliate sulle opzioni di configurazione disponibili per specificare gli ambienti di destinazione (opzione targets) e aggiungere polyfill (opzione useBuiltIns).
Opzione 2: (non consigliata) aggiungi manualmente i polyfill
Puoi aggiungere i polyfill manualmente utilizzando le tue librerie di polyfill preferite (ad esempio core-js).
import 'core-js/stable'
import 'cross-fetch/polyfill';
core-js fornisce anche un file polyfill all-in-one che puoi includere direttamente nella pagina HTML.
Questa opzione può essere un modo pratico per gestire i polyfill se non utilizzi Babel. Tuttavia, non consigliamo questa opzione all-in-one per le app di produzione, in quanto probabilmente includerà polyfill non necessari, che aumentano il peso della pagina e, di conseguenza, il tempo di caricamento della pagina.