Skip to content

implement football more button for when js is disabled #13903

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

Merged
merged 6 commits into from
May 19, 2025

Conversation

marjisound
Copy link
Contributor

What does this change?

This change adds support for a fallback More button on the football matches pages for when JavaScript is disabled in the browser.

Why introduce nextPageNoJsUrl:

There is a convention in frontend routing where for any page route (e.g. /football/fixtures/more/:year/:month/:day), there is also a corresponding .json route (e.g. /football/fixtures/more/:year/:month/:day.json). These .json routes return the full data required to render a page, including config and navigation.

In DCAR the More button is using the .json route to fetch more matches. However, this returns far more data than necessary — config, nav, and other unrelated information — when all that is needed is a list of matches to append to the current view.

Upon further investigation, we noticed that the HTML version of the /more/ routes serves the same content as the equivalent non-/more/ routes. Based on this, we decided to remove the HTML versions of the /more/ routes to simplify routing. The PR for this: guardian/frontend#27939

However, we later realised that the DCAR implementation did not support a non-JavaScript experience for the More button. To fix this, we needed a way to render the More button as a fallback link (i.e. an anchor tag) that simply navigates to the next page of matches when JavaScript is disabled.

Since the /more/ routes are being deprecated, we now use the equivalent non-/more/ route to construct that fallback link — this is provided via the new nextPageNoJsUrl prop.

TOTO:

This PR can be merged after guardian/frontend#27946

Copy link

github-actions bot commented May 2, 2025

Size Change: +210 B (+0.02%)

Total Size: 973 kB

Filename Size Change
dotcom-rendering/dist/2345.client.web.********************.js 0 B -3.38 kB (removed) 🏆
dotcom-rendering/dist/FootballMatchesPageWrapper-importable.client.web.********************.js 7.31 kB +115 B (+1.6%)
dotcom-rendering/dist/5715.client.web.********************.js 3.48 kB +3.48 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
dotcom-rendering/dist/1008.client.web.********************.js 2.88 kB 0 B
dotcom-rendering/dist/1032.client.web.********************.js 3.31 kB 0 B
dotcom-rendering/dist/117.client.web.********************.js 2.87 kB 0 B
dotcom-rendering/dist/1562.client.web.********************.js 20.3 kB 0 B
dotcom-rendering/dist/1656.client.web.********************.js 49.6 kB 0 B
dotcom-rendering/dist/1823.client.web.********************.js 3.9 kB 0 B
dotcom-rendering/dist/2045.client.web.********************.js 2.63 kB 0 B
dotcom-rendering/dist/2161.client.web.********************.js 3.88 kB 0 B
dotcom-rendering/dist/223.client.web.********************.js 527 B 0 B
dotcom-rendering/dist/2270.client.web.********************.js 3.65 kB 0 B
dotcom-rendering/dist/2309.client.web.********************.js 3.27 kB 0 B
dotcom-rendering/dist/2360.client.web.********************.js 20 kB 0 B
dotcom-rendering/dist/2502.client.web.********************.js 157 B 0 B
dotcom-rendering/dist/302.client.web.********************.js 8.84 kB 0 B
dotcom-rendering/dist/3226.client.web.********************.js 2.85 kB 0 B
dotcom-rendering/dist/3292.client.web.********************.js 2.11 kB 0 B
dotcom-rendering/dist/3308.client.web.********************.js 3.12 kB 0 B
dotcom-rendering/dist/3485.client.web.********************.js 4.67 kB 0 B
dotcom-rendering/dist/3598.client.web.********************.js 3.65 kB 0 B
dotcom-rendering/dist/3605.client.web.********************.js 15.1 kB 0 B
dotcom-rendering/dist/3619.client.web.********************.js 4.46 kB 0 B
dotcom-rendering/dist/3950.client.web.********************.js 3.36 kB 0 B
dotcom-rendering/dist/4133.client.web.********************.js 3.1 kB 0 B
dotcom-rendering/dist/4258.client.web.********************.js 4.08 kB 0 B
dotcom-rendering/dist/4306.client.web.********************.js 22.7 kB 0 B
dotcom-rendering/dist/4308.client.web.********************.js 3.57 kB 0 B
dotcom-rendering/dist/4324.client.web.********************.js 619 B 0 B
dotcom-rendering/dist/4457.client.web.********************.js 6.26 kB 0 B
dotcom-rendering/dist/4501.client.web.********************.js 4.29 kB 0 B
dotcom-rendering/dist/476.client.web.********************.js 5.42 kB 0 B
dotcom-rendering/dist/5144.client.web.********************.js 2.55 kB 0 B
dotcom-rendering/dist/5448.client.web.********************.js 4.37 kB 0 B
dotcom-rendering/dist/545.client.web.********************.js 531 B 0 B
dotcom-rendering/dist/5455.client.web.********************.js 7.15 kB 0 B
dotcom-rendering/dist/562.client.web.********************.js 11.5 kB 0 B
dotcom-rendering/dist/6038.client.web.********************.js 2.76 kB 0 B
dotcom-rendering/dist/6217.client.web.********************.js 3.75 kB 0 B
dotcom-rendering/dist/6480.client.web.********************.js 3.68 kB 0 B
dotcom-rendering/dist/6540.client.web.********************.js 2.62 kB 0 B
dotcom-rendering/dist/6541.client.web.********************.js 2.91 kB 0 B
dotcom-rendering/dist/6562.client.web.********************.js 439 B 0 B
dotcom-rendering/dist/6584.client.web.********************.js 2.68 kB 0 B
dotcom-rendering/dist/6722.client.web.********************.js 3.03 kB 0 B
dotcom-rendering/dist/6802.client.web.********************.js 2.51 kB 0 B
dotcom-rendering/dist/6873.client.web.********************.js 4.13 kB 0 B
dotcom-rendering/dist/695.client.web.********************.js 4.51 kB 0 B
dotcom-rendering/dist/7116.client.web.********************.js 23.2 kB 0 B
dotcom-rendering/dist/732.client.web.********************.js 3.07 kB 0 B
dotcom-rendering/dist/7398.client.web.********************.js 3.57 kB 0 B
dotcom-rendering/dist/7487.client.web.********************.js 4.25 kB 0 B
dotcom-rendering/dist/7927.client.web.********************.js 2.76 kB 0 B
dotcom-rendering/dist/8151.client.web.********************.js 4.17 kB 0 B
dotcom-rendering/dist/8212.client.web.********************.js 5.04 kB 0 B
dotcom-rendering/dist/8385.client.web.********************.js 3.88 kB 0 B
dotcom-rendering/dist/8387.client.web.********************.js 2.78 kB 0 B
dotcom-rendering/dist/8436.client.web.********************.js 3.63 kB 0 B
dotcom-rendering/dist/8602.client.web.********************.js 3.39 kB 0 B
dotcom-rendering/dist/8619.client.web.********************.js 4.44 kB 0 B
dotcom-rendering/dist/864.client.web.********************.js 3.17 kB 0 B
dotcom-rendering/dist/8942.client.web.********************.js 4.44 kB 0 B
dotcom-rendering/dist/8973.client.web.********************.js 16.5 kB 0 B
dotcom-rendering/dist/8985.client.web.********************.js 11.1 kB 0 B
dotcom-rendering/dist/9018.client.web.********************.js 3.73 kB 0 B
dotcom-rendering/dist/9135.client.web.********************.js 3.54 kB 0 B
dotcom-rendering/dist/9139.client.web.********************.js 3.13 kB 0 B
dotcom-rendering/dist/9376.client.web.********************.js 2.52 kB 0 B
dotcom-rendering/dist/960.client.web.********************.js 7.99 kB 0 B
dotcom-rendering/dist/967.client.web.********************.js 2.87 kB 0 B
dotcom-rendering/dist/9709.client.web.********************.js 2.73 kB 0 B
dotcom-rendering/dist/9822.client.web.********************.js 7.63 kB 0 B
dotcom-rendering/dist/9837.client.web.********************.js 3.29 kB 0 B
dotcom-rendering/dist/9870.client.web.********************.js 4.77 kB 0 B
dotcom-rendering/dist/Accessibility-importable.client.web.********************.js 8.43 kB 0 B
dotcom-rendering/dist/AdBlockAsk-importable.client.web.********************.js 2.99 kB 0 B
dotcom-rendering/dist/AdPortals-importable.client.web.********************.js 4.76 kB 0 B
dotcom-rendering/dist/AlreadyVisited-importable.client.web.********************.js 425 B 0 B
dotcom-rendering/dist/AppsEpic-importable.client.web.********************.js 3.61 kB 0 B
dotcom-rendering/dist/AppsFooter-importable.client.web.********************.js 2.69 kB 0 B
dotcom-rendering/dist/AppsLightboxImage-importable.client.web.********************.js 2.66 kB 0 B
dotcom-rendering/dist/AppsLightboxImageStore-importable.client.web.********************.js 2.6 kB 0 B
dotcom-rendering/dist/AudioAtomWrapper-importable.client.web.********************.js 2.76 kB 0 B
dotcom-rendering/dist/AudioPlayerWrapper-importable.client.web.********************.js 6.61 kB 0 B
dotcom-rendering/dist/AustralianTerritorySwitcher-importable.client.web.********************.js 4.61 kB 0 B
dotcom-rendering/dist/Branding-importable.client.web.********************.js 2.89 kB 0 B
dotcom-rendering/dist/braze-web-sdk-core.client.web.********************.js 67.7 kB 0 B
dotcom-rendering/dist/BrazeMessaging-importable.client.web.********************.js 1.68 kB 0 B
dotcom-rendering/dist/CalloutBlockComponent-importable.client.web.********************.js 6.73 kB 0 B
dotcom-rendering/dist/CalloutEmbedBlockComponent-importable.client.web.********************.js 5.77 kB 0 B
dotcom-rendering/dist/CardCommentCount-importable.client.web.********************.js 2.67 kB 0 B
dotcom-rendering/dist/Carousel-importable.client.web.********************.js 6.67 kB 0 B
dotcom-rendering/dist/CarouselForNewsletters-importable.client.web.********************.js 4.55 kB 0 B
dotcom-rendering/dist/ChartAtom-importable.client.web.********************.js 539 B 0 B
dotcom-rendering/dist/CommentCount-importable.client.web.********************.js 2.3 kB 0 B
dotcom-rendering/dist/CrosswordComponent-importable.client.web.********************.js 2.88 kB 0 B
dotcom-rendering/dist/DiscussionApps-importable.client.web.********************.js 1.07 kB 0 B
dotcom-rendering/dist/DiscussionMeta-importable.client.web.********************.js 2.41 kB 0 B
dotcom-rendering/dist/DiscussionWeb-importable.client.web.********************.js 3.45 kB 0 B
dotcom-rendering/dist/DocumentBlockComponent-importable.client.web.********************.js 2.85 kB 0 B
dotcom-rendering/dist/Dropdown-importable.client.web.********************.js 1.72 kB 0 B
dotcom-rendering/dist/EditionSwitcherBanner-importable.client.web.********************.js 4.43 kB 0 B
dotcom-rendering/dist/EmbedBlockComponent-importable.client.web.********************.js 3.98 kB 0 B
dotcom-rendering/dist/EnhancePinnedPost-importable.client.web.********************.js 2.02 kB 0 B
dotcom-rendering/dist/FetchOnwardsData-importable.client.web.********************.js 1.94 kB 0 B
dotcom-rendering/dist/FilterKeyEventsToggle-importable.client.web.********************.js 3.72 kB 0 B
dotcom-rendering/dist/FocusStyles-importable.client.web.********************.js 618 B 0 B
dotcom-rendering/dist/FollowWrapper-importable.client.web.********************.js 2.53 kB 0 B
dotcom-rendering/dist/FootballTablesCompetitionSelect-importable.client.web.********************.js 3.26 kB 0 B
dotcom-rendering/dist/FooterLabel-importable.client.web.********************.js 364 B 0 B
dotcom-rendering/dist/FooterReaderRevenueLinks-importable.client.web.********************.js 3.43 kB 0 B
dotcom-rendering/dist/frameworks.client.web.********************.js 20.9 kB 0 B
dotcom-rendering/dist/FrontSubNav-importable.client.web.********************.js 7.5 kB 0 B
dotcom-rendering/dist/GetCricketScoreboard-importable.client.web.********************.js 6.29 kB 0 B
dotcom-rendering/dist/GetMatchNav-importable.client.web.********************.js 11.5 kB 0 B
dotcom-rendering/dist/GetMatchStats-importable.client.web.********************.js 8.1 kB 0 B
dotcom-rendering/dist/GetMatchTabs-importable.client.web.********************.js 2.58 kB 0 B
dotcom-rendering/dist/guardian-braze-components-banner.client.web.********************.js 16.1 kB 0 B
dotcom-rendering/dist/guardian-braze-components-end-of-article.client.web.********************.js 10.2 kB 0 B
dotcom-rendering/dist/GuideAtomWrapper-importable.client.web.********************.js 782 B 0 B
dotcom-rendering/dist/index.client.web.********************.js 46.4 kB -1 B (0%)
dotcom-rendering/dist/InstagramBlockComponent-importable.client.web.********************.js 2.9 kB 0 B
dotcom-rendering/dist/InteractiveAtomMessenger-importable.client.web.********************.js 854 B 0 B
dotcom-rendering/dist/InteractiveBlockComponent-importable.client.web.********************.js 8.83 kB 0 B
dotcom-rendering/dist/InteractiveContentsBlockComponent-importable.client.web.********************.js 3.75 kB 0 B
dotcom-rendering/dist/KeyEventsCarousel-importable.client.web.********************.js 5.69 kB 0 B
dotcom-rendering/dist/KnowledgeQuizAtom-importable.client.web.********************.js 3.19 kB 0 B
dotcom-rendering/dist/LatestLinks-importable.client.web.********************.js 7.96 kB 0 B
dotcom-rendering/dist/LightboxHash-importable.client.web.********************.js 436 B 0 B
dotcom-rendering/dist/LightboxLayout-importable.client.web.********************.js 6.56 kB 0 B
dotcom-rendering/dist/LiveBlogEpic-importable.client.web.********************.js 3.56 kB 0 B
dotcom-rendering/dist/LiveblogGutterAskWrapper-importable.client.web.********************.js 2.49 kB 0 B
dotcom-rendering/dist/LiveblogNotifications-importable.client.web.********************.js 4.84 kB 0 B
dotcom-rendering/dist/Liveness-importable.client.web.********************.js 4.71 kB 0 B
dotcom-rendering/dist/LoopVideo-importable.client.web.********************.js 3.54 kB 0 B
dotcom-rendering/dist/ManyNewsletterSignUp-importable.client.web.********************.js 7.65 kB 0 B
dotcom-rendering/dist/MapEmbedBlockComponent-importable.client.web.********************.js 6.04 kB 0 B
dotcom-rendering/dist/Metrics-importable.client.web.********************.js 2.7 kB 0 B
dotcom-rendering/dist/MostViewedFooter-importable.client.web.********************.js 3.85 kB 0 B
dotcom-rendering/dist/MostViewedFooterData-importable.client.web.********************.js 5.97 kB 0 B
dotcom-rendering/dist/MostViewedRightWithAd-importable.client.web.********************.js 5.24 kB 0 B
dotcom-rendering/dist/OnwardsUpper-importable.client.web.********************.js 5.32 kB 0 B
dotcom-rendering/dist/PersonalityQuizAtom-importable.client.web.********************.js 3.35 kB 0 B
dotcom-rendering/dist/ProfileAtom-importable.client.web.********************.js 545 B 0 B
dotcom-rendering/dist/ProfileAtomWrapper-importable.client.web.********************.js 805 B 0 B
dotcom-rendering/dist/PulsingDot-importable.client.web.********************.js 749 B 0 B
dotcom-rendering/dist/QandaAtom-importable.client.web.********************.js 542 B 0 B
dotcom-rendering/dist/ReaderRevenueDev-importable.client.web.********************.js 470 B 0 B
dotcom-rendering/dist/readerRevenueDevUtils.client.web.********************.js 1.7 kB 0 B
dotcom-rendering/dist/RelativeTime-importable.client.web.********************.js 2.56 kB 0 B
dotcom-rendering/dist/RichLinkComponent-importable.client.web.********************.js 6.14 kB 0 B
dotcom-rendering/dist/ScrollableFeature-importable.client.web.********************.js 6.63 kB 0 B
dotcom-rendering/dist/ScrollableHighlights-importable.client.web.********************.js 7.26 kB 0 B
dotcom-rendering/dist/ScrollableMedium-importable.client.web.********************.js 2.11 kB 0 B
dotcom-rendering/dist/ScrollableSmall-importable.client.web.********************.js 2.17 kB 0 B
dotcom-rendering/dist/SecureSignup-importable.client.web.********************.js 4.2 kB 0 B
dotcom-rendering/dist/SendTargetingParams-importable.client.web.********************.js 2.21 kB 0 B
dotcom-rendering/dist/sentry.client.web.********************.js 802 B 0 B
dotcom-rendering/dist/SetABTests-importable.client.web.********************.js 3.91 kB 0 B
dotcom-rendering/dist/SetAdTargeting-importable.client.web.********************.js 487 B 0 B
dotcom-rendering/dist/ShareButton-importable.client.web.********************.js 2.18 kB 0 B
dotcom-rendering/dist/shimport.client.web.********************.js 2.8 kB 0 B
dotcom-rendering/dist/ShowHideContainers-importable.client.web.********************.js 893 B 0 B
dotcom-rendering/dist/ShowMore-importable.client.web.********************.js 919 B 0 B
dotcom-rendering/dist/SignInGateMain.client.web.********************.js 4.35 kB 0 B
dotcom-rendering/dist/SignInGateMainCheckoutComplete.client.web.********************.js 5.46 kB 0 B
dotcom-rendering/dist/SignInGateSelector-importable.client.web.********************.js 6.67 kB 0 B
dotcom-rendering/dist/SlideshowCarousel-importable.client.web.********************.js 4.56 kB 0 B
dotcom-rendering/dist/SlotBodyEnd-importable.client.web.********************.js 4.91 kB 0 B
dotcom-rendering/dist/SpotifyBlockComponent-importable.client.web.********************.js 5.8 kB 0 B
dotcom-rendering/dist/StickyBottomBanner-importable.client.web.********************.js 4.04 kB 0 B
dotcom-rendering/dist/SubNav-importable.client.web.********************.js 2.44 kB 0 B
dotcom-rendering/dist/TableOfContents-importable.client.web.********************.js 3.52 kB 0 B
dotcom-rendering/dist/TimelineAtom-importable.client.web.********************.js 1.23 kB 0 B
dotcom-rendering/dist/Titlepiece-importable.client.web.********************.js 13.6 kB 0 B
dotcom-rendering/dist/TopBar-importable.client.web.********************.js 8.85 kB 0 B
dotcom-rendering/dist/TopBarSupport-importable.client.web.********************.js 2.49 kB 0 B
dotcom-rendering/dist/TweetBlockComponent-importable.client.web.********************.js 1.13 kB 0 B
dotcom-rendering/dist/UnsafeEmbedBlockComponent-importable.client.web.********************.js 2.92 kB 0 B
dotcom-rendering/dist/VideoFacebookBlockComponent-importable.client.web.********************.js 6.06 kB 0 B
dotcom-rendering/dist/VineBlockComponent-importable.client.web.********************.js 3.32 kB 0 B
dotcom-rendering/dist/YoutubeBlockComponent-importable.client.web.********************.js 843 B 0 B

compressed-size-action

<div css={footballMatchesGridStyles}>
<div
<a
Copy link
Contributor

@SiAdcock SiAdcock May 8, 2025

Choose a reason for hiding this comment

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

I think this is minor, raising out of interest. Nesting a button inside a link is not valid HTML:

Content model:
Transparent, but there must be no interactive content descendant, a element descendant, or descendant with the tabindex attribute specified.

There might be weird behaviour as a result.

An alternative solution might be to retain the outer <div> and only hide the <a> if JS loads. I haven't tested this.

<div>
  {
    jsLoaded ? 
    (<Button></Button>)
    :
    (<LinkButton></LinkButton>)
  }
</div>

Copy link
Contributor Author

@marjisound marjisound May 12, 2025

Choose a reason for hiding this comment

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

Thanks @SiAdcock for pointing this out and sharing the links. I made some changes and used a state jsEnabled which is set within a useEffect. Using that the component decides if it needs to use the link or the button. What do you think about this approach?

@marjisound marjisound marked this pull request as ready for review May 12, 2025 09:01
@marjisound marjisound requested a review from a team as a code owner May 12, 2025 09:01
Copy link

Hello 👋! When you're ready to run Chromatic, please apply the run_chromatic label to this PR.

You will need to reapply the label each time you want to run Chromatic.

Click here to see the Chromatic project.

Copy link

github-actions bot commented May 12, 2025

@marjisound marjisound added the run_chromatic Runs chromatic when label is applied label May 12, 2025
@github-actions github-actions bot removed the run_chromatic Runs chromatic when label is applied label May 12, 2025
@marjisound marjisound force-pushed the implement-no-js-version-for-more-matches branch from 9a13902 to 0d4dc52 Compare May 12, 2025 10:08
@marjisound marjisound added the run_chromatic Runs chromatic when label is applied label May 12, 2025
@github-actions github-actions bot removed the run_chromatic Runs chromatic when label is applied label May 12, 2025
Copy link

github-actions bot commented May 12, 2025

useEffect(() => {
// This will only run after JS has loaded on the client
setJsLoaded(true);
}, []);
Copy link
Contributor

Choose a reason for hiding this comment

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

So sorry @marjisound, I've just noticed we have a useHydrated hook that does the same thing. Would you be able to use it here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah thanks for letting me know, just changed it to use the useHydrated hook

@marjisound marjisound force-pushed the implement-no-js-version-for-more-matches branch from 0d4dc52 to 6e1f9e8 Compare May 12, 2025 10:51
@marjisound marjisound added the run_chromatic Runs chromatic when label is applied label May 12, 2025
@github-actions github-actions bot removed the run_chromatic Runs chromatic when label is applied label May 12, 2025
@marjisound marjisound added the run_chromatic Runs chromatic when label is applied label May 12, 2025
@github-actions github-actions bot removed the run_chromatic Runs chromatic when label is applied label May 12, 2025
@marjisound marjisound added the run_chromatic Runs chromatic when label is applied label May 12, 2025
@github-actions github-actions bot removed the run_chromatic Runs chromatic when label is applied label May 12, 2025
Copy link
Contributor

@JamieB-gu JamieB-gu left a comment

Choose a reason for hiding this comment

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

Looks good! Couple of questions.

Comment on lines 235 to 236
export const nextPageNoJsUrl =
'https://www.theguardian.com/football/fixtures/more/2025/May/05';
Copy link
Contributor

Choose a reason for hiding this comment

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

Aren't the routes with /more in the path being deprecated?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good point, I removed the more from the url

Copy link
Contributor

Choose a reason for hiding this comment

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

👍 for these storybook tests!

Comment on lines 515 to 516
onClick={(e) => {
e.preventDefault(); // prevent navigation when JS is enabled
Copy link
Contributor

Choose a reason for hiding this comment

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

If there's no link wrapping the button now is this still needed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

You're right. I removed it 👍

- remove the preventDefault from button click handler
- update the nextPageNoJsUrl value in fixtures

Also fixing the bug where the parser was incorrectly using ajaxUrl as the
for nextPageNoJsUrl.
@marjisound marjisound added the run_chromatic Runs chromatic when label is applied label May 13, 2025
@github-actions github-actions bot removed the run_chromatic Runs chromatic when label is applied label May 13, 2025
Copy link
Contributor

@SiAdcock SiAdcock left a comment

Choose a reason for hiding this comment

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

Wonderful, thanks @marjisound 🙏

@marjisound marjisound merged commit b6899a6 into main May 19, 2025
32 checks passed
@marjisound marjisound deleted the implement-no-js-version-for-more-matches branch May 19, 2025 08:28
@prout-bot
Copy link

Seen on PROD (merged by @marjisound 9 minutes and 56 seconds ago) Please check your changes!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants