Convert Figma logo to code with AI

firebase logofirebase-js-sdk

Firebase Javascript SDK

4,813
884
4,813
636

Top Related Projects

🔥 A well-tested feature-rich modular Firebase implementation for React Native. Supports both iOS & Android platforms for all Firebase services.

The Firebase Command Line Tools

Firebase Admin Python SDK

Parse Server for Node.js / Express

Quick Overview

The firebase/firebase-js-sdk repository contains the official Firebase SDK for JavaScript. It provides a comprehensive set of tools and services for building web and mobile applications, including real-time database, authentication, cloud functions, and more. This SDK allows developers to easily integrate Firebase features into their JavaScript applications.

Pros

  • Comprehensive suite of tools and services for app development
  • Real-time data synchronization across clients
  • Easy-to-use API with extensive documentation
  • Scalable infrastructure managed by Google

Cons

  • Potential vendor lock-in with Google's ecosystem
  • Limited customization options for some features
  • Can be expensive for large-scale applications
  • Learning curve for developers new to Firebase

Code Examples

  1. Initialize Firebase in your application:
import { initializeApp } from 'firebase/app';

const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  // ... other config options
};

const app = initializeApp(firebaseConfig);
  1. Authenticate a user with email and password:
import { getAuth, signInWithEmailAndPassword } from 'firebase/auth';

const auth = getAuth();
signInWithEmailAndPassword(auth, email, password)
  .then((userCredential) => {
    // Signed in 
    const user = userCredential.user;
  })
  .catch((error) => {
    const errorCode = error.code;
    const errorMessage = error.message;
  });
  1. Read data from Firestore:
import { getFirestore, collection, getDocs } from 'firebase/firestore';

const db = getFirestore();
const querySnapshot = await getDocs(collection(db, "users"));
querySnapshot.forEach((doc) => {
  console.log(`${doc.id} => ${doc.data()}`);
});

Getting Started

  1. Install the Firebase SDK:
npm install firebase
  1. Initialize Firebase in your app:
import { initializeApp } from 'firebase/app';

const firebaseConfig = {
  // Your web app's Firebase configuration
};

const app = initializeApp(firebaseConfig);
  1. Use Firebase services:
import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';

const auth = getAuth();
const db = getFirestore();

// Now you can use auth and db to interact with Firebase services

Competitor Comparisons

🔥 A well-tested feature-rich modular Firebase implementation for React Native. Supports both iOS & Android platforms for all Firebase services.

Pros of react-native-firebase

  • Specifically designed for React Native, offering better performance and native integration
  • Provides a more comprehensive set of Firebase features tailored for mobile development
  • Offers TypeScript support out of the box

Cons of react-native-firebase

  • Limited to React Native projects, not suitable for web or other JavaScript environments
  • May have a steeper learning curve for developers new to React Native
  • Potentially slower updates compared to the official SDK

Code Comparison

firebase-js-sdk:

import { initializeApp } from 'firebase/app';
import { getFirestore, collection, getDocs } from 'firebase/firestore';

const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
const querySnapshot = await getDocs(collection(db, 'users'));

react-native-firebase:

import firestore from '@react-native-firebase/firestore';

const querySnapshot = await firestore().collection('users').get();

The react-native-firebase example demonstrates a more concise syntax for Firestore operations, while the firebase-js-sdk example shows the modular approach used in the web SDK. Both achieve similar functionality, but react-native-firebase provides a more React Native-friendly API.

The Firebase Command Line Tools

Pros of firebase-tools

  • Provides a command-line interface for Firebase services
  • Enables local development and testing of Firebase projects
  • Offers deployment and hosting capabilities

Cons of firebase-tools

  • Limited to server-side and development tasks
  • Requires separate installation and setup from the main SDK
  • May have a steeper learning curve for beginners

Code Comparison

firebase-tools (CLI usage):

firebase init
firebase serve
firebase deploy

firebase-js-sdk (JavaScript usage):

import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';

const app = initializeApp(firebaseConfig);
const db = getFirestore(app);

Key Differences

  • firebase-js-sdk is the core SDK for integrating Firebase services into web applications
  • firebase-tools focuses on development workflows, CLI operations, and deployment
  • firebase-js-sdk is used directly in application code, while firebase-tools is used for project management and development tasks

Use Cases

  • Use firebase-js-sdk for client-side integration of Firebase services in web apps
  • Use firebase-tools for project setup, local development, testing, and deployment of Firebase projects

Community and Support

Both repositories are actively maintained by the Firebase team and have strong community support. firebase-js-sdk typically has more frequent updates due to its core SDK nature, while firebase-tools receives updates aligned with new Firebase features and improvements in the development workflow.

Firebase Admin Python SDK

Pros of firebase-admin-python

  • Better suited for server-side applications and backend services
  • Provides more comprehensive admin-level access to Firebase services
  • Supports Python's asynchronous programming model with async/await syntax

Cons of firebase-admin-python

  • Limited to server-side usage, not suitable for client-side applications
  • Smaller ecosystem and community compared to the JavaScript SDK
  • Fewer integrations with popular Python web frameworks

Code Comparison

firebase-admin-python:

import firebase_admin
from firebase_admin import credentials, firestore

cred = credentials.Certificate("path/to/serviceAccount.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

firebase-js-sdk:

import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';

const firebaseConfig = { /* ... */ };
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);

The Python SDK is designed for server-side use with admin privileges, while the JavaScript SDK is more versatile, supporting both client-side and server-side applications. The Python SDK offers stronger typing and better integration with Python's ecosystem, whereas the JavaScript SDK provides a more extensive set of features for web and mobile development.

Parse Server for Node.js / Express

Pros of Parse Server

  • Open-source and self-hostable, offering more control over data and infrastructure
  • More flexible and customizable, allowing for deeper modifications to suit specific needs
  • Free to use and deploy, with no mandatory costs beyond hosting expenses

Cons of Parse Server

  • Requires more setup and maintenance compared to Firebase's managed services
  • Smaller ecosystem and community support than Firebase
  • May lack some advanced features available in Firebase, like real-time database sync

Code Comparison

Parse Server initialization:

const express = require('express');
const ParseServer = require('parse-server').ParseServer;
const app = express();
const api = new ParseServer({
  databaseURI: 'mongodb://localhost:27017/dev',
  appId: 'myAppId',
  masterKey: 'myMasterKey',
  serverURL: 'http://localhost:1337/parse'
});

Firebase initialization:

import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';

const firebaseConfig = {
  apiKey: 'your-api-key',
  projectId: 'your-project-id',
};
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);

Both Parse Server and Firebase JS SDK offer robust backend solutions, but they cater to different needs. Parse Server provides more control and customization at the cost of increased setup and maintenance, while Firebase offers a more streamlined, managed experience with a broader feature set and ecosystem support.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Firebase JavaScript SDK

Build Status Version Coverage Status

The Firebase JavaScript SDK implements the client-side libraries used by applications using Firebase services. This SDK is distributed via:

To get started using Firebase, see Add Firebase to your JavaScript Project.

Release Notes

Upgrade to Version 9

Version 9 has a redesigned API that supports tree-shaking. Read the Upgrade Guide to learn more.

Supported Environments

Please see Environment Support.

SDK Dev Workflow

Prerequisites

Node.js

Before you can start working on the Firebase JS SDK, you need to have Node.js installed on your machine. As of April 19th, 2024 the team has been testing with Node.js version 20.12.2, but the required version of Node.js may change as we update our dependencies.

To download Node.js visit https://nodejs.org/en/download/.

NOTE: You can use a tool like NVM or N to install and manage multiple node versions

Yarn

In addition to Node.js we use yarn to facilitate multi package development.

To install yarn follow the instructions listed on their website: https://yarnpkg.com/en/docs/install

This repo currently supports building with yarn 1.x. For instance, after installing yarn, run

$ yarn set version 1.22.11

Java

The closure compiler requires a modern Java installation. Java 11+ should be installed: https://www.oracle.com/java/technologies/downloads/#java11

Verify Prerequisites

You can verify your setup by running the following commands in your terminal:

$ node -v
$ yarn -v
$ java -version

Your node version should be 20.12.2, your yarn version should be between 1.0.0 and 1.22.11, and your java version should be 11.0 or greater.

NOTE: We will update the documentation as new versions are required, however for continuing development on the SDK, staying up to date on the stable versions of these packages is advised

Install Dependencies

Once you have Node.js and yarn installed on your machine and have validated that you are running the proper version, you can set up the development environment by running the following at the root of the SDK:

$ yarn

Once you have installed all the dependencies, you can build the entire SDK by running the following command the root of the SDK:

$ yarn build

Testing the SDK

Test Setup

A production project is required to test the Firebase JS SDK. You can create a new project by visiting the Firebase Console.

Web App Setup

Visit the "Project Overview" and select "Add app" under your project name. Register the app with a nickname and click through the remaining steps. Without performing this step, you will encounter the error in the test setup:

FirebaseError: There are no WEB apps associated with this Firebase project

Firestore Database Setup

Visit the "Firestore Database" section of the console and create a Cloud Firestore database. When prompted to select the set of initial security rules, select any option (e.g. "Start in Production Mode") since these permission settings will be overwritten below.

Realtime Database Setup

Visit the "Realtime Database" section of the console and create a realtime database. When prompted to select the set of initial security rules, select any option (e.g. "Start in Locked Mode") since these permission settings will be overwritten below.

Storage Setup

Visit the "Storage" section of the console and create a storage bucket. In order to run the tests, you will need to update your bucket's CORS rules.

  1. Create a new file called cors.json with the contents:
[
    {
        "origin": ["http://localhost:8089"],
        "method": ["GET"],
        "maxAgeSeconds": 3600
    }
]
  1. Install gsutil from https://cloud.google.com/storage/docs/gsutil_install
  2. You will need to login if this is your first time using gsutil. Run gcloud auth login and follow the instructions to login.
  3. Run gsutil cors set cors.json gs://<your-cloud-storage-bucket>

For more information, visit https://firebase.google.com/docs/storage/web/download-files#cors_configuration

Authentication Support

Visit the authentication config in your project and enable the Anonymous sign-in provider to complete your project config.

Automated Setup

The tests need to be configured to use the Firebase production project that you created in the "Test Setup" section above. To do this, run the yarn test:setup command, as follows:

# Select the Firebase project via the text-based UI. This will run tools/config.js
# and deploy from config/ to your Firebase project.
$ yarn test:setup

# Specify the Firebase project via the command-line arguments.
$ yarn test:setup --projectId=<test_firebase_project_id>

If you see an error like

HTTP Error: 404, Project '<test_firebase_project_id>' does not exist.

then make sure that you have created the database as specified in the "Firestore Database Setup" section above.

Running the tests

Each of the directories in the integration directory as well as the packages directory have their own test suites. You will need to build the SDK before running tests. Test suites can be run all together by running the following command at the root of the package:

$ yarn test

In addition, you can run any of the tests individually by running yarn test in an individual package directory.

Building the SDK

Introduction

The Firebase JS SDK is built with a series of individual packages that are all contained in this repository. Development is coordinated via yarn workspaces and Lerna (a monorepo management tool).

Each package in the packages directory, constitute a piece of our implementation. The SDK is built via a combination of all of these packages which are published under the firebase scope on NPM.

Testing the SDK Locally

Please be sure your product's package has been built before proceeding any further. (If you haven't built this repo before, make sure to run yarn build at the root) In order to manually test your SDK changes locally, you must use yarn link:

$ cd packages/firebase
$ yarn link # initialize the linking to the other folder
$ cd ../<my-product> # Example: $ cd ../firestore
$ yarn link # link your product to make it available elsewhere
$ cd <my-test-app-dir> # cd into your personal project directory
$ yarn link firebase @firebase/<my-product> # tell yarn to use the locally built firebase SDK instead

This will create a symlink and point your <my-test-app-dir> to the locally built version of the firebase SDK.

Helper Scripts

Each package in the packages directory exposes a dev script. This script will set up a watcher for development on the individual piece of the SDK. In addition, there is a top level dev script that can be run to start all of the watch tasks as well as a sandbox server.

You can run the dev script by running the following at the root of the package:

$ yarn dev

Prepush Hooks

As part of this repo, we use the NPM package husky to implement git hooks. We leverage the prepush hook to do two things:

  • Automated code styling (using prettier)
  • Automated LICENSE header insertion

Contributing

See Contributing for more information on contributing to the Firebase JavaScript SDK.

Big Thanks

Cross-browser Testing Platform and Open Source <3 Provided by Sauce Labs

NPM DownloadsLast 30 Days