Technical SEO
11 min read
October 15, 2026

The Developer's Technical SEO Audit Checklist: 12 Checks Before Launch

A battle-tested technical SEO pre-launch checklist for modern web apps. Covers Next.js metadataBase, crawler access, canonical integrity, SSR hydration, Core Web Vitals, and structured data validation.

SS
SiteSensei Engineering Team
Core Web Architecture & SEO

Launching a web application without a technical SEO review frequently leads to months of delayed indexing, duplicate content confusion, and squandered search visibility.

While traditional SEO advice often revolves around keyword research and WordPress plugins, modern web development—built on React, Next.js App Router, edge runtimes, and client hydration—introduces distinct architectural failure modes that generic checklists fail to address.

This guide outlines 12 actionable pre-launch technical checks specifically tailored for frontend and full-stack engineers. Every item distinguishes between strict mandatory requirements (blocking search indexing or causing duplicate content) and recommended best practices.

1

Clean Crawler Access (robots.txt)

Mandatory

Search engines first fetch /robots.txt before discovering pages. A common production misconfiguration is carrying over staging directives (such as Disallow: /) into production, which completely blocks search engines from crawling the site. Conversely, failing to disallow internal API endpoints, rate-limited webhook handlers, and private dashboard pages wastes crawler budget and risks indexing sensitive URLs.

src/app/robots.tstypescript
import type { MetadataRoute } from 'next';

export default function robots(): MetadataRoute.Robots {
  const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://example.com';
  return {
    rules: [
      {
        userAgent: '*',
        allow: ['/', '/blog', '/blog/*'],
        disallow: ['/dashboard/', '/api/', '/auth/'],
      },
    ],
    sitemap: `${baseUrl}/sitemap.xml`,
  };
}
How to Verify

Request your production URL at /robots.txt using curl or a browser. Verify HTTP 200 status, confirm Allow/Disallow paths, and verify the Sitemap URL points to your canonical domain.

2

Absolute XML Sitemap Validation

Mandatory

Your sitemap.xml is the authoritative index provided to search engines. Every URL listed in sitemap.xml must be absolute (including the https protocol), canonical, and return an HTTP 200 OK status. Never include redirected URLs, duplicate aliases, authenticated dashboard URLs, or staging domains.

src/app/sitemap.tstypescript
import type { MetadataRoute } from 'next';

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const origin = process.env.NEXT_PUBLIC_SITE_URL || 'https://example.com';
  const articles = await getPublishedArticles();

  const blogEntries = articles.map((post) => ({
    url: `${origin}/blog/${post.slug}`,
    lastModified: new Date(post.updatedAt),
    changeFrequency: 'weekly' as const,
    priority: 0.7,
  }));

  return [
    { url: origin, lastModified: new Date(), changeFrequency: 'daily', priority: 1.0 },
    { url: `${origin}/blog`, lastModified: new Date(), changeFrequency: 'daily', priority: 0.8 },
    ...blogEntries,
  ];
}
How to Verify

Open /sitemap.xml in a browser or XML validator. Check that all URLs use the canonical domain, have no broken paths, and parse without XML formatting errors.

3

Self-Referencing Canonical URLs

Mandatory

Canonical tags tell search engines which URL represents the single authoritative source of truth. Without canonical tags, search engines may treat tracking parameters (e.g. ?utm_source=twitter or ?ref=producthunt), trailing slash variations (/blog vs /blog/), and protocol variants (http vs https) as separate duplicate pages, diluting page authority.

src/app/blog/[slug]/page.tsxtypescript
export async function generateMetadata({ params }: Props): Promise<Metadata> {
  const { slug } = await params;
  const post = getArticleBySlug(slug);
  if (!post) return {};

  return {
    title: post.title,
    description: post.description,
    alternates: {
      canonical: `/blog/${post.slug}`,
    },
  };
}
How to Verify

Inspect the rendered HTML `<head>` on your target pages and verify `<link rel="canonical" href="https://..." />` matches the exact intended canonical URL.

4

Next.js metadataBase & Absolute URLs

Mandatory

In Next.js App Router, omitting `metadataBase` in root layout causes Next.js to log build warnings and prevents relative metadata URLs (like Open Graph images or canonical paths) from resolving to valid absolute URLs. Setting `metadataBase: new URL(origin)` guarantees that social cards and search engines receive fully qualified URLs.

src/app/layout.tsxtypescript
export const metadata: Metadata = {
  metadataBase: new URL(
    process.env.NEXT_PUBLIC_SITE_URL || 'https://site-sensei-virid.vercel.app'
  ),
  title: {
    default: 'SiteSensei — Free AI-Powered Website Audit Tool',
    template: '%s | SiteSensei',
  },
};
How to Verify

Run `npm run build` and ensure zero warnings regarding missing metadataBase. Check social card previewers or inspect `<meta property="og:image" />` to verify full URLs.

5

Private Route Shielding & Noindex Hygiene

Mandatory

Search engines should only index public marketing pages and published editorial content. User workspace routes (/dashboard), guest audit executions, and authentication forms must be protected with `robots: { index: false, follow: false }` to avoid indexing temporary user audits or leaking customer URLs into search results.

src/app/dashboard/layout.tsxtypescript
export const metadata: Metadata = {
  robots: {
    index: false,
    follow: false,
    googleBot: {
      index: false,
      follow: false,
    },
  },
};
How to Verify

Inspect the `<head>` of any dashboard or authenticated route. Verify `<meta name="robots" content="noindex, nofollow" />` is present.

6

SSR Output & Hydration Crawlability

Mandatory

While Googlebot executes JavaScript, it renders pages in a two-stage process. If primary headings, article bodies, or navigational links are rendered only after client-side state loads (`useEffect` or `fetch` in client components), initial indexing can be delayed or incomplete. Render core content in React Server Components by default.

Terminalbash
# Verify raw server HTML contains your H1 and core text without running JavaScript
curl -sL https://yoursite.com/blog/my-post | grep -E "(<h1|<article|rel=\"canonical\")"
How to Verify

Disable JavaScript in Chrome DevTools (Command Palette > 'Disable JavaScript') and reload the page. Confirm the article text, headings, and navigation render visibly.

7

Single Canonical Host & Clean Redirects

Mandatory

Having both `http://yoursite.com`, `https://yoursite.com`, and `https://www.yoursite.com` return 200 OK causes search engines to split page ranking signals across three domains. Enforce a single primary origin and configure your hosting provider or edge middleware to redirect secondary variants with a single 308/301 hop.

Terminalbash
# Check redirect behavior with curl:
curl -I http://yoursite.com
# Expected: HTTP/1.1 301 Moved Permanently -> https://yoursite.com
How to Verify

Test all protocol and subdomain permutations (`http://`, `http://www.`, `https://www.`) using `curl -IL`. Ensure they resolve to the primary canonical URL in exactly 1 redirect hop.

9

Core Web Vitals: LCP, CLS, and INP Readiness

Recommended

Google's Core Web Vitals directly evaluate user experience signals. Ensure your hero banner uses `next/image` with `priority` and `fetchpriority="high"` to optimize Largest Contentful Paint (LCP). Reserve explicit image dimensions or CSS aspect ratios to eliminate Cumulative Layout Shift (CLS). Keep event callbacks lightweight to ensure responsive Interaction to Next Paint (INP).

src/components/sections/Hero.tsxtsx
<Image
  src="/images/hero-bg.png"
  alt=""
  fill
  priority
  quality={85}
  className="object-cover object-top"
/>
How to Verify

Run Google PageSpeed Insights or Chrome DevTools Lighthouse audit. Target scores of 90+ on mobile and desktop, verifying LCP < 2.5s and CLS < 0.1.

10

Schema.org JSON-LD Verification

Recommended

Structured data helps search engines interpret the entities, authors, and purpose of your application. Validate that all schema URLs match your active canonical domain, ensure logo assets resolve to real image files, and include BreadcrumbList and Article schemas on editorial content.

src/app/blog/[slug]/page.tsxtsx
const articleSchema = {
  '@context': 'https://schema.org',
  '@type': 'TechArticle',
  headline: post.title,
  description: post.description,
  datePublished: post.publishedAt,
  dateModified: post.updatedAt,
  author: {
    '@type': 'Organization',
    name: post.author.name,
  },
};

<script
  type="application/ld+json"
  dangerouslySetInnerHTML={{ __html: JSON.stringify(articleSchema) }}
/>
How to Verify

Paste your rendered HTML into Google's Rich Results Test (search.google.com/test/rich-results) and Schema.org Validator to confirm zero syntax errors or missing required fields.

11

Security Headers as a Quality Signal

Recommended

While security headers are not direct ranking algorithms, website security and user safety are critical quality signals. Configuring Strict-Transport-Security (HSTS), X-Content-Type-Options (nosniff), and X-Frame-Options prevents clickjacking, MIME-type sniffing, and protocol downgrade attacks.

next.config.tstypescript
const securityHeaders = [
  { key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubDomains; preload' },
  { key: 'X-Content-Type-Options', value: 'nosniff' },
  { key: 'X-Frame-Options', value: 'SAMEORIGIN' },
  { key: 'Referrer-Policy', value: 'origin-when-cross-origin' },
];
How to Verify

Test your domain with `curl -I https://yoursite.com` or run a Site Sensei security scan to verify header presence and configuration grades.

12

End-to-End Automated Pre-Launch Verification

Mandatory

Manual spot-checks frequently overlook subtle regressions like broken viewport meta tags, missing ARIA form labels, unminified assets, or missing image alt text. Running an automated audit engine catches cross-disciplinary defects in seconds.

How to Verify

Run Site Sensei's free 5-pillar website audit against your staging or preview deployment before pointing production DNS.

Pre-Launch Verification Matrix

#Check ItemCategoryPriorityExpected Outcome
1Clean Crawler Access (robots.txt)CrawlabilityMandatoryEnsure search engine bots can discover public content while excluding private API endpoints and authenticated user dashboards.
2Absolute XML Sitemap ValidationCrawlabilityMandatoryProvide a machine-readable sitemap.xml containing all canonical, indexable 200 OK URLs with valid timestamps.
3Self-Referencing Canonical URLsIndexabilityMandatoryDeclare explicit canonical tags on every indexable page to prevent duplicate content across URL parameters and trailing slashes.
4Next.js metadataBase & Absolute URLsMetadataMandatoryConfigure metadataBase in your root layout so Next.js correctly computes absolute Open Graph and canonical links.
5Private Route Shielding & Noindex HygieneIndexabilityMandatoryEnforce robots noindex, nofollow on customer dashboards, auth flows, and ephemeral test results.
6SSR Output & Hydration CrawlabilityRenderingMandatoryVerify critical page content, headings, and internal links exist in the raw server-rendered HTML before JavaScript hydration.
7Single Canonical Host & Clean RedirectsArchitectureMandatoryEnforce one canonical hostname (www vs non-www, HTTP to HTTPS) with immediate 301/308 redirects, avoiding redirect chains.
8Semantic Internal Links vs. Dead 404sArchitectureMandatoryAudit header, footer, and inline links. Replace placeholder URLs with verified routes and eliminate broken 404s.
9Core Web Vitals: LCP, CLS, and INP ReadinessPerformanceRecommendedOptimize hero asset loading (LCP), reserve explicit image dimensions (CLS), and yield the main thread for user interactions (INP).
10Schema.org JSON-LD VerificationStructured DataRecommendedProvide validated Schema.org structured data (Organization, WebApplication, TechArticle, BreadcrumbList) matching your canonical origin.
11Security Headers as a Quality SignalSecurityRecommendedDeploy HSTS, X-Content-Type-Options, X-Frame-Options, and CSP to protect users and signal high engineering standards.
12End-to-End Automated Pre-Launch VerificationVerificationMandatoryExecute an automated 5-pillar audit across SEO, performance, accessibility, UI/UX, and security before announcing launch.

Conclusion & Next Steps

Technical SEO is not a one-time marketing task; it is an engineering discipline that guarantees search engines can crawl, understand, and index your website reliably.

By verifying these 12 checks before production launch, you safeguard your web application from avoidable indexing failures, eliminate duplicate content traps, and establish an unshakeable foundation for organic growth.