Missing page title in React
The <title> is the single strongest on-page ranking signal and the clickable headline in every search result. With none, Google shows your raw URL and browser tabs show a fragment of the address. AI scaffolds generate the app body but leave the document <head> alone, so the title never gets set for real routes.
Symptoms
How VibeCheck catches it
In your widget · Problems
Missing page title
To your coding agent · MCP
agent › get_detected_issues
→ { detector: "seo", issue: "Missing page title", threshold: "document.title is empty" }
The same string in your widget and in your agent’s context — no screenshot, no copy-paste.
Root causes
The fix for React
React 19 hoists a <title> rendered anywhere in your tree into the document head — no helmet library needed. On React 18, use react-helmet-async.
export function PricingPage() {
return (
<>
<title>Pricing — Acme</title>
{/* page content */}
</>
)
}Steps
- Decide a unique, keyword-led title for the route
- Set it via your framework’s head/metadata mechanism
- Verify it appears in the browser tab and in view-source
FAQ
- How long should a page title be?
- Aim for 30–60 characters. Google truncates around 60, so keep the important keywords first and the brand name last.
- Should every page have a different title?
- Yes. Duplicate titles across routes confuse search engines about which page to rank. Give each route a title that reflects its unique content.
- Where should the brand name go?
- At the end, after a separator: “Pricing — Acme”. Front-load the page-specific keywords because the end is what gets truncated.