Perf: Use Set for O(1) source origin lookup - #3372
Draft
TomA-R wants to merge 1 commit into
Draft
Conversation
Convert _sourceOrigins from array to Set to improve performance of message event validation. The indexOf() check was O(n), now has() is O(1). This is called on every postMessage event, so the improvement is significant in high-frequency messaging scenarios. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Improves performance of iframe event listener origin validation.
Issue
The _sourceOrigins array was checked using indexOf() on every postMessage event.
This is O(n) complexity, even though typically only 2 origins are checked.
Changes
Performance Impact
Testing
Note
Low Risk
Internal lookup change only; origin allowlist contents and validation logic stay the same.
Overview
Speeds up
postMessageorigin checks inIframeEventListenerby storing allowed origins in aSetand usinghas()instead ofindexOf()on an array.Allowed origins are still the parsed source origin and its
wwwvariant. Behavior and public API are unchanged.Reviewed by Cursor Bugbot for commit 6085fc9. Bugbot is set up for automated code reviews on this repo. Configure here.