Bug report
Realtime presence events (sync, join, leave) stopped firing on 05/03/2026 (or maybe 6th). This occurred without any changes to our application code.
Interestingly, the issue does not persist locally (using Supabase CLI/Docker), but it is consistent across our production and staging environments.
Describe the bug
- The browser Network tab shows incoming WebSocket messages.
- The Supabase Dashboard logs show presence events being tracked.
- The high-level SDK listeners (e.g., .on('presence', { event: 'sync' }, ... )) simply never trigger.
- We can "force" it to work by listening to the internal/undocumented presence_state and presence_diff events directly, though this causes TypeScript errors.
To Reproduce
Steps to reproduce the behavior, please provide code snippets or a repository:
- Implement realtime as described in the docs
- Try to run it with a deployed supabase instance
Expected behavior
Realtime presence should work according to the docs.
Versions:
We initially observed the issue with version "@supabase/supabase-js": "2.48.4" but we also had the issue with the latest version 2.98.0
Additional context
We are currently forced to use this implementation to keep the app running (ignoring any type errors), which suggests the underlying data is fine, but the SDK's event-matching logic is failing:
const channelRoom = supabase.channel(channel, {
config: { presence: { key: "", enabled: true } },
})
channelRoom
.on("presence_state", {}, (event) => {
// Initial state
const items = Object.values(event)
const userIds = items.map((item) => item.metas[0]?.user)
userIds.forEach((userId) => dispatch(addUser({ channel, user: userId })))
})
.on("presence_diff", {}, (event) => {
const joinedUserIds = Object.values(event.joins).map((item) => item.metas[0]?.user)
joinedUserIds.forEach((id) => dispatch(addUser({ channel, user: id })))
const leftUserIds = Object.values(event.leaves).map((item) => item.metas[0]?.user)
leftUserIds.forEach((id) => dispatch(removeUser({ channel, user: id })))
})
.subscribe()
setRoom(channelRoom)
}
subscribe()
Bug report
Realtime presence events (sync, join, leave) stopped firing on 05/03/2026 (or maybe 6th). This occurred without any changes to our application code.
Interestingly, the issue does not persist locally (using Supabase CLI/Docker), but it is consistent across our production and staging environments.
Describe the bug
To Reproduce
Steps to reproduce the behavior, please provide code snippets or a repository:
Expected behavior
Realtime presence should work according to the docs.
Versions:
We initially observed the issue with version
"@supabase/supabase-js": "2.48.4"but we also had the issue with the latest version2.98.0Additional context
We are currently forced to use this implementation to keep the app running (ignoring any type errors), which suggests the underlying data is fine, but the SDK's event-matching logic is failing: