fix(seo): keep the preview image on the home page only - #36
Merged
thoda-dev merged 1 commit intoAug 31, 2026
Merged
Conversation
There was a problem hiding this comment.
🟢 Approval recommended
The meta tags are now scoped so only the home page emits the large preview image, matching the stated SEO/unfurling behavior change without affecting other routes’ metadata beyond the intended defaults.
Pull request overview
Moves the large Open Graph/Twitter preview image configuration off the app-wide head and into the home page so only / (and locale-prefixed variants) unfurls with the large logo card, while all other routes use a compact summary Twitter card without an image.
Changes:
- Removed app-wide
og:image/twitter:imageand switched the defaulttwitter:cardtosummaryinapp.vue. - Added home-page-only
useSeoMetainpages/index.vueto restoreog:imageandsummary_large_imagefor the home route.
File summaries
| File | Description |
|---|---|
| apps/app/app/pages/index.vue | Adds home-only OG/Twitter image + summary_large_image meta using the request origin. |
| apps/app/app/app.vue | Removes global card image meta and defaults twitter:card to summary for non-home routes. |
Review details
- Files reviewed: 2/2 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
thoda-dev
deleted the
remove-image-from-preview-on-other-pages-than-home
branch
August 31, 2026 19:56
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.
What this changes
Closes #35
The card image and the large Twitter card move out of
app.vueand intopages/index.vue, so only the home page unfurls with the logo. Everywhere elsetwitter:cardis nowsummaryand no image is declared, which gives a compact two-line preview.Why
Every route shared the app-wide meta, so a paste link expanded into a 1200×630 block that pushed the conversation off screen — carrying a title and description identical for every paste, so the space bought the reader nothing. Issue #35 has the longer version.
Two things about the shape of the fix:
It is home-page-only, not everything-but-
/p/. The legal pages and the auth screens have no more use for a full-width logo than a paste does, and a rule with one exception ages better than a rule with a growing list of them.pages/index.vuecovers/,/frand every other locale prefix, since they all resolve to that page.twitter:carddrops tosummaryrather than being removed. Twitter needs a card type to render a preview at all, andsummaryis the compact one. Discord and Slack ignore it and simply find no image to draw.Nothing about what the tags say changes: title, description,
og:urland the canonical are still set once inapp.vue, still deliberately silent about the paste, andDisallow: /p/is untouched.Checks
pnpm lint,pnpm typecheckandpnpm testpasspnpm db:generate) — no schema changeNone of the three. No server code changes, no i18n key is added or removed, and the change is entirely which
<meta>tags each route emits.Worth knowing when reviewing: Discord, Slack and Twitter cache unfurls for a while, so an already-shared link keeps its old large preview until their cache expires. Fresh links show the new behaviour immediately.
AI assistance
See CONTRIBUTING.md. Disclosure is not held against you: it tells
the reviewer where to look hardest.
No test covers this — the suite is unit tests over pure logic and none of them renders a page — so it was checked by reading the emitted head. Worth confirming by hand against a real unfurler on both a home link and a paste link.