Repository navigation
Give each page its own title, description and canonical - #986
Merged
Merged
Conversation
Six pages shared the sitewide default title and meta description and emitted no canonical, because `export const Head = BaseHead` receives Gatsby's page props rather than the expected values. Since the default was Theia Platform copy, /blogs/, /releases/, /resources/, /support/ and /docs/ all presented themselves as the Platform page. Also points the Theia Platform JSON-LD url at /theia-platform/ instead of the homepage, and makes the sitewide fallback neutral.
JonasHelming
requested review from
ndoschek
and
a balanced review from Copilot
and removed request for
Copilot
October 10, 2026 20:43
Copilot stopped reviewing on behalf of
JonasHelming due to an error
October 10, 2026 20:44
|
ndoschek
approved these changes
Oct 12, 2026
ndoschek
left a comment
Member
There was a problem hiding this comment.
Thanks, LGTM, the pages have their own title, description and self-canonical 👍
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.
Six pages shipped byte-identical titles and meta descriptions and emitted no canonical link at all:
/theia-platform//blogs//releases//resources//support//docs/Cause
export const Head = BaseHead(and= HeadWithPlatformSchemaon the Platform page) passes Gatsby's page props —data,pageContext,location— socanonical,titleanddescriptionall arriveundefinedand fall back to the sitewide defaults. Because those defaults are Theia Platform copy, five unrelated pages presented themselves as the Platform page.The effect isn't limited to those five. Six identical candidates with no canonical dilute the Platform page itself, which ends up competing against the blog index for its own terms.
Changes
Headwith a title, a meta description and a self-canonical.headwithPlatformschema.js— JSON-LDurlpointed athttps://theia-ide.org/(the homepage, which is the Theia IDE); now/theia-platform/.gatsby-config.js— sitewide defaults made neutral, so a new page that forgets itsHeadno longer inherits Platform copy. Comment added explaining the fallback's role.Verified with
gatsby build: six distinct titles, six distinct descriptions, correct self-canonicals on all six.Follow-up, not addressed here
<Layout canonical='/'>appears on most pages butlayout.jsnever reads the prop — it does nothing. That's largely how this went unnoticed: every page looks like it sets a canonical. Left alone to keep this diff focused; worth removing separately.