x
This commit is contained in:
1 parent
8f466f8d31
commit
3c4bb06003
6 files changed
+281
-4
No files matched your search
@@ -0,0 +1,102 @@
|
||||
# Next.js SEO And Build Checklist
|
||||
|
||||
Use this checklist for audits, implementation review, and final handoff. Apply only the sections relevant to the task.
|
||||
|
||||
## Discovery
|
||||
- Confirm Next.js version from `package.json` and lockfile.
|
||||
- Confirm router type: App Router, Pages Router, or hybrid.
|
||||
- Confirm package manager and scripts.
|
||||
- Review `next.config.*`.
|
||||
- Review deployment target if visible in repo.
|
||||
- Locate route definitions and content/data source.
|
||||
- Locate existing SEO helpers, metadata builders, schema builders, sitemap, robots, redirects, and middleware.
|
||||
|
||||
## Metadata
|
||||
- Unique title per indexable page.
|
||||
- Unique meta description per indexable page.
|
||||
- Canonical URL is absolute, normalized, and self-referencing.
|
||||
- Root title template is intentional.
|
||||
- Open Graph title, description, URL, type, image, and site name are correct.
|
||||
- Twitter card values are correct.
|
||||
- Robots directives match index policy.
|
||||
- Metadata does not depend on browser-only state.
|
||||
- Dynamic metadata handles missing records with `notFound()` or a clear fallback policy.
|
||||
|
||||
## Structured Data
|
||||
- JSON-LD type matches visible page content.
|
||||
- Entity IDs and URLs match canonical URLs.
|
||||
- Required fields are present.
|
||||
- Recommended fields are present when source data exists.
|
||||
- Product price, availability, review, SKU, brand, and image data match visible product content.
|
||||
- Article author, date, modified date, headline, image, and publisher match visible article content.
|
||||
- Breadcrumb JSON-LD matches visible or implied navigation hierarchy.
|
||||
- JSON serialization is safe.
|
||||
|
||||
## Crawl Paths
|
||||
- Main navigation uses crawlable links.
|
||||
- Important listing/detail pages are reachable without form-only or script-only flows.
|
||||
- Pagination and filters have an intentional index/canonical/noindex policy.
|
||||
- Empty states do not create thin indexable pages unless intended.
|
||||
- `404`, `notFound()`, redirects, and unpublished states behave correctly.
|
||||
|
||||
## Sitemap
|
||||
- Uses canonical production origin.
|
||||
- Includes only indexable canonical URLs.
|
||||
- Excludes private, draft, duplicate, auth, cart, checkout, account, search-result, and noindex routes.
|
||||
- Includes localized alternates when supported by source data.
|
||||
- Uses realistic `lastModified`.
|
||||
- Handles large URL sets with sitemap splitting when needed.
|
||||
- Is referenced from robots.
|
||||
|
||||
## Robots
|
||||
- Allows intended public pages.
|
||||
- Disallows private or duplicate areas.
|
||||
- Does not block static assets needed for rendering.
|
||||
- References the sitemap.
|
||||
- Does not accidentally block the whole site in production.
|
||||
|
||||
## International SEO
|
||||
- Locale URL strategy is consistent.
|
||||
- Canonical points to the locale-specific URL.
|
||||
- `hreflang` alternates include only real translated equivalents.
|
||||
- `x-default` is intentional.
|
||||
- Localized metadata is not copied blindly from another language.
|
||||
- Slugs, breadcrumbs, schema, and Open Graph data respect locale.
|
||||
|
||||
## Rendering
|
||||
- Crawl-critical content is present in server-rendered HTML.
|
||||
- Client Components are limited to interactive parts.
|
||||
- Route rendering mode is intentional: static, ISR, dynamic, or client-only.
|
||||
- `generateStaticParams` covers expected static routes.
|
||||
- Cache and revalidation behavior match content freshness.
|
||||
- Accidental dynamic rendering has been checked.
|
||||
|
||||
## Performance
|
||||
- LCP image is optimized and sized.
|
||||
- Non-critical images are lazy-loaded.
|
||||
- Fonts are optimized and do not cause avoidable layout shift.
|
||||
- Third-party scripts use the correct strategy.
|
||||
- Bundle size impact is checked for new libraries.
|
||||
- Layout shift risks are checked for banners, hero media, product grids, and dynamic content.
|
||||
|
||||
## Accessibility Signals
|
||||
- One clear `h1` per primary page.
|
||||
- Heading hierarchy is meaningful.
|
||||
- Images have useful alt text or empty alt for decorative images.
|
||||
- Links have descriptive accessible names.
|
||||
- Product/article/category content is readable without visual-only cues.
|
||||
|
||||
## Build Verification
|
||||
- Run typecheck.
|
||||
- Run lint.
|
||||
- Run focused tests if available.
|
||||
- Run production build.
|
||||
- Inspect build output for rendering mode changes.
|
||||
- Check warnings related to metadata, dynamic server usage, image config, middleware, redirects, or unsupported runtime.
|
||||
|
||||
## Handoff
|
||||
- Summarize changed SEO behavior.
|
||||
- List affected routes and files.
|
||||
- Include verification commands and results.
|
||||
- Call out unresolved source-data, CMS, backend, deployment, or business-policy decisions.
|
||||
- Identify the next owner when decisions are outside frontend/SEO implementation.
|
||||
Reference in new issue
Block a user