feat(frontend): add per-page SEO, 404 page, OG tags, and sitemap updates #4
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: shekhar/windows-iso-downloader#4
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/seo-improvements"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
react-helmet-async(incompatible with React 19) with React 19's native document metadata hoisting —<title>,<meta>,<link>rendered directly in JSX are auto-hoisted to<head>, no library needed<title>,<meta name="description">,<link rel="canonical">, and Open Graph tags to all 6 pagesSoftwareApplicationschema on HomePage andBreadcrumbListon ProductDetailPageNotFoundPagewithnoindexmetaindex.htmlwithog:site_name,og:image,og:type, and Twitter card tags as static pre-JS fallbacks; remove duplicate static canonical (each page sets its own)sitemap.xmlwith product IDs 3321 and 3324 and<lastmod>datesTest plan
<head>on/productsand/product/3113— correct<title>,<meta name="description">, and<link rel="canonical">per pagenoindexin headSummary by CodeRabbit
Documentation
New Features
Chores
ℹ️ Recent review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID:
2b331dbe-911e-4856-845a-76a0c472fc44📥 Commits
Reviewing files that changed from the base of the PR and between
d0a70496daand86da27cb8c.⛔ Files ignored due to path filters (5)
frontend/public/og-image.pngis excluded by!**/*.pngfrontend/public/screenshots/msdl-1.jpgis excluded by!**/*.jpgfrontend/public/screenshots/msdl-2.jpgis excluded by!**/*.jpgfrontend/public/screenshots/msdl-3.jpgis excluded by!**/*.jpgfrontend/public/screenshots/msdl-4.jpgis excluded by!**/*.jpg📒 Files selected for processing (11)
README.mdfrontend/index.htmlfrontend/public/sitemap.xmlfrontend/src/App.tsxfrontend/src/pages/AboutPage.tsxfrontend/src/pages/DisclaimerPage.tsxfrontend/src/pages/HomePage.tsxfrontend/src/pages/NotFoundPage.tsxfrontend/src/pages/PrivacyPolicyPage.tsxfrontend/src/pages/ProductDetailPage.tsxfrontend/src/pages/ProductsPage.tsx📝 Walkthrough
Walkthrough
The PR migrates document metadata management from imperative
useEffect-based DOM updates to declarative JSX-rendered head elements across all page components. Static SEO assets are updated, 404 handling is extracted into a dedicated component, and all page components adopt a consistent pattern for rendering title, description, canonical, and OpenGraph metadata inline.Changes
SEO Metadata and Head Tag Architecture
README.md,frontend/index.html,frontend/public/sitemap.xmllastmodtimestamps for static pages and product URLs, with two new product entries; index.html<head>expands with Open Graph (og:site_name,og:url,og:image) and Twitter card tags.frontend/src/App.tsx,frontend/src/pages/NotFoundPage.tsxNotFoundPagecomponent instead of inline 404 JSX; NotFoundPage renders 404 UI with document metadata and home navigation link, scrolling to top on mount.frontend/src/pages/HomePage.tsxSITE_URLconstant and SoftwareApplication JSON-LD schema; useEffect removes title/meta DOM updates while retaining data fetch; component now renders inline<title>, description meta, canonical link, OpenGraph tags, and JSON-LD<script>before existing hero and content sections.frontend/src/pages/AboutPage.tsx,frontend/src/pages/DisclaimerPage.tsx,frontend/src/pages/PrivacyPolicyPage.tsxuseEffecttitle/meta updates withSITE_URLconstant and render inline head elements (title, description, canonical, OpenGraph) in a fragment alongside existing animated content.frontend/src/pages/ProductsPage.tsx,frontend/src/pages/ProductDetailPage.tsxSITE_URLand inline head rendering, removes useEffect title/meta side effects, and updates header text. ProductDetailPage derives dynamic SEO values (pageTitle,pageDescription,canonicalUrl,breadcrumbJsonLd) from component state, removes direct DOM updates from fetch effect, renders conditional breadcrumb JSON-LD and noindex robots meta for not-found states, and addsaria-hidden="true"to WinLogo.Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~25 minutes
Poem
✨ Finishing Touches
📝 Generate docstrings
🧪 Generate unit tests (beta)
feat/seo-improvementsComment
@coderabbitai helpto get the list of available commands and usage tips.