A simplified Next.js SEO checklist. Coding agents usually skip these six things even with a server-rendered nextjs site.
Key Takeaways
- Next.js renders your pages on the server, one of six things that decide whether a page ranks and gets cited, and the only one nobody has to ask for.
- The other five, a title per page, a sitemap and robots file on the live domain, one address per page, JSON-LD from the page's own content and next/image on every picture, are a sentence each in the Next.js SEO checklist below.
- Ask your agent to prerender every public page, because pages built per visit send their title after the first chunk of HTML to anything off Next.js's built-in bot list, which doesn't name the ChatGPT, Claude or Perplexity crawlers.
Coding agents reach for Next.js the moment a prompt mentions a blog or SEO, and rightly, because it builds every page on the server and hands crawlers finished HTML. That reputation is why so many founders sit a month after launch with a site built in an afternoon (Webflow never saw it coming) and a Search Console full of pages Google has seen and shelved.
Rendering is one of six things that decide whether Next.js SEO works, and the only one the framework does by itself. The other five are a few lines of code each, an agent skips them unless it's told, and this post is what to tell it.
Body
Is Next.js good for SEO? Yes, for rendering
Next.js builds pages on the server by default, so Google and the crawlers behind ChatGPT and Perplexity get your words on the first request instead of an empty shell to fill by running JavaScript. The evidence on which crawlers run JavaScript is in our JavaScript SEO post.
Six Next.js SEO best practices your agent skipped
The words load after the page does
Every page in the App Router, the folder layout current Next.js projects use, is built on the server unless its file starts with "use client", which turns it into a Client Component, code that runs in the visitor's browser. Agents flip that switch the moment a section needs a button, and if the same component also fetches the copy, the server sends a placeholder and the words arrive later, which for a crawler that doesn't run JavaScript means never.
Every page has the same title, or none
A page's metadata, the title and description Google shows in results, comes from one export per page, a metadata object or a generateMetadata function, and only from server-built pages, so a "use client" page loses its title with its words. Agents set it once in the root layout and forget the pages, so a 40-page site turns up in Google as 40 results called "Acme", which Google's title guidance calls boilerplate and rewrites. Pages built fresh on each visit have a further catch, because their title can arrive after the first chunk of HTML unless the visitor is on Next.js's built-in bot list, which names Bingbot, Twitterbot, Slackbot and Google's secondary crawlers but, as of 21 September 2026, not GPTBot, ClaudeBot or PerplexityBot. Prerendered pages, built once ahead of time, have the title baked in, which is why the prompt below asks for them.
There's no sitemap, or it points at the wrong address
A sitemap is the list of pages you want indexed and a robots file tells crawlers what they may fetch, and Next.js serves both from one file each, sitemap.ts and robots.ts, but nothing creates them until asked, and Google says a sitemap matters most for a new site with few external links, which is yours. The subtler failure is an agent hardcoding the base address, so the sitemap lists localhost or the preview deployment, which Vercel marks noindex, a map of pages Google was told to ignore.
Every page answers at two addresses
Google treats yoursite.com/pricing and its www, http and trailing-slash versions as four pages until something tells it otherwise, and if nothing does, it picks one itself, which is what "Duplicate without user-selected canonical" in Search Console means. Next.js redirects /about/ to /about on its own, and the rest is redirects plus the canonical tag, one line in the head that says which address counts, set in the same metadata export, which agents leave out because nothing visibly breaks without it.
There's no structured data, or it describes last quarter
Structured data is a block of JSON-LD, a small script that tells machines what the page is, who wrote it and when, and Next.js recommends a script tag straight in the page. Google calls JSON-LD its preferred format, insists it match what's visible, and lists it among the fundamentals for AI Overviews, no special schema needed. Agents skip it, or generate it once with a placeholder author and a launch date that never changes. Once machines can read you, our website GEO checklist covers getting cited.
Your hero image is four megabytes and Google noticed
Core Web Vitals are Google's three speed scores, how fast the biggest thing on screen appears (under 2.5 seconds), how quickly the page responds to a tap (under 200 milliseconds) and how much it jumps while loading (under 0.1), which Google says line up with what its ranking systems reward. Next.js ships an Image component that resizes, compresses and lazy-loads pictures and holds their space, and an agent that pasted a plain img tag with a 4,000-pixel hero got none of that.
The Next.js SEO checklist
The six Next.js SEO checks for an AI-built site, accurate as of September 2026.
The bottom line is, if you never asked your agent for these, assume you have all six until the checks say otherwise.
The prompt fix: paste this before the next build
Everything above collapses into one paragraph for Claude Code, Codex or Cursor, one sentence per item.
"Build this site with the Next.js App Router. Fetch all page content in Server Components and limit 'use client' to interactive components. Give every public page its own title and meta description through generateMetadata with a title template in the root layout, a self-referencing canonical through metadata alternates, and JSON-LD generated from the same data as the visible content. Add sitemap.ts and robots.ts that use the production domain. Redirect www and http to one https host. Use next/image for every image with width, height and alt set. Prerender every public page, and before you finish, fetch a built page without a browser and show me that the title, description, canonical, JSON-LD and body copy are all in the initial HTML."
For the code behind each line, Strapi's Next.js SEO guide covers both routers in more depth than we do here.
How Fimo keeps your Next.js SEO working after launch
The six checks come undone with every page an agent or a teammate adds, so we built Fimo to take that upkeep off your desk.
Here's how it works.
You connect the repository your coding agent built, whatever agent wrote it and whatever stack it chose, Next.js among many others. For an existing site that's one command, npx fimo@latest link, which doesn't replace your code or change your framework.
Fimo serves the site server-rendered, with titles, descriptions and social cards on every page, never blank or duplicated, and a sitemap and robots file generated and kept in sync as pages ship and retire.
The SEO audit goes over titles, descriptions and internal links on the schedule you set, the broken-link sweeper walks every URL, the post-deploy check runs after every release, and asset optimisation is an action the agent stops and asks you about. Core Web Vitals stay yours to read in Search Console.
Every run lands in its own branch with a report, a preview and a diff, and nothing reaches production until someone on your team merges it.
Why this doesn't get done, and what a month costs
The site already runs on Next.js, so the SEO box looks ticked, the person who prompted it went back to running the company, and agents don't volunteer any of this because a preview looks finished without it. Meanwhile every post you publish enters Google under the homepage's title with no canonical, and since AI Overviews only draw on indexed pages eligible for a snippet, a duplicate never gets the chance.
Rendering was the first job of six
Next.js made your pages readable, not findable, and the five jobs it left are a prompt away. Try Fimo for free and let the agents keep the list ticked while you run the company!


