SEO for developers: how to render pages crawlers can read, return the right HTTP codes, ship the essential head tags, pass Core Web Vitals and stay visible to AI.

In short
For a developer, SEO means making every important page reachable, renderable and unambiguous for crawlers. Serve the main content in the initial HTML (server-side rendering or static generation), return honest HTTP status codes, put the title, meta description, canonical and robots directives in the server response, link with real <a href> elements, meet the Core Web Vitals thresholds and add JSON-LD structured data. Most AI crawlers do not execute JavaScript, so content that only exists after hydration is invisible to ChatGPT, Claude and Perplexity.
Want to go further? Ask
Quick quiz
Is SEO right for you, and how should you start?
4 quick questions to see if Google can bring you customers.
Our advice for you
Sorank is the right solution for you
People search for what you sell and you can wait a few months: Sorank finds the right searches, writes and publishes the articles, and gets you links.
Sorank matches your answers
Test it for 3 days on your own site, or start with a free audit to see where you stand.
3 days free, then stop whenever you want. 90-day money-back guarantee.
SEO for developers is the part of search optimization that lives in code: templates, routing, rendering, headers and performance. Marketers choose keywords and write content, but a wrong status code, a client-only route or a stray noindex can erase that work in one deploy. Google's own JavaScript SEO basics describe three phases (crawling, rendering, indexing) and each one has failure modes that only developers can fix. This guide covers them in the order they break.
| Area | Developer responsibility | Typical symptom when it breaks |
|---|---|---|
| Rendering | Main content and links present in the server HTML | Pages indexed with empty or partial content |
| Status codes | 200, 301, 404, 410, 5xx returned truthfully | Soft 404s, error pages indexed, deleted pages still ranking |
| Head tags | Unique title, description, canonical, robots, hreflang | Duplicates, wrong URL ranking, pages missing from the index |
| Crawl control | robots.txt, XML sitemap, internal links, parameters | Important pages not discovered, crawl wasted on filters |
| Performance | Core Web Vitals on real mobile users | Poor page experience, lower conversions |
| Structured data | Valid JSON-LD that matches visible content | No rich results, entity confusion |
| AI access | Allowed AI user agents, content readable without JavaScript | Brand absent from ChatGPT and Perplexity answers |
Googlebot renders JavaScript, but in a second step that can be delayed, and Google itself writes that "server-side or pre-rendering is still a great idea" because it is faster for users and crawlers and because not all bots run JavaScript. That last point now matters more than ever: in its December 2024 analysis The rise of the AI crawler, Vercel found that "none of the major AI crawlers currently render JavaScript", naming GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot and PerplexityBot among others. Gemini, which uses Google's infrastructure, is the exception.
| Rendering mode | What crawlers receive | SEO fit |
|---|---|---|
| Client-side rendering (CSR) | An almost empty HTML shell, content after JavaScript runs | Weak: delayed for Google, invisible to most AI crawlers |
| Server-side rendering (SSR) | Full HTML on every request | Strong for dynamic pages |
| Static generation (SSG) | Full HTML built at deploy time | Strongest for content that changes rarely |
| Incremental regeneration (ISR) | Static HTML refreshed on a schedule or on demand | Strong for large catalogs and blogs |
Two rules apply whatever the framework. Links must be <a> elements with an href attribute: Google states it can only discover links in that form, so buttons with click handlers and fragment-based routes are dead ends. And each route needs its own URL, without #, that returns its content directly. Our guides to JavaScript SEO, single-page application SEO and Next.js SEO go into framework-specific details.
Status codes are instructions to crawlers. Google's documentation on HTTP status codes and network errors describes how each family is handled:
Check what your server really sends with a HTTP headers checker, and keep redirect chains to a single hop: our article on SEO redirects covers migration patterns.
Every indexable page needs a unique title and description, a self-referencing canonical, and, on multilingual sites, hreflang annotations. Keep them in the server response:
<title>Running shoes for flat feet | Example</title>
<meta name="description" content="Tested picks, sizes and prices.">
<link rel="canonical" href="https://example.com/running-shoes-flat-feet">
<link rel="alternate" hreflang="fr" href="https://example.com/fr/chaussures-pieds-plats">
<meta name="robots" content="index, follow">The canonical tag must point to the URL you want ranked, with the exact protocol, host and trailing slash convention your site uses.
Watch out
Never rely on JavaScript to remove a noindex. Google states that when it finds a noindex tag it may skip rendering, so a page that ships noindex in the HTML and removes it client-side can stay out of the index.
Search engines index URLs, so the URL scheme is an SEO decision. Use lowercase, hyphen-separated, readable paths; pick one trailing slash convention and redirect the other; and keep one URL per piece of content. Filters, sorting and tracking parameters multiply URLs without adding content: canonicalize them to the clean version, and do not link to parameter combinations you do not want crawled.
Internal links carry both discovery and importance. Render navigation, breadcrumbs and related-content blocks on the server, give paginated lists plain links to each page, and avoid infinite scroll without paginated URLs behind it. A product or article that is only reachable through site search or a JavaScript filter is, for a crawler, an orphan page.
robots.txt controls crawling, not indexing: a blocked URL can still appear in results if other pages link to it. To keep a page out of the index, let it be crawled and return noindex. Generate the XML sitemap from your routes or database, list only canonical 200 URLs, and update lastmod only when content really changes. Test your rules with a robots.txt checker before each release, and never deploy a staging robots.txt with "Disallow: /" to production.
Google uses Core Web Vitals as part of its page experience signals. According to web.dev, a page is good when it meets these thresholds at the 75th percentile of real page loads, on mobile and desktop:
| Metric | Measures | Good threshold | Common developer fixes |
|---|---|---|---|
| LCP (Largest Contentful Paint) | Loading | 2.5 s or less | Preload the hero image, server-render above-the-fold content, use a CDN |
| INP (Interaction to Next Paint) | Responsiveness | 200 ms or less | Split long tasks, defer third-party scripts, reduce hydration cost |
| CLS (Cumulative Layout Shift) | Visual stability | 0.1 or less | Set width and height on media, reserve space for ads and embeds |
INP replaced First Input Delay as a stable Core Web Vital in 2024. Use field data (Search Console, the Chrome UX Report) to judge, and lab tools to debug. Our glossary entry on Core Web Vitals lists the tools.
Use JSON-LD in a script tag, rendered on the server, describing what is visible on the page:
<script type="application/ld+json">
{"@context": "https://schema.org", "@type": "Article",
"headline": "Running shoes for flat feet",
"datePublished": "2026-10-01",
"author": {"@type": "Person", "name": "Jane Doe"}}
</script>Generate it from the same data as the page so the two never diverge, validate it in CI, and avoid injecting it through a tag manager. A schema generator gives a starting template for common types.
Tip
Add SEO checks to your pipeline: fail the build if an indexable template has no title or canonical, if a route returns 200 for an unknown slug, or if production robots.txt contains "Disallow: /". These regressions are cheap to catch before deploy and expensive after.
AI visibility starts with access. Decide which AI user agents you allow (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot and others) and write explicit rules in robots.txt; our guide to robots.txt for AI crawlers explains the difference between training and search bots. Then make sure the text, prices, specs and FAQ are in the initial HTML, use semantic headings and tables rather than images of text, and keep pages light enough to fetch quickly. An llms.txt file can summarize your key pages for AI tools, but no major assistant has confirmed relying on it, so treat it as optional.
Sorank is our product: an autopilot SEO and GEO software. Developers mostly meet it through its integrations: it publishes articles to WordPress, Shopify, Webflow or Wix, or to any custom stack through a webhook, as described on the installation page. Its SEO chat answers questions about your site in conversation, and AI mention tracking checks every week whether ChatGPT, Claude and Gemini cite your brand.

The short version: ship complete HTML, honest status codes and correct head tags from the server, then measure performance on real users. That serves Googlebot and the AI crawlers that do not run JavaScript. To fill a well-built site with content that ranks, see Sorank's plans, from $49 per month with a 3-day free trial.
Not always for Google, which renders JavaScript, but it adds delay and risk, and most AI crawlers do not execute JavaScript at all. For pages that must rank or be cited, serve the main content and links in the initial HTML with server-side rendering, static generation or prerendering, and keep client-side rendering for interactive parts.
Both tell Google the page is gone, and Google stops using the URL over time in either case. A 410 states the removal is intentional and permanent, which some teams prefer for content they deleted on purpose. What matters most is not returning a 200 with an error message, which creates soft 404s.
They are part of Google's page experience signals, which Google describes as one factor among many, with relevance and content quality weighing more. In practice they act as a tiebreaker between similar pages and have a strong effect on conversions, so meeting the thresholds is worth the effort.
THEY TRIED SORANK BEFORE YOU
