Environnements compatibles
Le SDK JavaScript Firebase est officiellement compatible avec les environnements suivants.
Navigateurs
Produit Firebase | Edge | Firefox | Chrome | Safari pour iOS | Safari |
---|---|---|---|---|---|
App Check | |||||
Analytics | |||||
Authentication | |||||
Cloud Firestore | (sauf la persistance ) |
(sauf la persistance si iOS < 10) |
|||
Cloud Functions | |||||
Firebase installations | |||||
Cloud Messaging | (Edge 17 ou version ultérieure, sauf mobile) |
||||
Cloud Storage | |||||
Performance Monitoring | |||||
Realtime Database | |||||
Remote Config | |||||
Vertex AI in Firebase |
Autres environnements
Produit Firebase | React Native | Node.js (18 et versions ultérieures) | Extensions Chrome |
Cordoue |
---|---|---|---|---|
App Check | (avec un fournisseur personnalisé pour effectuer une attestation d'appareil natif) |
(à l'aide d'un fournisseur personnalisé) |
||
Analytics | ||||
Authentication | (voir la Remarque) |
(voir la Remarque) |
(voir la Remarque) |
(voir la Remarque) |
Cloud Firestore | (sauf la persistance) |
(sauf la persistance) |
||
Cloud Functions | ||||
Installations Firebase | ||||
Cloud Messaging | ||||
Cloud Storage | (sauf les importations ) |
|||
Performance Monitoring | ||||
Realtime Database | ||||
Remote Config | ||||
Vertex AI in Firebase |
Polyfills
Le SDK JavaScript Firebase repose sur les dernières normes de la plate-forme Web. Certains navigateurs et environnements JavaScript plus anciens ne sont pas compatibles avec toutes les fonctionnalités requises par Firebase. Si vous devez prendre en charge ces navigateurs/environnements, vous devez charger des polyfills en conséquence.
Les sections ci-dessous identifient la plupart des polyfills dont vous pourriez avoir besoin.
Polyfills requis
Environnements | Polyfills |
---|---|
Safari 7, 8 et 9 | ES Stable |
Nœud < 10 | ES Stable |
Polyfills facultatifs
Environnements | Polyfills | Produits Firebase |
---|---|---|
|
récupérer |
|
|
charger |
|
|
base-64 |
|
Polyfills suggérés
Polyfills | Licence |
---|---|
ES Stable | MIT |
fetch (cross-fetch) : idéal pour les anciens navigateurs | MIT |
fetch - "undici" - idéal pour Node.js | MIT |
base-64 | MIT |
Configuration requise pour le remplissage de lacunes pour React Native et Expo
Pour React Native et Expo, si vous importez une chaîne encodée en base64, procédez comme suit :
Installez base-64 à partir de npm:
npm install base-64
Importez decode
à partir de base-64
et associez-le au champ d'application global en tant que atob
afin que Cloud Storage puisse y accéder.
import { decode } from 'base-64';
if(typeof atob === 'undefined') {
global.atob = decode;
}
Ajouter des polyfills dans votre application
Option 1 : (Recommandé) Utiliser un bundler intégré à Babel
Si vous utilisez un bundler, intégrez Babel et @babel/preset-env pour obtenir des polyfills.
Consultez le guide de configuration interactif de Babel pour découvrir comment intégrer Babel à votre bundler.
Avec Babel, vous n'avez pas à vous soucier des polyfills exacts à inclure. Vous devez plutôt spécifier les environnements de navigateurs minimaux que vous devez prendre en charge. Babel ajoute ensuite les polyfills nécessaires. Babel garantit que vos exigences en termes de compatibilité avec les navigateurs sont toujours remplies, même si Firebase ou votre propre code commence à utiliser de nouvelles fonctionnalités ES.
@babel/preset-env fournit des informations détaillées sur les options de configuration disponibles pour spécifier des cibles d'environnement (option targets
) et ajouter des polyfills (option useBuiltIns
).
Option 2 : (non recommandé) Ajouter des polyfills manuellement
Vous pouvez ajouter des polyfills manuellement à l'aide de vos bibliothèques de polyfills préférées (par exemple, core-js
).
import 'core-js/stable'
import 'cross-fetch/polyfill';
core-js
fournit également un fichier polyfill tout-en-un que vous pouvez inclure directement dans la page HTML.
Cette option peut être un moyen pratique de gérer les polyfills si vous n'utilisez pas Babel. Toutefois, nous ne recommandons pas cette option tout-en-un pour les applications de production, car elle inclura probablement des polyfills inutiles, ce qui augmente le poids de la page et donc le temps de chargement de la page.