fix: improve SEO with pre-rendering and dynamic meta tags
Critical SEO improvements to fix Google Search Console indexing: ## Sitemap Updates: - Added missing Invoice Editor and What's New pages - Updated all lastmod dates to 2025-10-15 - Increased editor tools priority to 0.9 - Added organizational comments - Fixed /whats-new route (was /release-notes) ## Pre-rendering Implementation: - Added react-snap for static HTML generation - Configured to pre-render all tool pages - Solves React SPA indexing issue - Crawlers now see full HTML content ## Dynamic Meta Tags: - Added react-helmet-async for SEO management - Created reusable SEO component with: - Dynamic titles and descriptions - Open Graph tags (Facebook) - Twitter Card tags - JSON-LD structured data - Canonical URLs - Wrapped App with HelmetProvider - Added SEO to Home page ## Route Fixes: - Added /whats-new route (primary) - Kept /release-notes as fallback - Consistent routing across app ## Documentation: - Created comprehensive SEO_FIX_GUIDE.md - Step-by-step Google Search Console instructions - Troubleshooting guide - Timeline expectations - Testing procedures These changes will dramatically improve Google indexing and search visibility.
This commit is contained in:
30
package.json
30
package.json
@@ -32,8 +32,10 @@
|
||||
"react": "18.3.1",
|
||||
"react-diff-view": "^3.3.2",
|
||||
"react-dom": "18.3.1",
|
||||
"react-helmet-async": "^2.0.5",
|
||||
"react-router-dom": "6.26.2",
|
||||
"react-scripts": "5.0.1",
|
||||
"react-snap": "^1.23.0",
|
||||
"reactflow": "^11.11.4",
|
||||
"serialize-javascript": "^6.0.0",
|
||||
"web-vitals": "^2.1.4"
|
||||
@@ -46,10 +48,36 @@
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
"build": "react-scripts build",
|
||||
"build": "react-scripts build && react-snap",
|
||||
"build:no-snap": "react-scripts build",
|
||||
"test": "react-scripts test",
|
||||
"eject": "react-scripts eject"
|
||||
},
|
||||
"reactSnap": {
|
||||
"inlineCss": true,
|
||||
"minifyHtml": {
|
||||
"collapseWhitespace": false,
|
||||
"removeComments": false
|
||||
},
|
||||
"puppeteerArgs": [
|
||||
"--no-sandbox",
|
||||
"--disable-setuid-sandbox"
|
||||
],
|
||||
"include": [
|
||||
"/",
|
||||
"/object-editor",
|
||||
"/table-editor",
|
||||
"/invoice-editor",
|
||||
"/url",
|
||||
"/base64",
|
||||
"/beautifier",
|
||||
"/diff",
|
||||
"/text-length",
|
||||
"/whats-new",
|
||||
"/privacy",
|
||||
"/terms"
|
||||
]
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": [
|
||||
"react-app",
|
||||
|
||||
Reference in New Issue
Block a user