Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including expo-firebase-firestore with all npm packages installed. Try it out:

var expoFirebaseFirestore = require("expo-firebase-firestore")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

expo-firebase-firestore v2.0.0

Expo Unimodule for interfacing with Firebase Cloud Firestore


expo-firebase is still in RC and therefore subject to breaking changings. Be sure to run yarn upgrade and cd ios; pod install when upgrading.

expo-firebase-firestore provides a json based cloud data store that is synchronized in real-time.

Full documentation


Now, you need to install the package from npm registry.

npm install expo-firebase-firestore or yarn add expo-firebase-firestore



If you're using Cocoapods, add the dependency to your Podfile:

pod 'EXFirebaseFirestore', path: '../node_modules/expo-firebase-firestore/ios'

and run pod install.


  1. Append the following lines to android/settings.gradle:

    include ':expo-firebase-firestore'
    project(':expo-firebase-firestore').projectDir = new File(rootProject.projectDir, '../node_modules/expo-firebase-firestore/android')

    and if not already included

    include ':expo-core'
    project(':expo-core').projectDir = new File(rootProject.projectDir, '../node_modules/expo-core/android')
    include ':expo-firebase-app'
    project(':expo-firebase-app').projectDir = new File(rootProject.projectDir, '../node_modules/expo-firebase-app/android')
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:

    api project(':expo-firebase-firestore')

    and if not already included

    api project(':expo-core')
    api project(':expo-firebase-app')
  3. Include the module in your expo packages: ./android/app/src/main/java/host/exp/exponent/

    * At the top of the file.
    * This is automatically imported with Android Studio, but if you are in any other editor you will need to manually import the module.
    import; // This should be here for all Expo Firebase features.
    import expo.modules.firebase.firestore.FirebaseFirestorePackage;
    // Later in the file...
    public List<Package> expoPackages() {
      // Here you can add your own packages.
      return Arrays.<Package>asList(
        new FirebaseAppPackage(), // This should be here for all Expo Firebase features.
        new FirebaseFirestorePackage() // Include this.


import React from 'react';
import { Text, FlatList } from 'react-native';
import firebase from 'expo-firebase-app';

// API can be accessed with: firebase.firestore();

export default class WheatView extends React.Component {
  ref = firebase.firestore().collection('posts');
  state = { posts: [], loading: false };

  componentDidMount() {
    this.unsubscribe = this.ref.onSnapshot(this.onCollectionUpdate);

  onCollectionUpdate = querySnapshot => {
    const posts = [];
    querySnapshot.forEach(doc => {
      const { title, complete } =;
        doc, // DocumentSnapshot

      loading: false,

  componentWillUnmount() {

  renderItem = ({ item }) => <Text onPress={() => this.toggle(item)}>{item.title}</Text>;

  toggle = ({ doc, complete }) => {
    doc.ref.update({ complete: !complete });

  post = ({ title }) => {
      complete: false,

  render() {
    return <FlatList data={this.state.posts} renderItem={this.renderItem} />;
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free