DataDog / browser-sdk

Datadog Browser SDK
Apache License 2.0
294 stars 131 forks source link

🐛 RUM Events cease to publish when beforeUnload event is fired #3032

Open sukhpreet96 opened 1 week ago

sukhpreet96 commented 1 week ago

Describe the bug When beforeUnload event is fired, the RUM logs cease to publish. beforeUnload displays a browser modal which prompts the user to leave or stay on the page. In browser-sdk code we are already stopping the RUM events. This should not actually stop the RUM events or logs on before Unload but actually it should be on unload.

To Reproduce Steps to reproduce the behavior:

  1. fire beforeUnload event
  2. choose to stay on tab
  3. RUM events would stop publishing Expected behavior The RUM events should keep publishing during beforeUnload and they should actually stop on unload event
sukhpreet96 commented 1 week ago

Pull request to fix this issue https://github.com/DataDog/browser-sdk/pull/3033 @BenoitZugmeyer @amortemousque Requesting a kind review please 🙏

cy-moi commented 6 days ago

Hi @sukhpreet96 ,

Thank you for reaching out.

The collection stopping at beforeUnload indeed has some known limitations and we have received your feature request. Yet, unload is not reliable and is deprecated (cf MDN) in favor of pagehide. Hence, we have been looking at different alternatives to beforeUnload or unload to better detect when the page is gone.

Internally, we are having active discussion on this topic and we will keep you updated.

sukhpreet96 commented 6 days ago

@cy-moi Thanks for your consideration! You might be interested in sendBeacon https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon, Refer "Avoid unload and beforeunload" section. This looks promising for usecases like this one