[PM-8841] Passkeys script injection breaks loading of specific websites that are expecting an empty DOM on init #10424
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-8841
📔 Objective
An issue was identified with how we handle injection of the passkeys script that facilitates WebAuthn interactions through Bitwarden. (#9618)
After investigating the issue, it seems that problem likely occurs due to a page script within the reference email client that is expecting an empty DOM structure on initialization. That's a guess at the moment, but one thing that I did observe was that waiting until the page's
DOMContentLoaded
event triggered resolved the problem entirely.A caveat exists with this solution, however. We want to load the Fido2 page script as soon as possible to ensure that Bitwarden is used in place of the browser's native implementation for WebAuthn requests. Loading this after the
DOMContentLoaded
event creates an obvious delay that is undesirable.The only solution that I see to this secondary issue is to migrate Firefox and other browsers to Manifest v3. A POC of this is in place, and we will be working on testing the mv3 implementation in Firefox to help resolve this problem in a better manner.
⏰ Reminders before review
🦮 Reviewer guidelines
:+1:
) or similar for great changes:memo:
) or ℹ️ (:information_source:
) for notes or general info:question:
) for questions:thinking:
) or 💭 (:thought_balloon:
) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion:art:
) for suggestions / improvements:x:
) or:warning:
) for more significant problems or concerns needing attention:seedling:
) or ♻️ (:recycle:
) for future improvements or indications of technical debt:pick:
) for minor or nitpick changes