Environnements pris en charge pour le SDK JavaScript Firebase

Environnements pris en charge

Le SDK JavaScript Firebase est officiellement pris en charge dans les environnements suivants.

Navigateurs

Produit Firebase Bord Firefox Chrome iOSSafari Safari
Vérification de l'application
Analytique
Authentification
Cloud Firestore
(sauf
persistance)

(sauf
persistance
si iOS < 10)
Fonctions cloud
Installations Firebase
Messagerie cloud
(Edge 17+, sauf mobile)
Stockage en ligne
Suivi de la performance
Base de données en temps réel
Configuration à distance

Autres environnements

Produit Firebase Réagir natif Noeud.js Chrome
Rallonges
Cordoue
Vérification de l'application
(en utilisant un fournisseur personnalisé pour effectuer une attestation native de l'appareil)

(en utilisant un fournisseur personnalisé )
Analytique
Authentification
(voir la note )

(voir la note )

(voir la note )

(voir la note )
Cloud Firestore
(sauf
persistance)

(sauf
persistance)
Fonctions cloud
Installations Firebase
Messagerie cloud
Stockage en ligne
(sauf
téléchargements)
Suivi de la performance
Base de données en temps réel
Configuration à distance

Polyremplissages

Le SDK JavaScript Firebase est construit sur les derniers standards de la plateforme Web. Certains navigateurs et environnements JavaScript plus anciens ne prennent pas en charge toutes les fonctionnalités requises par Firebase. Si vous devez prendre en charge ces navigateurs/environnements, vous devez alors charger les polyfills en conséquence.

Les sections ci-dessous identifient la plupart des polyfills dont vous pourriez avoir besoin.

Polyfills requis

Environnements Polyremplissages
Safari 7 & 8 & 9 ES Stable
Nœud < 6,5 ES Stable

Polyfills facultatifs

Environnements Polyremplissages Produits Firebase
  • Nœud
  • Safari < 10.1
  • iOS < 10.3
aller chercher
  • Fonctions cloud
  • Suivi de la performance
  • Réagir Native et Expo
base-64
  • Stockage en ligne

Polyfills suggérés

Polyremplissages Licence
ES Stable MIT
aller chercher MIT
base-64 MIT

Configuration Polyfill requise pour React Native et Expo

Pour React Native et Expo, si vous téléchargez une chaîne encodée en base 64, vous devez procéder comme suit :

Installez la base-64 à partir de npm :

npm install base-64

Importez decode à partir de base-64 et attachez-le à la portée globale en tant atob afin que Cloud Storage puisse y accéder.

import { decode } from 'base-64';

if(typeof atob === 'undefined') {
  global.atob = decode;
}

Ajoutez des polyfills dans votre application

Option 1 : (Recommandé) Utiliser le bundler intégré à Babel

Si vous utilisez un bundler, intégrez-le à Babel et @babel/preset-env pour obtenir des polyfills.

Utilisez le guide de configuration interactif de Babel pour apprendre à intégrer Babel à votre bundler.

Avec Babel, vous n'avez pas à vous soucier des polyfills exacts à inclure. Au lieu de cela, vous spécifiez les environnements de navigateur minimaux que vous devez prendre en charge. Babel ajoute ensuite les polyfills nécessaires pour vous. Babel garantit que vos exigences en matière de prise en charge du navigateur sont toujours satisfaites, même si Firebase ou votre propre code commence à utiliser de nouvelles fonctionnalités ES.

@babel/preset-env contient 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 polyfill 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. Cependant, 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.