FR: WebSockets left open on pagehide prevent use of back/forward cache on Chrome
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
- Navigate to https://www.aajtak.in/ and wait for page to load
- In Application tab, select Back/forward cache and then select "Test back/forward cache"
+1 noticed a number of other sites that can benefit from bfcache if this is resolved. Thanks @cjung89.
@Jlacher FYI