Skip to content

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

Open
@cjung89

Description

@cjung89

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions