feat(content): move the sponsor block from the article tail to after the intro - #169
feat(content): move the sponsor block from the article tail to after the intro#169Decipher wants to merge 1 commit into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Preview sitepr-169: https://pr-169--stuartclark.netlify.app Updated 2026-08-27T22:51:20Z |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #169 +/- ##
========================================
Coverage 99.77% 99.77%
========================================
Files 78 78
Lines 1316 1316
Branches 330 330
========================================
Hits 1313 1313
Misses 3 3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
✅ Lighthouse Audit ·
|
| Route | FCP | LCP | CLS | TBT | Perf |
|---|---|---|---|---|---|
/ |
✅ 2.8s |
✅ 2.9s |
✅ 0.009 |
✅ 22.500 |
✅ 0.90 |
/about |
✅ 2.6s |
✅ 3.1s |
✅ 0.178 |
✅ 69.500 |
✅ 0.82 |
/community |
✅ 2.6s |
✅ 2.7s |
✅ 0.016 |
✅ 24.308 |
✅ 0.92 |
/open-source |
✅ 2.8s |
✅ 4.8s |
✅ 0.000 |
✅ 0.000 |
✅ 0.78 |
/writing |
✅ 2.7s |
✅ 2.9s |
✅ 0.000 |
✅ 5.500 |
✅ 0.91 |
/writing/custom-formatters-410-20260731 |
✅ 2.9s |
✅ 3.4s |
✅ 0.063 |
✅ 0.000 |
✅ 0.86 |
/writing/decoupling-configuration-config-pages-20220412 |
✅ 2.7s |
✅ 3.0s |
✅ 0.015 |
✅ 0.000 |
✅ 0.90 |
/writing/drupal-site-settings-over-jsonapi-consumer-20260826 |
✅ 2.9s |
✅ 4.0s |
✅ 0.159 |
✅ 0.000 |
✅ 0.76 |
/writing/field-tokens-200-20260722 |
✅ 2.7s |
✅ 2.8s |
✅ 0.019 |
✅ 0.000 |
✅ 0.91 |
/writing/hello-world-20211126 |
✅ 2.9s |
✅ 3.0s |
✅ 0.142 |
✅ 0.000 |
✅ 0.84 |
/writing/jsonapi-views-120-20260812 |
✅ 2.7s |
✅ 2.8s |
✅ 0.005 |
✅ 0.000 |
✅ 0.91 |
/writing/layout-paragraphs-module-20220301 |
✅ 2.6s |
✅ 2.7s |
✅ 0.055 |
✅ 0.000 |
✅ 0.92 |
/writing/what-no-images-20220315 |
✅ 2.7s |
✅ 2.8s |
✅ 0.039 |
✅ 0.000 |
✅ 0.91 |
Thresholds: FCP ≤ 3.5s, LCP ≤ 5.0s, CLS ≤ 0.25, TBT ≤ 600.000, Perf ≥ 0.75
|
Closing: a blind A/B audience review does not support this change. Five reader personas reviewed the article twice, once with the sponsor block in its committed position and once with it moved after the intro. Reviewers were blind to which variant they held, the variants were counterbalanced, and the sponsor block was never mentioned in the review brief — placement had to surface on its own. Four of five judged the moved placement premature or inconsistent.
The one dissent was the practitioner, which preferred the moved version — but its actual complaint was that The more useful finding: both skim readers stopped at paragraph two, in both variants, for reasons unrelated to placement. The post opens on the module's biography and the first line describing what it does is four paragraphs down. So readers are not lost to distance from the sponsor block; they are lost before they reach any of it. Moving the block up relocates the ask to a place they have already decided to leave. Recorded for whoever picks this up: the sponsor block placement is already correct. The levers worth pulling instead are the opening, the position of the install command, and section headings. |
Why
The sponsor block sits between 85% and 100% of the way down every article — dead last in five of eight — while only 19 of 135 newsletter readers (about 14%) scroll to the bottom. So roughly 86% of readers never see it at all.
That is a position problem, not a copy or CTA-quality problem.
Placing it after the intro is also the better editorial call: "here is the module, and here is where its code lives" belongs right after you have said what the post is about, not as a footnote 27 blocks later. Not at the very top, which would read as asking before anything has been delivered.
What moved
custom-formatters-410-20260731jsonapi-views-120-20260812drupal-site-settings-over-jsonapi-consumer-20260826Each block moves to the end of the article's opening section. On
drupal-site-settingsthe block was alone in its own section, so the emptied section wrapper was removed too — hence 29 nodes becoming 28.Not included
field-tokens-200deliberately left alone. Its block is at 8/9, but the whole post is only 9 nodes, so it is already effectively visible — and it has the site's best engagement at 0.83. Raw depth percentage is misleading on short posts.decoupling-configuration,layout-paragraphs,what-no-images— 3 to 6 sessions each over 90 days. The effort exceeds any possible return.two-frontends-one-drupal-one-codebase-20260902is at 48/48 and would benefit most, but it is not committed yet, so it cannot be included here. Worth fixing before it is published, while it costs nothing.Verification
Mechanical, and checked rather than assumed:
lint:all, andnuxt typecheckall clean.Two things that need your eye
custom-formattersnow ends on a code block. The repository block was the last node, so removing it leaves the article closing oncomposer require. That is an abrupt ending and probably wants a closing line. The other two still end on prose.jsonapi-viewsnow has two sponsor touchpoints — the moved repository block near the top, and the existing "If your project depends on this work" jumbotron at node 24. That may be one ask too many; removing or softening the jumbotron is an editorial call rather than a mechanical one.Important: Drupal is the source of truth
This changes only the synced frontend JSON, so the next
sync-contentrun will revert it. It is deliberately shaped as a preview so the placement can be judged before committing to it.If the placement is right, the same reordering has to be made in Drupal — the frontend change is not the durable one.