Next.js SEO audit
Catch client-only content, hydration-dependent links, missing metadata exports, trailing-slash redirect chains and stale ISR canonicals — then merge the fix from a pull request.
Next.js can produce perfectly crawlable HTML, but every rendering choice — server components, client components, ISR, dynamic routes — is also a way to hide content from a crawler without noticing. CrawlX crawls the deployed app in the cloud with 150+ technical checks, compares the raw HTML response with the rendered page, and because a Next.js app almost always lives in a Git repository, it can open the fix as a pull request against your branch.
Next.js issues CrawlX detects
The problems that show up again and again on Next.js sites — grouped by root cause and ranked by how much of the site they touch.
01Content that only exists after client-side rendering
Data fetched in useEffect or behind a loading state is absent from the HTML response. CrawlX crawls both the raw response and the rendered DOM (Professional and above) and flags pages whose headings, body text or metadata appear only after JavaScript runs.
02Links that depend on hydration
Navigation built with onClick handlers and router.push on non-anchor elements produces no href for a crawler to follow. CrawlX reports pages that are only reachable through rendered links and orphan pages that the raw HTML never links to.
03Missing or duplicated metadata exports
Route segments without a metadata or generateMetadata export inherit the layout's default, so many pages share one title and description. CrawlX reports missing, duplicate and over-length titles and descriptions and groups them by route pattern.
04Trailing-slash and redirect chains
A trailingSlash setting that disagrees with internal links, plus redirects in next.config stacked on hosting-level rules, creates chains and 308 loops. CrawlX follows every redirect, reports hop count and final status, and lists the internal links that trigger them.
05Stale or relative canonicals from ISR and metadataBase
Canonical and Open Graph URLs built without metadataBase come out relative, and pages regenerated on a long revalidate window can keep an old canonical after a domain or path change. CrawlX validates every canonical for absoluteness, self-reference and cross-domain targets.
06Soft 404s on dynamic routes
A dynamic route that renders an empty state instead of calling notFound() returns 200 for URLs that do not exist. CrawlX detects thin pages returning 200 on parameterised routes and reports them as soft 404 candidates.
07Image optimisation gaps
Images outside next/image, missing sizes attributes, or the LCP image without priority all show up in the rendered page. CrawlX reports oversized and unsized images and, on Professional and above, measures Core Web Vitals in a real browser.
08Duplicate routes from query strings and casing
Search and filter pages that put state in query strings, and routes reachable in more than one casing, multiply indexable URLs. CrawlX groups parameter variants and case variants and reports which are canonicalised.
Crawl in the cloud, fix where the code lives
Next.js apps live in Git, so fixes arrive as pull requests against your connected GitHub repository, with the affected route count in the description.
The Next.js workflow
- CrawlX crawls the deployed app from the cloud — production or a preview URL. Nothing is added to the app.
- JavaScript rendering (Professional and above) runs pages in headless Chromium so client components and hydration-dependent content are audited as Google renders them.
- Connect the GitHub repository through the CrawlX GitHub App. For high-impact issues — a metadata export, a canonical in generateMetadata, a redirect rule, an anchor instead of an onClick — CrawlX drafts the change and opens a pull request on its own branch. It never pushes to your default branch.
- The REST API and signed webhooks (Professional and above) let you trigger a crawl on deploy and act on the result from CI.
Next.js SEO questions
Does CrawlX see what Googlebot sees on a Next.js app?
On Professional and above CrawlX renders each page in headless Chromium and crawls the rendered DOM, alongside the raw HTML response. Differences between the two — content, links or metadata present only after hydration — are reported as issues.
Can CrawlX open pull requests against my Next.js repo?
Yes. Install the CrawlX GitHub App on the repository and CrawlX drafts fixes for high-impact issues as pull requests on a separate branch. You review and merge; it never pushes to your default branch. AI drafting is bring-your-own-key.
Does CrawlX work with the App Router and the Pages Router?
CrawlX audits the deployed output, so both routers are covered. The findings are the same — missing metadata, canonical problems, redirect chains — and the pull request targets whichever file produces the page.
Can I run CrawlX on a preview deployment?
Yes. Point a project at any reachable URL. Preview environments that require a bypass header or authentication need to allow the crawler through; production and public previews work as-is.
SEO audits for other stacks
Audit your Next.js site now
Your first cloud crawl runs free — 500 URLs, no credit card, nothing to install.