-
Notifications
You must be signed in to change notification settings - Fork 12
[CI 3890] switch beforeunload with visibilitychange #346
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CI 3890] switch beforeunload with visibilitychange #346
Conversation
| if (this.options && this.options.trackingSendDelay === 0) { | ||
| this.sendEvents(); | ||
| } else { | ||
| // Defer sending of events to give beforeunload time to register (avoids race condition) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What happened/happens when beforeunload/visibilitychange registers?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beforeunload/visibilitychange changes the pageUnloading value and if the page is unloading than we wouldn't send events and wait for the next page to send those events from the
jjl014
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for working on this change!
The changes make sense to me, but I also left a comment around the visibilitychange listener. Let me know what you think. Would love to @esezen's thought as well since he mentioned the hidden change previously.
It seems like the following tests are failing as well. 🤔
| helpers.addEventListener('beforeunload', () => { | ||
| this.pageUnloading = true; | ||
| helpers.addEventListener('visibilitychange', () => { | ||
| if (document.visibilityState === 'hidden') { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
visibilityState=hidden based on what MDN says can mean the "document is either a background tab or part of a minimized window, or the OS screen lock is active".
Would it make sense to add in some additional logic here to call send() if the page becomes visible again? 🤔
if (document.visibilityState === 'visibile') {
this.send();
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry I somehow completely missed the notification for this one. I don't see any reason not to. Good call
jjl014
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The changes look good from what I can tell. I am slightly hesitant about releasing this to all beacon customers at the same time though.
Have we tested this out in the autocomplete-ui repo yet? I believe we should be able to install this version of the library by pointing it to this specific branch (can do this locally as well).
If things are working fine and there are no issues with events firing, then we should probably be okay to move forward. We'll want to keep an eye out on the events after deploying the changes.
Loom showing visibilityChange event firing as expected
https://www.loom.com/share/f4e8b2c2c1a047c09596c3bc819480f6