Realtime

Realtime Reports


Realtime reports give insights into how your application uses Supabase Realtime, including connections, broadcast and change events, execution times, and lag.

These reports help you:

  • Monitor connection counts and message volumes against your plan's quotas
  • Identify performance bottlenecks in RLS policies or database replication
  • Troubleshoot errors and connection issues
  • Plan capacity upgrades based on usage trends

Realtime reports overview

ReportAvailable PlansDescriptionKey Insights
Connected ClientsAllNumber of connected clientsTotal number of connected clients
Broadcast EventsAllNumber of broadcast eventsBroadcast events sent by clients
Presence EventsAllNumber of presence eventsPresence events sent by clients
Postgres Changes EventsAllNumber of Postgres changes eventsPostgres changes events received by clients
Rate of Channel JoinsAllRate of channel joinsRate of change of users joining channels
Message Payload SizeAllMedian size of message payloads sentUnderstand the payload sizes sent and received by clients
Broadcast from Database Replication LagPro, Team, EnterpriseMedian time between database commit and broadcast when using broadcast from databaseTime taken from database change received and when it was broadcast to clients
(Read) Private Channel Subscription RLS Execution TimePro, Team, EnterpriseExecution median time of RLS (Row Level Security) to subscribe to a private channelRLS policy impact on time to validate if user can join private channel
(Write) Private Channel Subscription RLS Execution TimePro, Team, EnterpriseExecution median time of RLS (Row Level Security) to publish to a private channelRLS policy impact on time to validate if user can write to private channel
Total RequestsAllTotal requestsTotal requests made to the Realtime API
Response ErrorsAllResponse errorsResponse errors from the Realtime API
Response SpeedAllResponse speedAverage response time from the Realtime API

Connected Clients

The Connected Clients report helps you monitor the total number of concurrent Realtime client connections to your project over time. This metric is essential for understanding your application's connection usage patterns and identifying when you're approaching your plan's connection limits.

The report displays the total number of connected Realtime clients, showing how connection counts fluctuate throughout the selected time period. Each client connection represents an active WebSocket connection to your Realtime service, which can subscribe to multiple channels for receiving real-time updates.

Actions you can take

ActionDescriptionMore information
Configure connection limitAdjust the "Max concurrent connections" setting to increase or decrease the connection limit for your projectRealtime Settings Guide
Upgrade planIncrease available client connections. Connection limits vary by plan: Free (200), Pro (500), Pro no spend cap (10,000), Team (10,000), Enterprise (10,000+)Pricing and Plans
Review quotasUnderstand connection limits and other Realtime quotas for your planRealtime Quotas Reference
Understand connection quotaLearn how the concurrent connections quota works and how to configure it for your planConcurrent Peak Connections Quota Troubleshooting
Fix silent disconnectionsFix connection issues in background applications using heartbeat callbacks and Web WorkersHandling Silent Disconnections in Background Apps
Check logsInvestigate connection errors and quota errors in your project dashboardRealtime Logs Dashboard
Contact supportRequest custom quota increases for Enterprise plans or discuss connection requirementsSupport Portal

Broadcast Events

The Broadcast Events report helps you monitor the volume of broadcast messages sent through your Realtime channels over time. This metric is essential for understanding your application's real-time messaging patterns and identifying when you're approaching your plan's message throughput limits.

The report displays the total number of broadcast events sent by clients, showing message volume throughout the selected time period. Broadcast events are low-latency messages sent between users using Realtime's pub/sub pattern, which can be sent from client libraries, REST APIs, or directly from your database. Each event represents a message broadcast to subscribers of a specific channel topic.

Actions you can take

ActionDescriptionMore information
Configure event limitsAdjust "Max events per second" and "Max payload size in KB" settings to optimize broadcast throughput and message size limitsRealtime Settings Guide
Review quotasUnderstand message per second limits (Free: 100, Pro: 500, Pro no spend cap/Team/Enterprise: 2,500) and broadcast payload size limits (Free: 256 KB, Pro+: 3,000 KB)Realtime Quotas Reference
Check logsInvestigate broadcast errors or quota limit issues in your project dashboardRealtime Logs Dashboard
Debug with loggerEnable logging to track messages sent and received, and diagnose broadcast delivery issuesDebugging Realtime with Logger
Learn broadcast basicsUnderstand how to implement and optimize broadcast messaging in your applicationBroadcast Guide
Contact supportRequest custom quota increases for Enterprise plans or discuss messaging requirementsSupport Portal

Presence Events

The Presence Events report helps you monitor the volume of presence state updates sent through your Realtime channels over time. This metric is essential for understanding how your application tracks and synchronizes shared state between users, such as online status, user activity, or custom state information.

The report displays the total number of presence events sent by clients, showing state synchronization activity throughout the selected time period. Presence events occur when clients track, update, or untrack their presence state in a channel, triggering sync, join, or leave events. Unlike broadcast messages, presence state is persisted in the channel so new joiners immediately receive the current state without waiting for other users to send updates.

Actions you can take

ActionDescriptionMore information
Configure presence limitsAdjust the "Max presence events per second" setting to optimize presence state update throughputRealtime Settings Guide
Review quotasUnderstand presence messages per second limits (Free: 20, Pro: 50, Pro no spend cap/Team/Enterprise: 1,000) and presence keys per object limits (10 for most plans)Realtime Quotas Reference
Check logsInvestigate presence errors or quota limit issues in your project dashboardRealtime Logs Dashboard
Debug with loggerEnable logging to track presence events and diagnose state synchronization issuesDebugging Realtime with Logger
Learn presence basicsUnderstand how to implement and optimize presence state tracking in your applicationPresence Guide
Contact supportRequest custom quota increases for Enterprise plans or discuss presence requirementsSupport Portal

Postgres Changes Events

The Postgres Changes Events report helps you monitor the volume of database change events (INSERT, UPDATE, DELETE) sent to your Realtime clients over time. This metric is essential for understanding how your application processes database changes and identifying potential performance bottlenecks or scaling issues.

The report displays the total number of Postgres change events received by clients, showing database change activity throughout the selected time period. Postgres Changes use logical replication to stream database changes from the Write-Ahead Log (WAL) to subscribed clients. Each event represents a database change that has been broadcast to clients subscribed to the relevant schema and table. Note that Postgres Changes process changes on a single thread to maintain order, which can create bottlenecks at scale compared to Broadcast.

Actions you can take

ActionDescriptionMore information
Review quotasUnderstand Postgres change payload size limits (1,024 KB for all plans) and message throughput limitsRealtime Quotas Reference
Check logsInvestigate Postgres Changes errors or performance issues in your project dashboardRealtime Logs Dashboard
Learn Postgres ChangesUnderstand limitations and best practices for using Postgres ChangesPostgres Changes Guide
Migrate to BroadcastFor better scalability, consider using Broadcast with database triggers instead of Postgres ChangesBroadcast Guide
Create database triggersUnderstand how to create triggers that can send Broadcast messages on database eventsDatabase Triggers Guide
Monitor replicationMonitor logical replication health and lag since Postgres Changes reads from the WALReplication Monitoring Guide
Contact supportDiscuss scaling strategies or custom solutions for high-volume database change subscriptionsSupport Portal

Rate of Channel Joins

The Rate of Channel Joins report helps you monitor how quickly clients are joining Realtime channels over time. This metric is essential for understanding your application's channel subscription patterns and identifying when you're approaching your plan's channel join rate limits.

The report displays the rate of channel joins per second, showing how frequently clients subscribe to channels throughout the selected time period. A channel join occurs whenever a client subscribes to a channel topic to receive real-time updates. Each client connection can join multiple channels (up to 100 per connection for most plans), and the join rate measures how many of these subscriptions happen per second across your entire project.

Actions you can take

ActionDescriptionMore information
Review quotasUnderstand channel joins per second limits (Free: 100, Pro: 500, Pro no spend cap/Team/Enterprise: 2,500) and channels per connection limits (100 for most plans)Realtime Quotas Reference
Check logsInvestigate too_many_joins errors or channel join failures in your project dashboardRealtime Logs Dashboard
Fix channel errorsLearn how to properly manage channel lifecycle and prevent channel leaks in your applicationTooManyChannels Error Troubleshooting
Learn channel basicsUnderstand how Realtime channels work and best practices for channel managementRealtime Channels Concepts
Contact supportRequest custom quota increases for Enterprise plans or discuss high-volume channel join requirementsSupport Portal

Message Payload Size

The Message Payload Size report helps you monitor the median size of message payloads sent through your Realtime channels over time. This metric is essential for understanding how message size impacts performance, latency, and bandwidth usage in your real-time application.

The report displays the median payload size in bytes, showing how message sizes fluctuate throughout the selected time period. Payload size directly affects message throughput and latency—larger payloads require more bandwidth and processing time, which can increase latency and reduce the number of messages your system can handle per second. Monitoring this metric helps you optimize your message structure and identify opportunities to reduce payload sizes for better performance.

Actions you can take

ActionDescriptionMore information
Configure payload limitsAdjust the "Max payload size in KB" setting to increase or decrease the maximum message size allowedRealtime Settings Guide
Review quotasUnderstand payload size limits: Broadcast (Free: 256 KB, Pro+: 3,000 KB) and Postgres Changes (1,024 KB for all plans)Realtime Quotas Reference
Check logsInvestigate payload-related errors or performance issues in your project dashboardRealtime Logs Dashboard
Review benchmarksUnderstand how payload size affects latency and throughput (larger payloads increase latency)Payload Size Performance Benchmarks
Debug query performanceUse explain() to analyze queries and identify performance bottlenecks that may be causing large payloadsQuery Performance Debugging Guide
Learn broadcast basicsUnderstand best practices for structuring broadcast messages and optimizing payload sizesBroadcast Guide
Contact supportDiscuss payload optimization strategies or custom solutions for high-volume messagingSupport Portal

Broadcast From Database Replication Lag

The Broadcast from Database Replication Lag report helps you monitor the median time between when a message is committed to your database and when it's broadcast to Realtime clients. This metric is essential for understanding the latency introduced by the database replication process when using broadcast from database.

The report displays the median replication lag in milliseconds, showing the delay between database commit and broadcast throughout the selected time period. When you use broadcast from database (by inserting messages into realtime.messages), Realtime reads changes from the Write-Ahead Log (WAL) using logical replication. The lag represents the time it takes for these changes to be processed and broadcast to subscribed clients. Higher lag values indicate delays in the replication pipeline, which can impact the real-time responsiveness of your application.

Actions you can take

ActionDescriptionMore information
Check logsInvestigate replication errors or performance issues in your project dashboardRealtime Logs Dashboard
Monitor databaseReview database resource utilization, connection counts, and query performance that may affect replicationDatabase Observability Dashboard
Review replication metricsUse pg_stat_subscription, pg_replication_slots, and other Postgres views to diagnose replication issuesManual Replication Monitoring Guide
Debug database issuesUse CLI inspection tools to identify bloat, lock contention, and long-running queries affecting replicationDatabase Inspection Tools Guide
Optimize performanceOptimize query performance and connection management to reduce database loadPerformance Tuning Guide
Configure timeoutsConfigure statement timeouts to prevent long-running transactions from blocking replicationDatabase Timeouts Guide
Learn broadcast from DBUnderstand how broadcast from database works and best practices for implementationBroadcast from Database Guide
Contact supportDiscuss replication lag issues or request assistance with database performance optimizationSupport Portal

(Read) Private Channel Subscription RLS Execution Time

The (Read) Private Channel Subscription RLS Execution Time report helps you monitor the median time it takes to execute Row Level Security (RLS) policies when users subscribe to private channels. This metric is essential for understanding how RLS policy complexity impacts channel join latency and overall connection performance.

The report displays the median RLS execution time in milliseconds, showing how long it takes to validate user permissions when subscribing to private channels throughout the selected time period. When a user joins a private channel, Realtime checks RLS policies on the realtime.messages table to determine if the user has read access. This authorization check happens once per channel subscription and the result is cached for the duration of the connection. However, complex RLS policies with joins, function calls, or missing indexes can significantly increase this initial connection time.

Actions you can take

ActionDescriptionMore information
Configure connection poolAdjust the "Database connection pool size" setting to increase the number of connections available for RLS authorization checks, which can improve performance for high-volume channel subscriptionsRealtime Settings Guide
Optimize RLS policiesLearn how to optimize RLS policies with indexes, function wrapping, and query optimization techniquesRLS Performance Best Practices
Check logsInvestigate RLS authorization errors or timeout issues in your project dashboardRealtime Logs Dashboard
Learn authorization basicsUnderstand how RLS policies work with private channels and best practices for implementationRealtime Authorization Guide
Create indexesAdd indexes on columns frequently used in RLS policy conditions to speed up authorization checksDatabase Indexes Guide
Use index advisorAutomatically detect missing indexes that could improve RLS policy performanceIndex Advisor Extension Guide
Optimize queriesLearn techniques for optimizing queries including partial indexes and composite indexes for RLS conditionsQuery Optimization Guide
Monitor databaseReview database query performance and identify slow queries that may be affecting RLS executionDatabase Observability Dashboard
Contact supportDiscuss RLS optimization strategies or get assistance with complex authorization requirementsSupport Portal

(Write) Private Channel Subscription RLS Execution Time

The (Write)Private Channel Subscription RLS Execution Time report helps you monitor the median time it takes to execute Row Level Security (RLS) policies when users publish messages to private channels. This metric is essential for understanding how RLS policy complexity impacts message publishing latency and overall broadcast performance.

The report displays the median RLS execution time in milliseconds, showing how long it takes to validate user permissions when publishing to private channels throughout the selected time period. When a user sends a broadcast message to a private channel, Realtime checks RLS policies on the realtime.messages table to determine if the user has write (INSERT) access. This authorization check happens for the first message sent and then it's cached. Complex RLS policies with joins, function calls, or missing indexes can significantly increase first message publishing latency.

Actions you can take

ActionDescriptionMore information
Configure connection poolAdjust the "Database connection pool size" setting to increase the number of connections available for RLS authorization checks, which can improve performance for high-frequency message publishingRealtime Settings Guide
Optimize RLS policiesLearn how to optimize RLS policies with indexes, function wrapping, and query optimization techniquesRLS Performance Best Practices
Check logsInvestigate RLS authorization errors or timeout issues when publishing messages in your project dashboardRealtime Logs Dashboard
Learn authorization basicsUnderstand how RLS policies work with private channels for write operations and best practices for implementationRealtime Authorization Guide
Create indexesAdd indexes on columns used in INSERT policies to speed up write authorization checksDatabase Indexes Guide
Use index advisorAutomatically detect missing indexes that could improve write RLS policy performanceIndex Advisor Extension Guide
Optimize queriesLearn techniques for optimizing INSERT policy queries including partial indexes for specific conditionsQuery Optimization Guide
Monitor databaseReview database query performance and identify slow queries that may be affecting write RLS executionDatabase Observability Dashboard
Contact supportDiscuss RLS optimization strategies or get assistance with complex authorization requirements for high-frequency messagingSupport Portal

Total Requests

The Total Requests report helps you monitor the overall volume of HTTP requests for Realtime over time. This metric is essential for understanding your application's usage patterns and identifying traffic trends or potential issues with API request handling.

The report displays the total number of HTTP requests made to the Realtime service which include the WebSocket upgrade requests and the REST API requests.

Actions you can take

ActionDescriptionMore information
Check logsInvestigate request errors or issues in your project dashboardRealtime Logs Dashboard
Review error ratesCompare total requests with error rates to identify failure patternsResponse Errors Report
Review response timesMonitor API response times to identify performance bottlenecksResponse Speed Report
Learn REST API broadcastUnderstand how to send broadcast messages using HTTP requestsBroadcast via REST API Guide
Monitor databaseReview database resource utilization that may affect API request processingDatabase Observability Dashboard
Contact supportDiscuss high-volume request patterns or get assistance with API optimizationSupport Portal

Response Errors

The Response Errors report helps you monitor the number of failed HTTP requests to the Realtime service over time. This metric is essential for identifying issues with API requests, WebSocket upgrade failures, authentication problems, and other error conditions that may impact your application's real-time functionality.

The report displays the total number of response errors from the Realtime API, showing error frequency throughout the selected time period. These errors include HTTP error status codes (4xx client errors and 5xx server errors) from REST API requests, failed WebSocket upgrade requests, authorization failures, and other error responses. Monitoring error rates alongside total requests helps you identify patterns, correlate errors with specific events, and troubleshoot issues affecting your Realtime service availability.

Actions you can take

ActionDescriptionMore information
Configure limitsAdjust "Max concurrent connections" or "Max events per second" settings if errors are related to quota limits being reachedRealtime Settings Guide
Check logsInvestigate specific error messages, error codes, and request details in your project dashboardRealtime Logs Dashboard
Review request volumeCompare error rates with total request volume to calculate error percentages and identify trendsTotal Requests Report
Understand error codesUnderstand specific error codes and their resolutionsRealtime Error Codes Reference
Learn HTTP status codesLearn about HTTP status codes including 4XX client errors and 5XX server errorsHTTP Status Codes Troubleshooting
Fix timeout errorsResolve WebSocket timeout errors caused by Node.js version incompatibilityTIMED_OUT Connection Errors Troubleshooting
Understand heartbeatsMonitor heartbeat status to detect connection issues and handle timeoutsRealtime Heartbeats Guide
Review quotasCheck if errors are related to quota limits (e.g., too_many_connections, too_many_joins)Realtime Quotas Reference
Learn authorizationTroubleshoot authorization-related errors for private channelsRealtime Authorization Guide
Contact supportGet assistance with persistent errors or investigate service-level issuesSupport Portal

Response Speed

The Response Speed report helps you monitor the average response time for HTTP requests to the Realtime service over time. This metric is essential for understanding API performance, identifying latency issues, and ensuring your real-time features meet performance expectations.

The report displays the average response time in milliseconds, showing how quickly the Realtime service responds to HTTP requests throughout the selected time period. This includes response times for REST API requests such as broadcast messages, WebSocket upgrade requests, and other HTTP-based interactions. Higher response times can indicate performance bottlenecks, database load issues, or network problems that may impact the real-time responsiveness of your application.

Actions you can take

ActionDescriptionMore information
Configure connection poolAdjust the "Database connection pool size" setting to optimize database connection usage, which can improve response times for authorization checksRealtime Settings Guide
Check logsInvestigate slow requests and identify specific endpoints or operations causing delaysRealtime Logs Dashboard
Review request volumeCorrelate response times with request volume to identify performance degradation under loadTotal Requests Report
Monitor databaseReview database resource utilization, connection counts, and query performance that may affect response timesDatabase Observability Dashboard
Review benchmarksUnderstand expected latency and throughput for different Realtime operationsRealtime Performance Benchmarks
Understand heartbeatsMonitor heartbeat status and customize intervals to balance detection speed with network overheadRealtime Heartbeats Guide
Optimize RLS policiesIf using private channels, optimize RLS policies that may be slowing down authorization checksRLS Performance Best Practices
Contact supportDiscuss performance optimization strategies or investigate persistent latency issuesSupport Portal