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
- 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);
- 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;
});
- 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
- Install the Firebase SDK:
npm install firebase
- Initialize Firebase in your app:
import { initializeApp } from 'firebase/app';
const firebaseConfig = {
// Your web app's Firebase configuration
};
const app = initializeApp(firebaseConfig);
- 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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Firebase JavaScript SDK
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.
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.
- Create a new file called
cors.json
with the contents:
[
{
"origin": ["http://localhost:8089"],
"method": ["GET"],
"maxAgeSeconds": 3600
}
]
- Install
gsutil
from https://cloud.google.com/storage/docs/gsutil_install - You will need to login if this is your first time using
gsutil
. Rungcloud auth login
and follow the instructions to login. - 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
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
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot