dotcom-rendering
dotcom-rendering copied to clipboard
Apps email signup functionality
What does this change?
[no public facing changes]
Adds a client-side module to add functionality to the work-in-progress apps-rendering EmailSignUp component and adds it to the article page script.
The module uses DOM-manipulation rather than component hydration / react. It identifies the component in the server-side rendered mark-up using a CSS class and adds event listeners to the form components.
The sign-up request is simulated using a placeholder function until a full implementation is in place.
Why?
For the MVP version of the newsletter sign up feature in Apps Rendering, we plan to replicate the HTML form UI used on the DCR version. In the longer term we hope to improve on the UX by replacing this with native a UI.
To complete the MVP, we will need to separately add support for Apps Rendering to trigger a post to Consent (Identity API) - we expect this will be done with a Bridget function so Apps Rendering can delegate the request to the native layer which already connects to Consent to sign users into the App.
DOM-manipulation was used over hydration as:
- the Content Security Policy blocked styles generated client side by hydrated component. It may have been possible to address this by providing a hash or nonce key to for the emotion function in the component.
- the form functionality is fairly simple - although using React may have been preferable, the complexity involved in addressing the hydration / emotion issue would have outweighed the benefits.
Screenshots
initial state
waiting state
success state
fail state
In answer to some points in the PR description:
the Content Security Policy blocked styles generated client side by hydrated component
I didn't see any styles being generated client side by the component or client side script. It looks like all styles are being declared in the component, which should prevent any issues with the CSP if the component is included in the SSR.
I deliberately rebuilt the component with so the styles generated by the server-side rendering way to prevent the problem I'm describing. Even if the styles are declared in the component, emotion doesn't generate the stylesheet for a classname until it is used, so all variations of the mark-up (ie success state, failure state etc) need to be be pre-rendered server side for their CSS to be allowed by the CSP.
This includes the predefined styling for the source components - EG unless an InlineSuccess component was actually rendered server-side, the css for that component does not exist in the server-side rendered stylesheets. If the InlineSuccess is added by react client side in a hydrated component, emotion generates a client-side-rendered stylesheet, but the CSP will block that stylesheet and the component will not render correctly.
the form functionality is fairly simple - although using React may have been preferable, the complexity involved in addressing the hydration / emotion issue would have outweighed the benefits.
Aside from managing hydration, I'm not sure React-based interactivity adds much complexity, but rather reduces it. We could use React-managed state to determine the component's contents, instead of manually manipulating a set of classes to determine state and transitions.
Its the complexity of fixing the CSP blocking the client-side generated stylesheets on a hydrated component that I was referring to. Hydrating the component (with a similar pattern to the Click to View components)and using react for the interactivity was fairly straightforward.
I did do some research on the issue before deciding on the client-side script approach, and I think it would involve generating a nonce keys in the CSP and providing them to the the instance of the emotion server used by the component so the CSP will allow the stylesheets created 'on demand' client side. I think that's the part of what is abstracted behind the DCR island pattern but I may be wrong.
Separately to the above, I also had a question around how the newsletter signup endpoint in Consent is protected. It looks like DCR uses reCAPTCHA, but I don't think I see anything similar here. Are there any plans to introduce something like reCAPTCHA here?
Yes and no - the connection between the App and Identity is still an open question. I don't know if the app would be vulnerable to bots in the same way a public webpage can be, but I assume the actual implementation would want to build in some kind of 'anti-spamming' mechanism whereby the native layer would not make the request to Consent if the user behaviour was suspicious.
If adding hydration & using React for interactivity looks daunting I'd be more than happy to set up a pairing session to look at making the changes together! I appreciate that AR doesn't have a lot of clear examples for this kind of feature yet.
Happy to look at this together. I think unless we address the CSP/emotion configuration, we won't get this working neatly in react. What might work is combination of the two approaches I tried - I.E. we keep pre-rendering the each state variation server side so all the required styling is in place, but use react to manage hiding/revealing instead of the client script. This would look odd in the component, so would probably need a fair amount of commenting to explain what was going on!
Size Change: +11 B (0%)
Total Size: 2.27 MB
ℹ️ View Unchanged
| Filename | Size | Change |
|---|---|---|
dotcom-rendering/dist/1072.legacy.********************.js |
3.9 kB | 0 B |
dotcom-rendering/dist/1072.modern.********************.js |
3.4 kB | 0 B |
dotcom-rendering/dist/1072.variant.********************.js |
3.41 kB | 0 B |
dotcom-rendering/dist/1364.legacy.********************.js |
2.83 kB | 0 B |
dotcom-rendering/dist/1715.legacy.********************.js |
2.63 kB | 0 B |
dotcom-rendering/dist/225.modern.********************.js |
5.95 kB | 0 B |
dotcom-rendering/dist/225.variant.********************.js |
5.95 kB | 0 B |
dotcom-rendering/dist/230.legacy.********************.js |
4.27 kB | 0 B |
dotcom-rendering/dist/230.modern.********************.js |
4.27 kB | 0 B |
dotcom-rendering/dist/230.variant.********************.js |
4.27 kB | 0 B |
dotcom-rendering/dist/2344.legacy.********************.js |
3.19 kB | 0 B |
dotcom-rendering/dist/2344.modern.********************.js |
3.12 kB | 0 B |
dotcom-rendering/dist/2344.variant.********************.js |
3.12 kB | 0 B |
dotcom-rendering/dist/2794.legacy.********************.js |
3.01 kB | 0 B |
dotcom-rendering/dist/2947.legacy.********************.js |
2.82 kB | 0 B |
dotcom-rendering/dist/2947.modern.********************.js |
2.75 kB | 0 B |
dotcom-rendering/dist/2947.variant.********************.js |
2.75 kB | 0 B |
dotcom-rendering/dist/3151.legacy.********************.js |
2.82 kB | 0 B |
dotcom-rendering/dist/3153.legacy.********************.js |
3.13 kB | 0 B |
dotcom-rendering/dist/3584.legacy.********************.js |
1.8 kB | 0 B |
dotcom-rendering/dist/3584.modern.********************.js |
1.8 kB | 0 B |
dotcom-rendering/dist/3584.variant.********************.js |
1.8 kB | 0 B |
dotcom-rendering/dist/3592.legacy.********************.js |
17.5 kB | 0 B |
dotcom-rendering/dist/3592.modern.********************.js |
16.6 kB | 0 B |
dotcom-rendering/dist/3592.variant.********************.js |
16.6 kB | 0 B |
dotcom-rendering/dist/3830.legacy.********************.js |
2.77 kB | 0 B |
dotcom-rendering/dist/385.legacy.********************.js |
6.07 kB | 0 B |
dotcom-rendering/dist/3872.legacy.********************.js |
31.7 kB | 0 B |
dotcom-rendering/dist/3956.legacy.********************.js |
3.13 kB | 0 B |
dotcom-rendering/dist/4356.legacy.********************.js |
4.35 kB | 0 B |
dotcom-rendering/dist/4356.modern.********************.js |
4.3 kB | 0 B |
dotcom-rendering/dist/4356.variant.********************.js |
4.3 kB | 0 B |
dotcom-rendering/dist/438.modern.********************.js |
2.54 kB | 0 B |
dotcom-rendering/dist/438.variant.********************.js |
2.54 kB | 0 B |
dotcom-rendering/dist/4501.modern.********************.js |
2.67 kB | 0 B |
dotcom-rendering/dist/4501.variant.********************.js |
2.68 kB | 0 B |
dotcom-rendering/dist/4633.legacy.********************.js |
3.67 kB | 0 B |
dotcom-rendering/dist/4804.modern.********************.js |
2.74 kB | 0 B |
dotcom-rendering/dist/4804.variant.********************.js |
2.74 kB | 0 B |
dotcom-rendering/dist/5436.legacy.********************.js |
2.67 kB | 0 B |
dotcom-rendering/dist/5553.modern.********************.js |
3.27 kB | 0 B |
dotcom-rendering/dist/5553.variant.********************.js |
3.27 kB | 0 B |
dotcom-rendering/dist/5666.legacy.********************.js |
3.68 kB | 0 B |
dotcom-rendering/dist/5776.modern.********************.js |
3.9 kB | 0 B |
dotcom-rendering/dist/5776.variant.********************.js |
3.9 kB | 0 B |
dotcom-rendering/dist/6131.legacy.********************.js |
4.3 kB | 0 B |
dotcom-rendering/dist/6131.modern.********************.js |
4.3 kB | 0 B |
dotcom-rendering/dist/6131.variant.********************.js |
4.3 kB | 0 B |
dotcom-rendering/dist/6165.modern.********************.js |
33.8 kB | 0 B |
dotcom-rendering/dist/6165.variant.********************.js |
33.8 kB | 0 B |
dotcom-rendering/dist/6198.legacy.********************.js |
2.82 kB | 0 B |
dotcom-rendering/dist/6200.legacy.********************.js |
2.81 kB | 0 B |
dotcom-rendering/dist/6400.legacy.********************.js |
21.5 kB | 0 B |
dotcom-rendering/dist/6400.modern.********************.js |
21.5 kB | 0 B |
dotcom-rendering/dist/6400.variant.********************.js |
21.5 kB | 0 B |
dotcom-rendering/dist/6566.legacy.********************.js |
4.46 kB | 0 B |
dotcom-rendering/dist/6566.modern.********************.js |
4.45 kB | 0 B |
dotcom-rendering/dist/6566.variant.********************.js |
4.46 kB | 0 B |
dotcom-rendering/dist/6632.modern.********************.js |
3.04 kB | 0 B |
dotcom-rendering/dist/6632.variant.********************.js |
3.04 kB | 0 B |
dotcom-rendering/dist/6667.modern.********************.js |
2.74 kB | 0 B |
dotcom-rendering/dist/6667.variant.********************.js |
2.74 kB | 0 B |
dotcom-rendering/dist/6821.legacy.********************.js |
2.94 kB | 0 B |
dotcom-rendering/dist/6821.modern.********************.js |
2.88 kB | 0 B |
dotcom-rendering/dist/6821.variant.********************.js |
2.88 kB | 0 B |
dotcom-rendering/dist/7110.legacy.********************.js |
3.13 kB | 0 B |
dotcom-rendering/dist/7148.legacy.********************.js |
7.32 kB | 0 B |
dotcom-rendering/dist/7148.modern.********************.js |
6.81 kB | 0 B |
dotcom-rendering/dist/7148.variant.********************.js |
6.81 kB | 0 B |
dotcom-rendering/dist/7342.modern.********************.js |
3.54 kB | 0 B |
dotcom-rendering/dist/7342.variant.********************.js |
3.54 kB | 0 B |
dotcom-rendering/dist/7347.modern.********************.js |
4.35 kB | 0 B |
dotcom-rendering/dist/7347.variant.********************.js |
4.35 kB | 0 B |
dotcom-rendering/dist/7348.legacy.********************.js |
6.12 kB | 0 B |
dotcom-rendering/dist/7456.modern.********************.js |
3.04 kB | 0 B |
dotcom-rendering/dist/7456.variant.********************.js |
3.04 kB | 0 B |
dotcom-rendering/dist/7576.legacy.********************.js |
5.38 kB | 0 B |
dotcom-rendering/dist/7576.modern.********************.js |
3.96 kB | 0 B |
dotcom-rendering/dist/7576.variant.********************.js |
3.96 kB | 0 B |
dotcom-rendering/dist/7800.modern.********************.js |
11.3 kB | 0 B |
dotcom-rendering/dist/7800.variant.********************.js |
11.3 kB | 0 B |
dotcom-rendering/dist/7829.legacy.********************.js |
2.92 kB | 0 B |
dotcom-rendering/dist/7829.modern.********************.js |
2.8 kB | 0 B |
dotcom-rendering/dist/7829.variant.********************.js |
2.8 kB | 0 B |
dotcom-rendering/dist/7925.modern.********************.js |
5.53 kB | 0 B |
dotcom-rendering/dist/7925.variant.********************.js |
5.53 kB | 0 B |
dotcom-rendering/dist/7960.legacy.********************.js |
2.82 kB | 0 B |
dotcom-rendering/dist/8109.modern.********************.js |
6.8 kB | 0 B |
dotcom-rendering/dist/8109.variant.********************.js |
6.8 kB | 0 B |
dotcom-rendering/dist/8129.legacy.********************.js |
11.8 kB | 0 B |
dotcom-rendering/dist/8170.modern.********************.js |
3.04 kB | 0 B |
dotcom-rendering/dist/8170.variant.********************.js |
3.04 kB | 0 B |
dotcom-rendering/dist/8195.legacy.********************.js |
3.39 kB | 0 B |
dotcom-rendering/dist/8414.legacy.********************.js |
4.48 kB | 0 B |
dotcom-rendering/dist/8414.modern.********************.js |
4.42 kB | 0 B |
dotcom-rendering/dist/8414.variant.********************.js |
4.42 kB | 0 B |
dotcom-rendering/dist/8584.modern.********************.js |
2.69 kB | 0 B |
dotcom-rendering/dist/8584.variant.********************.js |
2.69 kB | 0 B |
dotcom-rendering/dist/8620.modern.********************.js |
3.68 kB | 0 B |
dotcom-rendering/dist/8620.variant.********************.js |
3.68 kB | 0 B |
dotcom-rendering/dist/8931.modern.********************.js |
2.92 kB | 0 B |
dotcom-rendering/dist/8931.variant.********************.js |
2.92 kB | 0 B |
dotcom-rendering/dist/9091.legacy.********************.js |
4.28 kB | 0 B |
dotcom-rendering/dist/9165.legacy.********************.js |
2.81 kB | 0 B |
dotcom-rendering/dist/9306.legacy.********************.js |
2.77 kB | 0 B |
dotcom-rendering/dist/9494.legacy.********************.js |
5.35 kB | 0 B |
dotcom-rendering/dist/9704.modern.********************.js |
2.73 kB | 0 B |
dotcom-rendering/dist/9704.variant.********************.js |
2.73 kB | 0 B |
dotcom-rendering/dist/979.modern.********************.js |
5.8 kB | 0 B |
dotcom-rendering/dist/979.variant.********************.js |
5.81 kB | 0 B |
dotcom-rendering/dist/9804.modern.********************.js |
2.69 kB | 0 B |
dotcom-rendering/dist/9804.variant.********************.js |
2.69 kB | 0 B |
dotcom-rendering/dist/9901.modern.********************.js |
2.67 kB | 0 B |
dotcom-rendering/dist/9901.variant.********************.js |
2.67 kB | 0 B |
dotcom-rendering/dist/9958.legacy.********************.js |
5.99 kB | 0 B |
dotcom-rendering/dist/AlreadyVisited-importable.legacy.********************.js |
4.52 kB | 0 B |
dotcom-rendering/dist/AlreadyVisited-importable.modern.********************.js |
4.52 kB | 0 B |
dotcom-rendering/dist/AlreadyVisited-importable.variant.********************.js |
4.52 kB | 0 B |
dotcom-rendering/dist/atomIframe.legacy.********************.js |
806 B | 0 B |
dotcom-rendering/dist/atomIframe.modern.********************.js |
762 B | 0 B |
dotcom-rendering/dist/atomIframe.variant.********************.js |
762 B | 0 B |
dotcom-rendering/dist/AudioAtomWrapper-importable.legacy.********************.js |
518 B | 0 B |
dotcom-rendering/dist/AudioAtomWrapper-importable.modern.********************.js |
466 B | 0 B |
dotcom-rendering/dist/AudioAtomWrapper-importable.variant.********************.js |
467 B | 0 B |
dotcom-rendering/dist/bootCmp.legacy.********************.js |
13.1 kB | 0 B |
dotcom-rendering/dist/bootCmp.modern.********************.js |
9.53 kB | 0 B |
dotcom-rendering/dist/bootCmp.variant.********************.js |
9.53 kB | 0 B |
dotcom-rendering/dist/Branding-importable.legacy.********************.js |
5.03 kB | 0 B |
dotcom-rendering/dist/Branding-importable.modern.********************.js |
5.03 kB | 0 B |
dotcom-rendering/dist/Branding-importable.variant.********************.js |
5.03 kB | 0 B |
dotcom-rendering/dist/braze-web-sdk-core.legacy.********************.js |
36.9 kB | 0 B |
dotcom-rendering/dist/braze-web-sdk-core.modern.********************.js |
36.9 kB | 0 B |
dotcom-rendering/dist/braze-web-sdk-core.variant.********************.js |
36.9 kB | 0 B |
dotcom-rendering/dist/BrazeMessaging-importable.legacy.********************.js |
10.2 kB | 0 B |
dotcom-rendering/dist/BrazeMessaging-importable.modern.********************.js |
9.46 kB | 0 B |
dotcom-rendering/dist/BrazeMessaging-importable.variant.********************.js |
9.46 kB | 0 B |
dotcom-rendering/dist/CalloutBlockComponent-importable.legacy.********************.js |
4.55 kB | 0 B |
dotcom-rendering/dist/CalloutBlockComponent-importable.modern.********************.js |
4.26 kB | 0 B |
dotcom-rendering/dist/CalloutBlockComponent-importable.variant.********************.js |
4.26 kB | 0 B |
dotcom-rendering/dist/Carousel-importable.legacy.********************.js |
12 kB | 0 B |
dotcom-rendering/dist/Carousel-importable.modern.********************.js |
11.6 kB | 0 B |
dotcom-rendering/dist/Carousel-importable.variant.********************.js |
11.6 kB | 0 B |
dotcom-rendering/dist/ChartAtomWrapper-importable.legacy.********************.js |
273 B | 0 B |
dotcom-rendering/dist/ChartAtomWrapper-importable.modern.********************.js |
266 B | 0 B |
dotcom-rendering/dist/ChartAtomWrapper-importable.variant.********************.js |
266 B | 0 B |
dotcom-rendering/dist/CommentCount-importable.legacy.********************.js |
1.45 kB | 0 B |
dotcom-rendering/dist/CommentCount-importable.modern.********************.js |
1.43 kB | 0 B |
dotcom-rendering/dist/CommentCount-importable.variant.********************.js |
1.43 kB | 0 B |
dotcom-rendering/dist/CommercialMetrics-importable.legacy.********************.js |
1.83 kB | 0 B |
dotcom-rendering/dist/CommercialMetrics-importable.modern.********************.js |
5.84 kB | 0 B |
dotcom-rendering/dist/CommercialMetrics-importable.variant.********************.js |
5.84 kB | 0 B |
dotcom-rendering/dist/CoreVitals-importable.legacy.********************.js |
6.36 kB | 0 B |
dotcom-rendering/dist/CoreVitals-importable.modern.********************.js |
6.15 kB | 0 B |
dotcom-rendering/dist/CoreVitals-importable.variant.********************.js |
6.15 kB | 0 B |
dotcom-rendering/dist/debug.js |
1.75 kB | 0 B |
dotcom-rendering/dist/DiscussionContainer-importable.legacy.********************.js |
3.75 kB | 0 B |
dotcom-rendering/dist/DiscussionContainer-importable.modern.********************.js |
3.5 kB | 0 B |
dotcom-rendering/dist/DiscussionContainer-importable.variant.********************.js |
3.5 kB | 0 B |
dotcom-rendering/dist/DiscussionMeta-importable.legacy.********************.js |
1.93 kB | 0 B |
dotcom-rendering/dist/DiscussionMeta-importable.modern.********************.js |
1.89 kB | 0 B |
dotcom-rendering/dist/DiscussionMeta-importable.variant.********************.js |
1.89 kB | 0 B |
dotcom-rendering/dist/DocumentBlockComponent-importable.legacy.********************.js |
3.5 kB | 0 B |
dotcom-rendering/dist/DocumentBlockComponent-importable.modern.********************.js |
3.41 kB | 0 B |
dotcom-rendering/dist/DocumentBlockComponent-importable.variant.********************.js |
3.4 kB | 0 B |
dotcom-rendering/dist/dynamicImport.legacy.********************.js |
2.07 kB | 0 B |
dotcom-rendering/dist/dynamicImport.modern.********************.js |
2 kB | 0 B |
dotcom-rendering/dist/dynamicImport.variant.********************.js |
2 kB | 0 B |
dotcom-rendering/dist/EditionDropdown-importable.legacy.********************.js |
4.54 kB | 0 B |
dotcom-rendering/dist/EditionDropdown-importable.modern.********************.js |
4.5 kB | 0 B |
dotcom-rendering/dist/EditionDropdown-importable.variant.********************.js |
4.5 kB | 0 B |
dotcom-rendering/dist/EmbedBlockComponent-importable.legacy.********************.js |
3.86 kB | 0 B |
dotcom-rendering/dist/EmbedBlockComponent-importable.modern.********************.js |
3.76 kB | 0 B |
dotcom-rendering/dist/EmbedBlockComponent-importable.variant.********************.js |
3.76 kB | 0 B |
dotcom-rendering/dist/embedIframe.legacy.********************.js |
810 B | 0 B |
dotcom-rendering/dist/embedIframe.modern.********************.js |
766 B | 0 B |
dotcom-rendering/dist/embedIframe.variant.********************.js |
764 B | 0 B |
dotcom-rendering/dist/EnhancePinnedPost-importable.legacy.********************.js |
6.82 kB | 0 B |
dotcom-rendering/dist/EnhancePinnedPost-importable.modern.********************.js |
6.25 kB | 0 B |
dotcom-rendering/dist/EnhancePinnedPost-importable.variant.********************.js |
6.25 kB | 0 B |
dotcom-rendering/dist/FetchCommentCounts-importable.legacy.********************.js |
2.33 kB | 0 B |
dotcom-rendering/dist/FetchCommentCounts-importable.modern.********************.js |
2.23 kB | 0 B |
dotcom-rendering/dist/FetchCommentCounts-importable.variant.********************.js |
2.23 kB | 0 B |
dotcom-rendering/dist/FetchOnwardsData-importable.legacy.********************.js |
2.23 kB | 0 B |
dotcom-rendering/dist/FetchOnwardsData-importable.modern.********************.js |
2.24 kB | 0 B |
dotcom-rendering/dist/FetchOnwardsData-importable.variant.********************.js |
2.24 kB | 0 B |
dotcom-rendering/dist/FilterButton-importable.legacy.********************.js |
3.14 kB | 0 B |
dotcom-rendering/dist/FilterButton-importable.modern.********************.js |
3.05 kB | 0 B |
dotcom-rendering/dist/FilterButton-importable.variant.********************.js |
3.05 kB | 0 B |
dotcom-rendering/dist/FilterKeyEventsToggle-importable.legacy.********************.js |
4.29 kB | 0 B |
dotcom-rendering/dist/FilterKeyEventsToggle-importable.modern.********************.js |
4.22 kB | 0 B |
dotcom-rendering/dist/FilterKeyEventsToggle-importable.variant.********************.js |
4.22 kB | 0 B |
dotcom-rendering/dist/FocusStyles-importable.legacy.********************.js |
4.77 kB | 0 B |
dotcom-rendering/dist/FocusStyles-importable.modern.********************.js |
4.71 kB | 0 B |
dotcom-rendering/dist/FocusStyles-importable.variant.********************.js |
4.72 kB | 0 B |
dotcom-rendering/dist/frontend.server.js |
509 kB | +11 B (0%) |
dotcom-rendering/dist/ga.legacy.********************.js |
2.9 kB | 0 B |
dotcom-rendering/dist/ga.modern.********************.js |
2.84 kB | 0 B |
dotcom-rendering/dist/ga.variant.********************.js |
2.84 kB | 0 B |
dotcom-rendering/dist/GetCricketScoreboard-importable.legacy.********************.js |
2.07 kB | 0 B |
dotcom-rendering/dist/GetCricketScoreboard-importable.modern.********************.js |
2.01 kB | 0 B |
dotcom-rendering/dist/GetCricketScoreboard-importable.variant.********************.js |
2.01 kB | 0 B |
dotcom-rendering/dist/GetMatchNav-importable.legacy.********************.js |
7.49 kB | 0 B |
dotcom-rendering/dist/GetMatchNav-importable.modern.********************.js |
9.53 kB | 0 B |
dotcom-rendering/dist/GetMatchNav-importable.variant.********************.js |
9.53 kB | 0 B |
dotcom-rendering/dist/GetMatchStats-importable.legacy.********************.js |
5.09 kB | 0 B |
dotcom-rendering/dist/GetMatchStats-importable.modern.********************.js |
4.38 kB | 0 B |
dotcom-rendering/dist/GetMatchStats-importable.variant.********************.js |
4.38 kB | 0 B |
dotcom-rendering/dist/GetMatchTabs-importable.legacy.********************.js |
3.64 kB | 0 B |
dotcom-rendering/dist/GetMatchTabs-importable.modern.********************.js |
3.48 kB | 0 B |
dotcom-rendering/dist/GetMatchTabs-importable.variant.********************.js |
3.48 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-banner.modern.********************.js |
11.3 kB | 0 B |
dotcom-rendering/dist/guardian-braze-components-banner.variant.********************.js |
11.3 kB | 0 B |
dotcom-rendering/dist/guardian-braze-components-end-of-article.js |
9.4 kB | 0 B |
dotcom-rendering/dist/guardian-braze-components-end-of-article.legacy.********************.js |
9.36 kB | 0 B |
dotcom-rendering/dist/guardian-braze-components-end-of-article.modern.********************.js |
9.28 kB | 0 B |
dotcom-rendering/dist/guardian-braze-components-end-of-article.variant.********************.js |
9.28 kB | 0 B |
dotcom-rendering/dist/GuideAtomWrapper-importable.legacy.********************.js |
275 B | 0 B |
dotcom-rendering/dist/GuideAtomWrapper-importable.modern.********************.js |
269 B | 0 B |
dotcom-rendering/dist/GuideAtomWrapper-importable.variant.********************.js |
269 B | 0 B |
dotcom-rendering/dist/initDiscussion.legacy.********************.js |
11.7 kB | 0 B |
dotcom-rendering/dist/initDiscussion.modern.********************.js |
11.4 kB | 0 B |
dotcom-rendering/dist/initDiscussion.variant.********************.js |
11.4 kB | 0 B |
dotcom-rendering/dist/InstagramBlockComponent-importable.legacy.********************.js |
3.49 kB | 0 B |
dotcom-rendering/dist/InstagramBlockComponent-importable.modern.********************.js |
3.41 kB | 0 B |
dotcom-rendering/dist/InstagramBlockComponent-importable.variant.********************.js |
3.41 kB | 0 B |
dotcom-rendering/dist/InteractiveBlockComponent-importable.legacy.********************.js |
4.43 kB | 0 B |
dotcom-rendering/dist/InteractiveBlockComponent-importable.modern.********************.js |
4.27 kB | 0 B |
dotcom-rendering/dist/InteractiveBlockComponent-importable.variant.********************.js |
4.27 kB | 0 B |
dotcom-rendering/dist/islands.legacy.********************.js |
12.4 kB | 0 B |
dotcom-rendering/dist/islands.modern.********************.js |
11.6 kB | 0 B |
dotcom-rendering/dist/islands.variant.********************.js |
11.6 kB | 0 B |
dotcom-rendering/dist/KeyEventsCarousel-importable.legacy.********************.js |
3.01 kB | 0 B |
dotcom-rendering/dist/KeyEventsCarousel-importable.modern.********************.js |
2.91 kB | 0 B |
dotcom-rendering/dist/KeyEventsCarousel-importable.variant.********************.js |
2.91 kB | 0 B |
dotcom-rendering/dist/KnowledgeQuizAtomWrapper-importable.legacy.********************.js |
282 B | 0 B |
dotcom-rendering/dist/KnowledgeQuizAtomWrapper-importable.modern.********************.js |
275 B | 0 B |
dotcom-rendering/dist/KnowledgeQuizAtomWrapper-importable.variant.********************.js |
276 B | 0 B |
dotcom-rendering/dist/LabsHeader-importable.legacy.********************.js |
6.7 kB | 0 B |
dotcom-rendering/dist/LabsHeader-importable.modern.********************.js |
6.57 kB | 0 B |
dotcom-rendering/dist/LabsHeader-importable.variant.********************.js |
6.57 kB | 0 B |
dotcom-rendering/dist/Links-importable.legacy.********************.js |
7.4 kB | 0 B |
dotcom-rendering/dist/Links-importable.modern.********************.js |
6.33 kB | 0 B |
dotcom-rendering/dist/Links-importable.variant.********************.js |
6.33 kB | 0 B |
dotcom-rendering/dist/LiveBlogEpic-importable.legacy.********************.js |
5.21 kB | 0 B |
dotcom-rendering/dist/LiveBlogEpic-importable.modern.********************.js |
4.85 kB | 0 B |
dotcom-rendering/dist/LiveBlogEpic-importable.variant.********************.js |
4.85 kB | 0 B |
dotcom-rendering/dist/Liveness-importable.legacy.********************.js |
3.65 kB | 0 B |
dotcom-rendering/dist/Liveness-importable.modern.********************.js |
3.59 kB | 0 B |
dotcom-rendering/dist/Liveness-importable.variant.********************.js |
3.59 kB | 0 B |
dotcom-rendering/dist/MapEmbedBlockComponent-importable.legacy.********************.js |
3.03 kB | 0 B |
dotcom-rendering/dist/MapEmbedBlockComponent-importable.modern.********************.js |
2.89 kB | 0 B |
dotcom-rendering/dist/MapEmbedBlockComponent-importable.variant.********************.js |
2.89 kB | 0 B |
dotcom-rendering/dist/MostViewedFooterData-importable.legacy.********************.js |
8.31 kB | 0 B |
dotcom-rendering/dist/MostViewedFooterData-importable.modern.********************.js |
8.15 kB | 0 B |
dotcom-rendering/dist/MostViewedFooterData-importable.variant.********************.js |
8.15 kB | 0 B |
dotcom-rendering/dist/MostViewedRightWrapper-importable.legacy.********************.js |
5.33 kB | 0 B |
dotcom-rendering/dist/MostViewedRightWrapper-importable.modern.********************.js |
5.09 kB | 0 B |
dotcom-rendering/dist/MostViewedRightWrapper-importable.variant.********************.js |
5.09 kB | 0 B |
dotcom-rendering/dist/newsletterEmbedIframe.legacy.********************.js |
975 B | 0 B |
dotcom-rendering/dist/newsletterEmbedIframe.modern.********************.js |
935 B | 0 B |
dotcom-rendering/dist/newsletterEmbedIframe.variant.********************.js |
936 B | 0 B |
dotcom-rendering/dist/OnwardsUpper-importable.legacy.********************.js |
7.06 kB | 0 B |
dotcom-rendering/dist/OnwardsUpper-importable.modern.********************.js |
6.86 kB | 0 B |
dotcom-rendering/dist/OnwardsUpper-importable.variant.********************.js |
6.85 kB | 0 B |
dotcom-rendering/dist/ophan.legacy.********************.js |
7.86 kB | 0 B |
dotcom-rendering/dist/ophan.modern.********************.js |
7.25 kB | 0 B |
dotcom-rendering/dist/ophan.variant.********************.js |
7.25 kB | 0 B |
dotcom-rendering/dist/PersonalityQuizAtomWrapper-importable.legacy.********************.js |
283 B | 0 B |
dotcom-rendering/dist/PersonalityQuizAtomWrapper-importable.modern.********************.js |
277 B | 0 B |
dotcom-rendering/dist/PersonalityQuizAtomWrapper-importable.variant.********************.js |
278 B | 0 B |
dotcom-rendering/dist/ProfileAtomWrapper-importable.legacy.********************.js |
274 B | 0 B |
dotcom-rendering/dist/ProfileAtomWrapper-importable.modern.********************.js |
269 B | 0 B |
dotcom-rendering/dist/ProfileAtomWrapper-importable.variant.********************.js |
270 B | 0 B |
dotcom-rendering/dist/PulsingDot-importable.legacy.********************.js |
2.17 kB | 0 B |
dotcom-rendering/dist/PulsingDot-importable.modern.********************.js |
2.08 kB | 0 B |
dotcom-rendering/dist/PulsingDot-importable.variant.********************.js |
2.08 kB | 0 B |
dotcom-rendering/dist/QandaAtomWrapper-importable.legacy.********************.js |
274 B | 0 B |
dotcom-rendering/dist/QandaAtomWrapper-importable.modern.********************.js |
268 B | 0 B |
dotcom-rendering/dist/QandaAtomWrapper-importable.variant.********************.js |
268 B | 0 B |
dotcom-rendering/dist/ReaderRevenueDev-importable.legacy.********************.js |
4.6 kB | 0 B |
dotcom-rendering/dist/ReaderRevenueDev-importable.modern.********************.js |
4.59 kB | 0 B |
dotcom-rendering/dist/ReaderRevenueDev-importable.variant.********************.js |
4.59 kB | 0 B |
dotcom-rendering/dist/readerRevenueDevUtils.js |
2.33 kB | 0 B |
dotcom-rendering/dist/readerRevenueDevUtils.legacy.********************.js |
5.07 kB | 0 B |
dotcom-rendering/dist/readerRevenueDevUtils.modern.********************.js |
4.01 kB | 0 B |
dotcom-rendering/dist/readerRevenueDevUtils.variant.********************.js |
4.01 kB | 0 B |
dotcom-rendering/dist/ReaderRevenueLinks-importable.legacy.********************.js |
7.03 kB | 0 B |
dotcom-rendering/dist/ReaderRevenueLinks-importable.modern.********************.js |
6.63 kB | 0 B |
dotcom-rendering/dist/ReaderRevenueLinks-importable.variant.********************.js |
6.63 kB | 0 B |
dotcom-rendering/dist/relativeTime.legacy.********************.js |
1.35 kB | 0 B |
dotcom-rendering/dist/relativeTime.modern.********************.js |
1.31 kB | 0 B |
dotcom-rendering/dist/relativeTime.variant.********************.js |
1.31 kB | 0 B |
dotcom-rendering/dist/RichLinkComponent-importable.legacy.********************.js |
3.88 kB | 0 B |
dotcom-rendering/dist/RichLinkComponent-importable.modern.********************.js |
3.85 kB | 0 B |
dotcom-rendering/dist/RichLinkComponent-importable.variant.********************.js |
3.85 kB | 0 B |
dotcom-rendering/dist/SecureSignupIframe-importable.legacy.********************.js |
6.99 kB | 0 B |
dotcom-rendering/dist/SecureSignupIframe-importable.modern.********************.js |
6.73 kB | 0 B |
dotcom-rendering/dist/SecureSignupIframe-importable.variant.********************.js |
6.73 kB | 0 B |
dotcom-rendering/dist/sentry.legacy.********************.js |
757 B | 0 B |
dotcom-rendering/dist/sentry.modern.********************.js |
757 B | 0 B |
dotcom-rendering/dist/sentry.variant.********************.js |
755 B | 0 B |
dotcom-rendering/dist/sentryLoader.legacy.********************.js |
14.1 kB | 0 B |
dotcom-rendering/dist/sentryLoader.modern.********************.js |
10.2 kB | 0 B |
dotcom-rendering/dist/sentryLoader.variant.********************.js |
10.2 kB | 0 B |
dotcom-rendering/dist/SetABTests-importable.legacy.********************.js |
3.68 kB | 0 B |
dotcom-rendering/dist/SetABTests-importable.modern.********************.js |
1 kB | 0 B |
dotcom-rendering/dist/SetABTests-importable.variant.********************.js |
1 kB | 0 B |
dotcom-rendering/dist/ShareCount-importable.legacy.********************.js |
1.61 kB | 0 B |
dotcom-rendering/dist/ShareCount-importable.modern.********************.js |
1.6 kB | 0 B |
dotcom-rendering/dist/ShareCount-importable.variant.********************.js |
1.6 kB | 0 B |
dotcom-rendering/dist/shimport.legacy.********************.js |
2.79 kB | 0 B |
dotcom-rendering/dist/shimport.modern.********************.js |
2.79 kB | 0 B |
dotcom-rendering/dist/shimport.variant.********************.js |
2.79 kB | 0 B |
dotcom-rendering/dist/ShowHideContainers-importable.legacy.********************.js |
761 B | 0 B |
dotcom-rendering/dist/ShowHideContainers-importable.modern.********************.js |
732 B | 0 B |
dotcom-rendering/dist/ShowHideContainers-importable.variant.********************.js |
731 B | 0 B |
dotcom-rendering/dist/SignInGateMain.js |
2.92 kB | 0 B |
dotcom-rendering/dist/SignInGateMain.legacy.********************.js |
4.98 kB | 0 B |
dotcom-rendering/dist/SignInGateMain.modern.********************.js |
4.9 kB | 0 B |
dotcom-rendering/dist/SignInGateMain.variant.********************.js |
4.9 kB | 0 B |
dotcom-rendering/dist/SignInGateSelector-importable.legacy.********************.js |
5.97 kB | 0 B |
dotcom-rendering/dist/SignInGateSelector-importable.modern.********************.js |
3.22 kB | 0 B |
dotcom-rendering/dist/SignInGateSelector-importable.variant.********************.js |
3.22 kB | 0 B |
dotcom-rendering/dist/SlotBodyEnd-importable.legacy.********************.js |
4.23 kB | 0 B |
dotcom-rendering/dist/SlotBodyEnd-importable.modern.********************.js |
4.01 kB | 0 B |
dotcom-rendering/dist/SlotBodyEnd-importable.variant.********************.js |
4.01 kB | 0 B |
dotcom-rendering/dist/SpotifyBlockComponent-importable.legacy.********************.js |
2.95 kB | 0 B |
dotcom-rendering/dist/SpotifyBlockComponent-importable.modern.********************.js |
2.81 kB | 0 B |
dotcom-rendering/dist/SpotifyBlockComponent-importable.variant.********************.js |
2.81 kB | 0 B |
dotcom-rendering/dist/StickyBottomBanner-importable.legacy.********************.js |
7.59 kB | 0 B |
dotcom-rendering/dist/StickyBottomBanner-importable.modern.********************.js |
5.1 kB | 0 B |
dotcom-rendering/dist/StickyBottomBanner-importable.variant.********************.js |
5.1 kB | 0 B |
dotcom-rendering/dist/SubNav-importable.legacy.********************.js |
1.42 kB | 0 B |
dotcom-rendering/dist/SubNav-importable.modern.********************.js |
1.38 kB | 0 B |
dotcom-rendering/dist/SubNav-importable.variant.********************.js |
1.38 kB | 0 B |
dotcom-rendering/dist/TimelineAtomWrapper-importable.legacy.********************.js |
275 B | 0 B |
dotcom-rendering/dist/TimelineAtomWrapper-importable.modern.********************.js |
269 B | 0 B |
dotcom-rendering/dist/TimelineAtomWrapper-importable.variant.********************.js |
270 B | 0 B |
dotcom-rendering/dist/TopicFilterBank-importable.legacy.********************.js |
1.55 kB | 0 B |
dotcom-rendering/dist/TopicFilterBank-importable.modern.********************.js |
1.5 kB | 0 B |
dotcom-rendering/dist/TopicFilterBank-importable.variant.********************.js |
1.51 kB | 0 B |
dotcom-rendering/dist/TopRightAdSlot-importable.legacy.********************.js |
4.12 kB | 0 B |
dotcom-rendering/dist/TopRightAdSlot-importable.modern.********************.js |
4.08 kB | 0 B |
dotcom-rendering/dist/TopRightAdSlot-importable.variant.********************.js |
4.08 kB | 0 B |
dotcom-rendering/dist/TweetBlockComponent-importable.legacy.********************.js |
2.2 kB | 0 B |
dotcom-rendering/dist/TweetBlockComponent-importable.modern.********************.js |
2.22 kB | 0 B |
dotcom-rendering/dist/TweetBlockComponent-importable.variant.********************.js |
2.22 kB | 0 B |
dotcom-rendering/dist/UnsafeEmbedBlockComponent-importable.legacy.********************.js |
3.5 kB | 0 B |
dotcom-rendering/dist/UnsafeEmbedBlockComponent-importable.modern.********************.js |
3.42 kB | 0 B |
dotcom-rendering/dist/UnsafeEmbedBlockComponent-importable.variant.********************.js |
3.42 kB | 0 B |
dotcom-rendering/dist/VideoFacebookBlockComponent-importable.legacy.********************.js |
3.03 kB | 0 B |
dotcom-rendering/dist/VideoFacebookBlockComponent-importable.modern.********************.js |
2.91 kB | 0 B |
dotcom-rendering/dist/VideoFacebookBlockComponent-importable.variant.********************.js |
2.91 kB | 0 B |
dotcom-rendering/dist/VineBlockComponent-importable.legacy.********************.js |
3.31 kB | 0 B |
dotcom-rendering/dist/VineBlockComponent-importable.modern.********************.js |
3.22 kB | 0 B |
dotcom-rendering/dist/VineBlockComponent-importable.variant.********************.js |
3.23 kB | 0 B |
dotcom-rendering/dist/YoutubeBlockComponent-importable.legacy.********************.js |
6.65 kB | 0 B |
dotcom-rendering/dist/YoutubeBlockComponent-importable.modern.********************.js |
6.36 kB | 0 B |
dotcom-rendering/dist/YoutubeBlockComponent-importable.variant.********************.js |
6.36 kB | 0 B |