DataDog / browser-sdk

Datadog Browser SDK
Apache License 2.0
305 stars 135 forks source link

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

Open sukhpreet96 opened 1 month ago

sukhpreet96 commented 1 month 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 month 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 1 month 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 1 month 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