Skip to content
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

Fix buggy implementations of the Performance API #5299

Merged
merged 1 commit into from
Jul 4, 2022
Merged

Conversation

mxdvl
Copy link
Contributor

@mxdvl mxdvl commented Jul 4, 2022

What does this change?

Fallback to returning bogus (no-op) functions on initPerf when performance.getEntriesByName is missing.

Many errors have started showing in Sentry since the island performance changes have been introduced.

Looking for the existence of measure in window.performance should be a better indicator of support than simply mark.

Why?

The behaviour has been refactored in:

Screenshots

image

@mxdvl mxdvl requested a review from a team as a code owner July 4, 2022 13:49
@mxdvl mxdvl requested a review from a team July 4, 2022 13:49
@mxdvl mxdvl changed the title Fix when performance.measure is undefined Fix when performance.measure is undefined Jul 4, 2022
@github-actions
Copy link

github-actions bot commented Jul 4, 2022

Size Change: +1.06 kB (0%)

Total Size: 1.78 MB

Filename Size Change
dotcom-rendering/dist/frontend.server.js 447 kB +186 B (0%)
ℹ️ View Unchanged
Filename Size Change
dotcom-rendering/dist/1662.legacy.********************.js 5.78 kB 0 B
dotcom-rendering/dist/1815.legacy.********************.js 30.8 kB 0 B
dotcom-rendering/dist/2344.legacy.********************.js 2.77 kB 0 B
dotcom-rendering/dist/259.legacy.********************.js 3.24 kB 0 B
dotcom-rendering/dist/286.********************.js 23.2 kB 0 B
dotcom-rendering/dist/286.legacy.********************.js 23.9 kB 0 B
dotcom-rendering/dist/2947.********************.js 2.74 kB 0 B
dotcom-rendering/dist/2947.legacy.********************.js 2.82 kB 0 B
dotcom-rendering/dist/3307.********************.js 3.11 kB 0 B
dotcom-rendering/dist/3584.********************.js 1.8 kB 0 B
dotcom-rendering/dist/3584.legacy.********************.js 1.8 kB 0 B
dotcom-rendering/dist/4019.********************.js 3.44 kB 0 B
dotcom-rendering/dist/4019.legacy.********************.js 3.48 kB 0 B
dotcom-rendering/dist/4135.legacy.********************.js 6.76 kB 0 B
dotcom-rendering/dist/5058.********************.js 2.72 kB 0 B
dotcom-rendering/dist/5248.********************.js 6.62 kB 0 B
dotcom-rendering/dist/5436.legacy.********************.js 2.68 kB 0 B
dotcom-rendering/dist/5553.********************.js 2.85 kB 0 B
dotcom-rendering/dist/5553.legacy.********************.js 2.9 kB 0 B
dotcom-rendering/dist/6101.********************.js 32.8 kB 0 B
dotcom-rendering/dist/6131.********************.js 4.29 kB 0 B
dotcom-rendering/dist/6131.legacy.********************.js 4.3 kB 0 B
dotcom-rendering/dist/6400.********************.js 21.5 kB 0 B
dotcom-rendering/dist/6400.legacy.********************.js 21.5 kB 0 B
dotcom-rendering/dist/7148.********************.js 6.8 kB 0 B
dotcom-rendering/dist/7148.legacy.********************.js 7.31 kB 0 B
dotcom-rendering/dist/7576.********************.js 3.97 kB 0 B
dotcom-rendering/dist/7576.legacy.********************.js 5.39 kB 0 B
dotcom-rendering/dist/7800.********************.js 11.3 kB 0 B
dotcom-rendering/dist/7829.********************.js 2.8 kB 0 B
dotcom-rendering/dist/7829.legacy.********************.js 2.91 kB 0 B
dotcom-rendering/dist/8129.legacy.********************.js 11.8 kB 0 B
dotcom-rendering/dist/8344.legacy.********************.js 6.38 kB 0 B
dotcom-rendering/dist/8612.********************.js 3.72 kB 0 B
dotcom-rendering/dist/8612.legacy.********************.js 4.21 kB 0 B
dotcom-rendering/dist/9130.********************.js 5.92 kB 0 B
dotcom-rendering/dist/9380.legacy.********************.js 2.83 kB 0 B
dotcom-rendering/dist/AlreadyVisited-importable.********************.js 4.52 kB 0 B
dotcom-rendering/dist/AlreadyVisited-importable.legacy.********************.js 4.52 kB 0 B
dotcom-rendering/dist/atomIframe.********************.js 853 B 0 B
dotcom-rendering/dist/atomIframe.legacy.********************.js 895 B +95 B (+12%) ⚠️
dotcom-rendering/dist/AudioAtomWrapper-importable.********************.js 459 B 0 B
dotcom-rendering/dist/AudioAtomWrapper-importable.legacy.********************.js 517 B 0 B
dotcom-rendering/dist/bootCmp.********************.js 8.88 kB 0 B
dotcom-rendering/dist/bootCmp.legacy.********************.js 12.5 kB 0 B
dotcom-rendering/dist/Branding-importable.********************.js 3.99 kB 0 B
dotcom-rendering/dist/Branding-importable.legacy.********************.js 4.01 kB 0 B
dotcom-rendering/dist/braze-web-sdk-core.********************.js 36.1 kB 0 B
dotcom-rendering/dist/braze-web-sdk-core.legacy.********************.js 36.1 kB 0 B
dotcom-rendering/dist/BrazeMessaging-importable.********************.js 8.96 kB 0 B
dotcom-rendering/dist/BrazeMessaging-importable.legacy.********************.js 9.65 kB 0 B
dotcom-rendering/dist/CalloutBlockComponent-importable.********************.js 8.11 kB 0 B
dotcom-rendering/dist/CalloutBlockComponent-importable.legacy.********************.js 8.46 kB 0 B
dotcom-rendering/dist/ChartAtomWrapper-importable.********************.js 261 B 0 B
dotcom-rendering/dist/ChartAtomWrapper-importable.legacy.********************.js 271 B 0 B
dotcom-rendering/dist/CommentCount-importable.********************.js 7.27 kB 0 B
dotcom-rendering/dist/CommentCount-importable.legacy.********************.js 7.42 kB 0 B
dotcom-rendering/dist/CommercialMetrics-importable.********************.js 7.77 kB 0 B
dotcom-rendering/dist/CommercialMetrics-importable.legacy.********************.js 3.11 kB 0 B
dotcom-rendering/dist/CoreVitals-importable.********************.js 6.64 kB 0 B
dotcom-rendering/dist/CoreVitals-importable.legacy.********************.js 1.38 kB 0 B
dotcom-rendering/dist/DiscussionContainer-importable.********************.js 7.32 kB 0 B
dotcom-rendering/dist/DiscussionContainer-importable.legacy.********************.js 7.68 kB 0 B
dotcom-rendering/dist/DiscussionMeta-importable.********************.js 7.7 kB 0 B
dotcom-rendering/dist/DiscussionMeta-importable.legacy.********************.js 7.89 kB 0 B
dotcom-rendering/dist/DocumentBlockComponent-importable.********************.js 2.99 kB 0 B
dotcom-rendering/dist/DocumentBlockComponent-importable.legacy.********************.js 3.1 kB 0 B
dotcom-rendering/dist/dynamicImport.********************.js 2.01 kB +77 B (+4%)
dotcom-rendering/dist/dynamicImport.legacy.********************.js 2.1 kB +89 B (+4%)
dotcom-rendering/dist/EditionDropdown-importable.********************.js 4.09 kB 0 B
dotcom-rendering/dist/EditionDropdown-importable.legacy.********************.js 4.13 kB 0 B
dotcom-rendering/dist/EmbedBlockComponent-importable.********************.js 3.34 kB 0 B
dotcom-rendering/dist/EmbedBlockComponent-importable.legacy.********************.js 3.44 kB 0 B
dotcom-rendering/dist/embedIframe.********************.js 857 B 0 B
dotcom-rendering/dist/embedIframe.legacy.********************.js 896 B +96 B (+12%) ⚠️
dotcom-rendering/dist/EnhancePinnedPost-importable.********************.js 6.21 kB 0 B
dotcom-rendering/dist/EnhancePinnedPost-importable.legacy.********************.js 6.8 kB 0 B
dotcom-rendering/dist/FetchCommentCounts-importable.********************.js 9.52 kB 0 B
dotcom-rendering/dist/FetchCommentCounts-importable.legacy.********************.js 9.71 kB 0 B
dotcom-rendering/dist/FilterButton-importable.********************.js 6.45 kB 0 B
dotcom-rendering/dist/FilterButton-importable.legacy.********************.js 6.61 kB 0 B
dotcom-rendering/dist/FilterKeyEventsToggle-importable.********************.js 3.35 kB 0 B
dotcom-rendering/dist/FilterKeyEventsToggle-importable.legacy.********************.js 3.41 kB 0 B
dotcom-rendering/dist/FocusStyles-importable.********************.js 4.71 kB 0 B
dotcom-rendering/dist/FocusStyles-importable.legacy.********************.js 4.77 kB 0 B
dotcom-rendering/dist/ga.********************.js 2.92 kB 0 B
dotcom-rendering/dist/ga.legacy.********************.js 2.98 kB 0 B
dotcom-rendering/dist/GetCricketScoreboard-importable.********************.js 7.79 kB 0 B
dotcom-rendering/dist/GetCricketScoreboard-importable.legacy.********************.js 8.02 kB 0 B
dotcom-rendering/dist/GetMatchNav-importable.********************.js 12.9 kB 0 B
dotcom-rendering/dist/GetMatchNav-importable.legacy.********************.js 13.3 kB 0 B
dotcom-rendering/dist/GetMatchStats-importable.********************.js 10.1 kB 0 B
dotcom-rendering/dist/GetMatchStats-importable.legacy.********************.js 11 kB 0 B
dotcom-rendering/dist/GetMatchTabs-importable.********************.js 6.87 kB 0 B
dotcom-rendering/dist/GetMatchTabs-importable.legacy.********************.js 7.09 kB 0 B
dotcom-rendering/dist/guardian-braze-components-banner.********************.js 11.3 kB 0 B
dotcom-rendering/dist/guardian-braze-components-banner.js 10.3 kB 0 B
dotcom-rendering/dist/guardian-braze-components-banner.legacy.********************.js 11.4 kB 0 B
dotcom-rendering/dist/guardian-braze-components-end-of-article.********************.js 9.28 kB 0 B
dotcom-rendering/dist/guardian-braze-components-end-of-article.js 9.75 kB 0 B
dotcom-rendering/dist/guardian-braze-components-end-of-article.legacy.********************.js 9.37 kB 0 B
dotcom-rendering/dist/GuideAtomWrapper-importable.********************.js 263 B 0 B
dotcom-rendering/dist/GuideAtomWrapper-importable.legacy.********************.js 273 B 0 B
dotcom-rendering/dist/initDiscussion.********************.js 10.7 kB 0 B
dotcom-rendering/dist/initDiscussion.legacy.********************.js 11 kB +71 B (+1%)
dotcom-rendering/dist/InstagramBlockComponent-importable.********************.js 3 kB 0 B
dotcom-rendering/dist/InstagramBlockComponent-importable.legacy.********************.js 3.09 kB 0 B
dotcom-rendering/dist/InteractiveBlockComponent-importable.********************.js 8.04 kB 0 B
dotcom-rendering/dist/InteractiveBlockComponent-importable.legacy.********************.js 8.27 kB 0 B
dotcom-rendering/dist/islands.********************.js 10.9 kB 0 B
dotcom-rendering/dist/islands.legacy.********************.js 11.7 kB 0 B
dotcom-rendering/dist/KeyEventsCarousel-importable.********************.js 6.72 kB 0 B
dotcom-rendering/dist/KeyEventsCarousel-importable.legacy.********************.js 6.93 kB 0 B
dotcom-rendering/dist/KnowledgeQuizAtomWrapper-importable.********************.js 268 B 0 B
dotcom-rendering/dist/KnowledgeQuizAtomWrapper-importable.legacy.********************.js 280 B 0 B
dotcom-rendering/dist/LabsHeader-importable.********************.js 8.65 kB 0 B
dotcom-rendering/dist/LabsHeader-importable.legacy.********************.js 8.81 kB 0 B
dotcom-rendering/dist/Links-importable.********************.js 5.96 kB 0 B
dotcom-rendering/dist/Links-importable.legacy.********************.js 6.01 kB 0 B
dotcom-rendering/dist/LiveBlogEpic-importable.********************.js 5.45 kB 0 B
dotcom-rendering/dist/LiveBlogEpic-importable.legacy.********************.js 6.12 kB 0 B
dotcom-rendering/dist/Liveness-importable.********************.js 3.31 kB 0 B
dotcom-rendering/dist/Liveness-importable.legacy.********************.js 3.43 kB 0 B
dotcom-rendering/dist/MapEmbedBlockComponent-importable.********************.js 8.87 kB 0 B
dotcom-rendering/dist/MapEmbedBlockComponent-importable.legacy.********************.js 9.16 kB 0 B
dotcom-rendering/dist/MostViewedFooterData-importable.********************.js 11.3 kB 0 B
dotcom-rendering/dist/MostViewedFooterData-importable.legacy.********************.js 11.5 kB 0 B
dotcom-rendering/dist/MostViewedRightWrapper-importable.********************.js 10.7 kB 0 B
dotcom-rendering/dist/MostViewedRightWrapper-importable.legacy.********************.js 8.68 kB 0 B
dotcom-rendering/dist/newsletterEmbedIframe.********************.js 1.03 kB +74 B (+8%) 🔍
dotcom-rendering/dist/newsletterEmbedIframe.legacy.********************.js 1.06 kB +90 B (+9%) 🔍
dotcom-rendering/dist/OnwardsLower-importable.********************.js 15.8 kB 0 B
dotcom-rendering/dist/OnwardsLower-importable.legacy.********************.js 16.1 kB 0 B
dotcom-rendering/dist/OnwardsUpper-importable.********************.js 23.1 kB 0 B
dotcom-rendering/dist/OnwardsUpper-importable.legacy.********************.js 23.6 kB 0 B
dotcom-rendering/dist/ophan.********************.js 7.16 kB +68 B (+1%)
dotcom-rendering/dist/ophan.legacy.********************.js 7.38 kB 0 B
dotcom-rendering/dist/PersonalityQuizAtomWrapper-importable.********************.js 271 B 0 B
dotcom-rendering/dist/PersonalityQuizAtomWrapper-importable.legacy.********************.js 282 B 0 B
dotcom-rendering/dist/ProfileAtomWrapper-importable.********************.js 264 B 0 B
dotcom-rendering/dist/ProfileAtomWrapper-importable.legacy.********************.js 274 B 0 B
dotcom-rendering/dist/PulsingDot-importable.********************.js 1.66 kB 0 B
dotcom-rendering/dist/PulsingDot-importable.legacy.********************.js 1.76 kB 0 B
dotcom-rendering/dist/QandaAtomWrapper-importable.********************.js 262 B 0 B
dotcom-rendering/dist/QandaAtomWrapper-importable.legacy.********************.js 272 B 0 B
dotcom-rendering/dist/ReaderRevenueDev-importable.********************.js 4.58 kB 0 B
dotcom-rendering/dist/ReaderRevenueDev-importable.legacy.********************.js 4.6 kB 0 B
dotcom-rendering/dist/readerRevenueDevUtils.********************.js 3.12 kB 0 B
dotcom-rendering/dist/readerRevenueDevUtils.js 2.31 kB 0 B
dotcom-rendering/dist/readerRevenueDevUtils.legacy.********************.js 4.16 kB 0 B
dotcom-rendering/dist/ReaderRevenueLinks-importable.********************.js 5.05 kB 0 B
dotcom-rendering/dist/ReaderRevenueLinks-importable.legacy.********************.js 5.45 kB 0 B
dotcom-rendering/dist/relativeTime.********************.js 1.4 kB +68 B (+5%) 🔍
dotcom-rendering/dist/relativeTime.legacy.********************.js 1.44 kB +91 B (+7%) 🔍
dotcom-rendering/dist/RichLinkComponent-importable.********************.js 9.45 kB 0 B
dotcom-rendering/dist/RichLinkComponent-importable.legacy.********************.js 9.62 kB 0 B
dotcom-rendering/dist/SecureSignupIframe-importable.********************.js 8.29 kB 0 B
dotcom-rendering/dist/SecureSignupIframe-importable.js 4.31 kB 0 B
dotcom-rendering/dist/SecureSignupIframe-importable.legacy.********************.js 8.59 kB 0 B
dotcom-rendering/dist/sentry.********************.js 684 B 0 B
dotcom-rendering/dist/sentry.legacy.********************.js 691 B 0 B
dotcom-rendering/dist/sentryLoader.********************.js 10.1 kB +58 B (+1%)
dotcom-rendering/dist/sentryLoader.legacy.********************.js 14.1 kB 0 B
dotcom-rendering/dist/SetABTests-importable.********************.js 9.36 kB 0 B
dotcom-rendering/dist/SetABTests-importable.legacy.********************.js 4.77 kB 0 B
dotcom-rendering/dist/ShareCount-importable.********************.js 7.4 kB 0 B
dotcom-rendering/dist/ShareCount-importable.legacy.********************.js 7.57 kB 0 B
dotcom-rendering/dist/shimport.********************.js 2.78 kB 0 B
dotcom-rendering/dist/shimport.legacy.********************.js 2.79 kB 0 B
dotcom-rendering/dist/SignInGateMain.********************.js 4.46 kB 0 B
dotcom-rendering/dist/SignInGateMain.js 2.88 kB 0 B
dotcom-rendering/dist/SignInGateMain.legacy.********************.js 4.57 kB 0 B
dotcom-rendering/dist/SignInGateSelector-importable.********************.js 5.19 kB 0 B
dotcom-rendering/dist/SignInGateSelector-importable.legacy.********************.js 5.47 kB 0 B
dotcom-rendering/dist/SlotBodyEnd-importable.********************.js 8.98 kB 0 B
dotcom-rendering/dist/SlotBodyEnd-importable.legacy.********************.js 10.2 kB 0 B
dotcom-rendering/dist/SpotifyBlockComponent-importable.********************.js 8.79 kB 0 B
dotcom-rendering/dist/SpotifyBlockComponent-importable.legacy.********************.js 9.09 kB 0 B
dotcom-rendering/dist/StickyBottomBanner-importable.********************.js 13.3 kB 0 B
dotcom-rendering/dist/StickyBottomBanner-importable.legacy.********************.js 14.9 kB 0 B
dotcom-rendering/dist/SubNav-importable.********************.js 7.04 kB 0 B
dotcom-rendering/dist/SubNav-importable.legacy.********************.js 7.21 kB 0 B
dotcom-rendering/dist/TimelineAtomWrapper-importable.********************.js 262 B 0 B
dotcom-rendering/dist/TimelineAtomWrapper-importable.legacy.********************.js 273 B 0 B
dotcom-rendering/dist/TopicFilterBank-importable.********************.js 7.5 kB 0 B
dotcom-rendering/dist/TopicFilterBank-importable.legacy.********************.js 7.67 kB 0 B
dotcom-rendering/dist/TopRightAdSlot-importable.********************.js 2.06 kB 0 B
dotcom-rendering/dist/TopRightAdSlot-importable.legacy.********************.js 2.09 kB 0 B
dotcom-rendering/dist/TweetBlockComponent-importable.********************.js 1.8 kB 0 B
dotcom-rendering/dist/TweetBlockComponent-importable.legacy.********************.js 1.79 kB 0 B
dotcom-rendering/dist/UnsafeEmbedBlockComponent-importable.********************.js 2.98 kB 0 B
dotcom-rendering/dist/UnsafeEmbedBlockComponent-importable.legacy.********************.js 3.08 kB 0 B
dotcom-rendering/dist/VideoFacebookBlockComponent-importable.********************.js 8.88 kB 0 B
dotcom-rendering/dist/VideoFacebookBlockComponent-importable.legacy.********************.js 9.16 kB 0 B
dotcom-rendering/dist/VineBlockComponent-importable.********************.js 2.8 kB 0 B
dotcom-rendering/dist/VineBlockComponent-importable.legacy.********************.js 2.9 kB 0 B
dotcom-rendering/dist/YoutubeBlockComponent-importable.********************.js 9.45 kB 0 B
dotcom-rendering/dist/YoutubeBlockComponent-importable.legacy.********************.js 9.82 kB 0 B

compressed-size-action

@github-actions
Copy link

github-actions bot commented Jul 4, 2022

⚡️ Lighthouse report for the changes in this PR

Lighthouse tested 2 URLs

⚠️ Budget exceeded for 2 of 10 audits.

Report for Article

tested url https://www.theguardian.com/commentisfree/2020/feb/08/hungary-now-for-the-new-right-what-venezuela-once-was-for-the-left

Category Status Expected Actual
First Contentful Paint 1500 1138
Largest Contentful Paint 3000 1683
Time to Interactive 3500 1478
Cumulative Layout Shift ⚠️ 0.002 0.004428
accessibility 0.97 1.000000

Report for Front

tested url https://www.theguardian.com/uk

Category Status Expected Actual
First Contentful Paint 1500 1203
Largest Contentful Paint 3000 2212
Time to Interactive 3500 1950
Cumulative Layout Shift 0.002 0.000000
accessibility ⚠️ 0.97 0.890000

Copy link
Contributor

@oliverlloyd oliverlloyd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 pending tests in code

@mxdvl mxdvl force-pushed the mxdvl/islands-perf branch 4 times, most recently from 1c615cb to be69119 Compare July 4, 2022 15:34
Copy link
Contributor

@OllysCoding OllysCoding left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

Many errors have started showing in Sentry since
the island performance changes have been introduced:

CLIENT-SIDE-PROD-CTP6

We now make guard against these three `performance.` cases:
- the browser does not support `getEntriesByName`
- the browser does not return a PerformanceEntry from `mark` & `measure`
- no PerformanceEntry was found when running `getEntriesByName`
@mxdvl mxdvl merged commit e55b4ed into main Jul 4, 2022
@mxdvl mxdvl deleted the mxdvl/islands-perf branch July 4, 2022 16:28
@mxdvl mxdvl changed the title Fix when performance.measure is undefined Fix buggy implementations of the Performance API Jul 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

4 participants