firebase / firebase/firebase-js-sdk

FR: WebSockets left open on pagehide prevent use of back/forward cache on Chrome

Open
#8,845 2 comments 4 reactions 0 assignees View on GitHub
api: database type: feature request
Dominant language
TypeScript
Stars
5.1k
Forks
1k
Avg merge
2d 21h
Merged PRs (30d)
37

Description

### Operating System

macOS 15.3.1

### Environment (if applicable)

Chrome 134.0.6998.89

### Firebase SDK Version

v4.12.1

### Firebase SDK Product(s)

Database

### Project Tooling

Unknown/ N/A as this is being detected from end-user side

### Detailed Problem Description

Database SDK's WebSocket connection doesn't consistently close when a page becomes hidden (`visibilitychange` or `pagehide`), preventing Chrome from using Back/Forward Cache (bfcache). This forces full reloads, degrading the user experience.
To improve bfcache compatibility, the SDK could close the WebSocket connection within the `pagehide` event (or when `visibilitychange` state is `hidden`).
I'm not sure, but I think this could be addressed in `PersistentConnection` by modifying the `onVisible_` to call `close()` when visibility becomes hidden, and ensuring `shouldReconnect_` prevents immediate reconnection when the page is not visible.

### Steps and code to reproduce issue

1. Navigate to https://www.aajtak.in/ and wait for page to load
2. In Application tab, select Back/forward cache and then select "Test back/forward cache"

Image

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.