- Realtime technologies
- Pusher vs. Firebase: Pros, cons, and head-to-head feature comparison
Pusher vs. Firebase: Pros, cons, and head-to-head feature comparison
This article compares Pusher and Firebase, two technologies developers can use to deliver realtime use cases like data broadcast, live chat, and data synchronization. We’ll cover the following points:
What are the conceptual differences between Firebase and Pusher?
What is Pusher?
Acquired by MessageBird in 2020, Pusher is a PaaS designed to add realtime functionality to web and mobile applications. Pusher provides realtime APIs, managed messaging infrastructure, and capabilities like:
Pub/sub messaging (Pusher Channels)
Push notifications (Pusher Beams)
Authentication, authorization, and encryption
Pusher advantages and disadvantages
Client SDKs for every major development platform and programming language, giving you the flexibility of integrating Pusher in your preferred language.
Due to its pub/sub APIs, Pusher supports several messaging patterns: one-to-one, one-to-many (fan-out), and many-to-many.
Rather weak messaging QoS - message delivery is not guaranteed; for example, if a message is published whilst a client is briefly disconnected (such as going through a tunnel or changing networks), then the message published over Pusher will never arrive to that client.
Compared to some alternative realtime solutions, Pusher offers a limited feature set. For example, it doesn’t support message persistence/history or message delta compression. Additionally, Pusher provides no integrations with services such as event streaming platforms (e.g., Kafka), queuing systems, and serverless platforms (e.g., AWS Lambda, Azure Functions, etc.).
Pusher requires you to choose a single datacenter for an app to reside in. All realtime traffic must therefore be routed through that single datacenter, regardless of a user’s location. This has negative implications on performance (increased latency), reliability, and availability (single point of congestion and failure).
What is Firebase?
Firebase is a Backend as a Service (BaaS) platform that helps you build, test, release, and monitor web and mobile apps for end-users. Firebase provides numerous features out of the box:
Realtime database. Two NoSQL databases to choose from - the Firebase Realtime Database, and Cloud Firestore. Both databases can synchronize updates to client devices in realtime (over WebSockets).
Notifications and in-app messaging. Firebase Cloud Messaging (FCM) allows you to send native push notifications and notification messages across platforms (iOS, Android, web). There’s also Firebase In-App Messaging, a cloud service designed to send contextual messages to app users.
Hosting. Firebase provides secure hosting on Google Cloud.
Authentication using passwords, phone numbers, popular federated identity providers like Google, Facebook and Twitter, and more.
Release and monitor capabilities like app distribution, app updates & feature flags (Remote Config), and performance monitoring.
Firebase advantages and disadvantages
Firebase helps app developers move quickly: you don’t have to worry about hosting, provisioning, and managing backend processes and components like databases, data storage, and authentication. Firebase’s collection of services makes the entire development cycle shorter and more straightforward.
Firebase has good technical documentation, and detailed SDK and API reference, making it easy to get started and use the platform. Going beyond docs, there are about 1.5 million apps built with Firebase, so there’s a pretty big community of experts who can help you with questions and issues.
Most of the Firebase services are free to start with, which is great if you are new to Firebase and simply want to test the platform, and assess if it’s the right choice for your project.
An instance of the Firebase Realtime Database has a limit of 200.000 concurrent connections and 1.000 write operations per second. To scale beyond these limits, you have to use sharding, which is a notoriously difficult process.
Vendor lock-in is an issue when you use Firebase. For example, if one day you conclude that the Realtime Database / Cloud Firestore is unsuitable for your use case, it’s hard to migrate to another (NoSQL) database. This is because of the way data is stored - a JSON tree in the case of the Realtime Database, respectively collections of documents (which are very similar to JSON data) in the case of Cloud Firestore.
There are plenty of horror stories of costs escalating out of control, especially if you are new to Firebase, and don’t yet have a good grasp on the pricing model and how to engineer your apps in a cost-effective manner. See How not to get a $30k bill from Firebase and We burnt $72K testing Firebase + Cloud Run and almost went bankrupt for details.
Comparing Pusher and Firebase
We’ll now look at the key differences and similarities between Pusher and Firebase, compare their capabilities, and cover their use cases.
How are Firebase and Pusher similar?
The first similarity of note is that Pusher and Firebase are technologies you can use to power realtime functionality in web apps (for details, see the Pusher and Firebase use cases section later in this article). Another similarity worth mentioning is that Firebase and Pusher are commercial (paid) solutions that come with fully-managed infrastructure.
Up to a point, Pusher and Firebase are similar in terms of the capabilities they provide. Both offer authentication, push notifications, the ability to send low-latency messages to connected clients, pub/sub messaging, and webhooks. The Firebase Realtime Database and Cloud Firestore use WebSockets to sync updates to connected client devices. Pusher Channels also use WebSockets to power realtime communication between client and server. See how Pusher and Firebase compare to raw WebSockets:
Firebase and Pusher have some shortcomings in common. For example, they don’t offer robust assurances around data integrity (message delivery, in particular, is not guaranteed).
How are Firebase and Pusher conceptually different?
Firebase is a BaaS, with the realtime database as the central concept (and realtime messaging as a secondary concept). Meanwhile, Pusher is a PaaS, with realtime messaging as the central concept (Pusher doesn’t even provide data persistence).
Pusher is a single-region solution - you choose a single datacenter for any given app, and all realtime traffic for that app will be routed through the datacenter you’ve selected. Things are somewhat different with Firebase. While it’s true that most Firebase services are bound to a single region, the Cloud Firestore database supports multi-regional configurations.
Pusher and Firebase have plenty of common features. However, there are some differences between them as well. Firebase provides a host of capabilities that Pusher doesn’t. Examples include: two database options to choose from, remote app config, hosting for apps and websites, performance monitoring, app distribution, integrations with Google Cloud services, and A/B testing.
Pusher has the upper hand on Firebase in some areas; for example, client and server SDKs for more programming languages, and better support for presence (in Firebase’s case, presence is only available for the Realtime Database).
Pusher vs. Firebase: key features and capabilities compared
The table below compares Pusher and Firebase capabilities required to build realtime apps (note that the table is scrollable).
Type of solution
Unclear to what extent Pusher is able to scale.
The Firebase Realtime Database has a limit of 200.000 concurrent WebSocket connections per instance.
Cloud Firestore can autoscale up to 1 million concurrent connections.
Pusher apps are located in a single datacenter rather than distributed across multiple datacenters. If that datacenter goes offline then all apps hosted there are affected.
Cloud Firestore is available in multi-regional configurations (but the Realtime Database is only a regional service).
This amounts to 4h 22m 58s downtime per year.
99.95% for Firebase Hosting and the Realtime Database.
99.99 % if you are using Cloud Firestore in a single-region configuration.
99.999% if you are using Cloud Firestore in a multi-region configuration.
Unclear what SLAs (if any) are provided for the rest of the Firebase services.
Guaranteed message ordering
Automatic reconnections with continuity
Provides automatic reconnections, but some messages may never get delivered upon reconnection.
Firebase SDKs support automatic reconnections.
However, there’s a chance that some messages might be lost once an automatic reconnection takes place.
Yes (Pusher Beams)
Yes (Firebase Cloud Messaging)
WebSockets (main transport)
WebSockets (used for realtime communication between the realtime databases and clients).
HTTP (used by most other Firebase services).
Pusher provides only two third-party integrations, with Datadog and Librato.
No integrations with, serverless platforms (e.g. Azure Functions, AWS Lambda), queueing platforms, or event streaming platforms (like Kafka or AWS Kinesis), which are often used as part of a wider architecture.
Firebase offers a limited number of integrations, primarily with Google Cloud services, such as Google Pub/Sub and Google Analytics.
Cloud Functions for Firebase. No support for other serverless platforms, such as AWS Lambda or Azure Functions.
Firebase provides two different NoSQL cloud database options: the Firebase Realtime Database, and the more recent Cloud Firestore.
Yes (Pusher Channels)
Yes (Firebase Cloud Messaging)
Partial (only for the Real time Database; this feature is not supported by Cloud Firestore).
Security features include authentication, authorization, and end-to-end encryption.
Pusher claims it’s compliant with GDPR and HIPAA.
Good security, including an authentication service (Firebase Authentication), a permissions system, encryption in transit & at rest, and compliance with standards such as SOC 2, EU GDPR, and ISO 27001.
Firebase offers client SDKs for iOS, Android, C++, and Unity.
Admin SDKs are available in Node.js, Java, Python, and Go.
Pusher prices its two products - Channels and Beams – separately and in tiers.
The nature of realtime messaging and streaming data over the public internet means WebSocket connections, required channels, and messages often fluctuate. Plus it’s never easy to estimate how much you’ll need upfront anyway.
With Pusher’s pricing model, if you exceed any one attribute of a tier you’ll likely be forced into another more expensive tier.
Firebase offers two plans: the free Spark plan, and the Blaze plan (pay as you go), which is recommended for building apps at scale.
The Blaze plan gives access to all Firebase features and products. Pricing is calculated monthly based on a multitude of factors, such as message ingestion & delivery, document read, write, delete operations, data storage, hosting, or function invocations.
There are plenty of horror stories of costs escalating out of control. See, for example, We burnt $72K testing Firebase + Cloud Run and almost went bankrupt.
Pusher and Firebase realtime use cases
You can use Pusher and Firebase for several types of realtime use cases:
In-app live chat.
Data broadcast (1-to-many fanout).
In-app and push notifications.
Multiplayer collaboration environments (e.g, whiteboards, multiplayer games).
Keeping databases/backends and frontend clients in realtime sync.
However, Firebase and Pusher play different roles in your tech stack and system architecture.
When to use Firebase?
Firebase is the better option if:
You’re looking for an all-in-one app development solution that includes diverse features like data storage, database with realtime syncing capabilities, app hosting, push notifications, and authentication.
You’re looking to build your system using other Google Cloud components. Firebase has integrations with Google services like Google Pub/Sub, Google Cloud Functions, Google Ads, Google Data Studio (Looker Studio), Google Cloud BigQuery, and Google Analytics.
You want to benefit from more features to release, manage, test, and monitor your apps.
When to use Pusher?
Pusher is a better fit if:
You are looking for a solution that’s optimized to handle realtime messaging (pub/sub over WebSockets) for your apps.
You need more control over realtime communication. Pusher can be connected to different backend components/databases, and allows you to flexibly tailor realtime communication to your use case. In contrast, Firebase is more restrictive; it offers only two database options, and comes with a pre-designed communication model (it forces you to store all events you want to push to connected clients in the Firebase database).
Pusher and Firebase alternatives for realtime apps
We hope this article is a good starting point for you to discover the advantages, disadvantages, similarities, and differences between Pusher and Firebase.
Pusher and Firebase are fully-managed solutions, removing the need for developers to deal with scaling and maintaining realtime infrastructure (or at least a part of it). Plus, they offer a set of useful features that simplify the development of realtime functionality for web and mobile apps (as opposed to building them yourself from scratch).
However, Pusher and Firebase have their drawbacks. Among them:
Both solutions offer weak data integrity assurances (message delivery is not guaranteed, especially when disconnections and unreliable network conditions are involved).
Pusher is a single-region solution, which may lead to issues such as increased latency for some users, and unreliability (single point of failure and congestion). In addition, Pusher lacks features such as message history/persistence and message delta compression, and provides no integrations with third-party solutions like serverless platforms or streaming and queuing services (which are often used as part of a wider realtime architecture).
The Firebase approach of tightly coupling the database with realtime messaging (syncing) doesn’t leave much room for flexibility. Only the updates to your database are published to connected clients. This forces you to permanently store even the transient events that need to be sent to your users, leading to an unnecessary increase in storage costs. Plus, you can’t use Firebase to push updates to client devices from a non-Firebase database. Read more about the caveats of using Firebase for realtime apps.
It is ultimately up to you to decide if Pusher/Firebase is the best choice for your realtime use case. However, if you’re interested in further weighing your options, here are some alternative solutions you can explore:
Discover Ably, the Pusher & Firebase alternative for realtime apps that are reliable at scale
Ably is a realtime experience infrastructure provider. Our APIs, SDKs, and managed integrations help developers build and deliver realtime experiences without having to worry about maintaining and scaling messy realtime infrastructure.
A globally-distributed network of datacenters and edge acceleration points of presence.
Client SDKs for every major programming language and development platform.
Pub/sub APIs with rich features, such as message delta compression, multi-protocol support (WebSockets, MQTT, Server-Sent Events), automatic reconnections with continuity, presence, and message history.
Guaranteed message ordering and delivery.
Global fault tolerance and a 99.999% uptime SLA.
< 65ms round-trip latency (P99).
Elastic scalability to handle up to millions of concurrent clients, and a constantly fluctuating number of connections and channels.
Find out more about Ably and how we can help with your realtime use case:
Explore customer stories and discover how organizations like HubSpot, Mentimeter, and Genius Sports benefit from trusting Aby with their realtime needs.
5 great Pusher alternatives to consider
Read about 5 Pusher alternatives for developing functionality like live chat, realtime location tracking, activity feeds, and realtime charts and graphs.
Firebase alternatives: The best competitors to consider in 2023
Discover the best alternatives to the Firebase Backend as a Service platform for realtime messaging and push notifications in 2023.
Pusher vs WebSockets: Pros, cons and key differences
Discover how Pusher and WebSockets compare, including their pros and cons, use cases, key differences, and the available alternatives.