SEO Checklist for Custom Web Applications
Custom web applications aren't like static sites or CMS-driven blogs. They're built on frameworks like Next.js, React, and modern SaaS stacks, which introduce unique SEO challenges: dynamic routing, hydration issues, Server Component architecture, and structured data complexity.
If you're building or running a Next.js app, SaaS product, or enterprise web portal, this checklist gives you the step-by-step actions you need in 2026 to stay visible in both traditional search engines and AI-driven experiences like Google AI Overviews, Perplexity, and ChatGPT. These strategies align with the broader SEO trends shaping 2026.
For AI-specific optimization strategies, see our companion post: AI Search Optimization Guide.
1. Core Web Vitals (2026 Benchmarks)
Google continues to use Core Web Vitals as ranking signals. In 2026, poor INP scores above 300ms have caused 31% ranking drops — particularly on mobile. Your app must meet these thresholds:
| Metric | Good | Needs Improvement | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | < 2.5s | 2.5s – 4.0s | > 4.0s |
| INP (Interaction to Next Paint) | < 200ms | 200ms – 500ms | > 500ms |
| CLS (Cumulative Layout Shift) | < 0.1 | 0.1 – 0.25 | > 0.25 |
How to Optimize in Next.js 15
LCP optimization:
- Use the
next/imagecomponent with AVIF/WEBP formats andpriorityfor above-the-fold images - Preload fonts with
<link rel="preload" as="font" crossOrigin="anonymous"> - Use streaming with
loading.tsxto show content faster - Enable Partial Prerendering (PPR) to serve static shells immediately
INP optimization:
- Minimize JavaScript execution on the main thread
- Use
React.lazy()andSuspensefor code splitting - Offload heavy computations to Web Workers
- Audit third-party scripts — analytics, chat widgets, and ad scripts are common offenders
CLS optimization:
- Set explicit
widthandheighton images and videos - Use CSS
aspect-ratiofor responsive containers - Avoid dynamically injected content above the fold
- Preload fonts to prevent FOIT/FOUT layout shifts
2. Next.js 15 App Router: Technical SEO Foundations
Server Components (Default)
Next.js 15's App Router uses Server Components by default — a major SEO advantage. Search engines and AI crawlers receive fully rendered HTML, not JavaScript that needs execution.
- SEO-critical pages (pricing, features, docs, blog) should always render on the server
- Client Components (
'use client') should be reserved for interactive elements only - Server Components reduce bundle size, improving LCP and INP
Partial Prerendering (PPR)
PPR is the most impactful Next.js 15 feature for SEO. It combines static and dynamic rendering in the same route:
- Static shell (headings, meta tags, core content) renders at build time — instant delivery
- Dynamic holes (personalized content, user-specific data) stream in asynchronously
- Crawlers see the complete static content immediately
- Enable in
next.config.ts:cacheComponents: true
Metadata API
Centralize all meta tags using the Metadata API:
// app/blog/[slug]/page.tsx
import type { Metadata } from 'next'
export async function generateMetadata({ params }): Promise<Metadata> {
const post = await getPost(params.slug)
return {
title: post.seoTitle,
description: post.seoDescription,
alternates: {
canonical: `https://www.example.com/blog/${params.slug}`,
},
openGraph: {
title: post.title,
description: post.description,
type: 'article',
publishedTime: post.date,
},
}
}
Routing Best Practices
- Use SSR or SSG for all indexable pages — never rely on client-only rendering for SEO content
- Implement
generateStaticParams()for static generation of dynamic routes - Use
loading.tsxfor streaming — gives crawlers content faster than full SSR - Set
dynamicParams = falsefor known routes to prevent 404s on invalid slugs
3. XML Sitemaps & Indexing
Sitemap Configuration
Use the built-in App Router convention or next-sitemap:
// app/sitemap.ts
import type { MetadataRoute } from 'next'
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const posts = await getAllPosts()
return [
{ url: 'https://www.example.com', lastModified: new Date(), priority: 1.0 },
{ url: 'https://www.example.com/blog', lastModified: new Date(), priority: 0.8 },
...posts.map(post => ({
url: `https://www.example.com/blog/${post.slug}`,
lastModified: new Date(post.date),
priority: 0.7,
})),
]
}
Indexing Checklist
- Generate sitemap with canonical URLs only (no www vs non-www duplicates)
- Include
lastModifieddates (YYYY-MM-DD format) - Submit sitemap in Google Search Console
- Verify no duplicate or orphan URLs in sitemap
- Check "Indexed, not submitted in sitemap" errors in Search Console
4. Robots.txt & AI Crawler Configuration
Configure robots.txt to allow both traditional and AI crawlers:
// app/robots.ts
import type { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return {
rules: [
{
userAgent: '*',
allow: '/',
disallow: ['/api/', '/admin/', '/_next/'],
},
{
userAgent: ['GPTBot', 'PerplexityBot', 'ClaudeBot', 'Applebot-Extended'],
allow: '/',
},
],
sitemap: 'https://www.example.com/sitemap.xml',
}
}
2026 note: Google no longer uses Google-Extended to control AI Overview inclusion. AI Overviews are now a core search feature controlled by standard Googlebot access.
5. Schema Markup Essentials
Schema helps both Google and AI systems understand your content. For apps and SaaS sites, implement:
| Schema Type | Use Case | AI Impact |
|---|---|---|
| Organization | Company identity, brand queries | Knowledge panel, entity recognition |
| SoftwareApplication | SaaS products, web tools | Product rich results |
| FAQPage | Support docs, FAQ sections | AI Overview citations, People Also Ask |
| Article / BlogPosting | Blog content, guides | AI citation source |
| HowTo | Step-by-step tutorials | Featured snippets, AI extraction |
| BreadcrumbList | Navigation hierarchy | Rich results, crawl clarity |
Example (SoftwareApplication with pricing):
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "QuickETL",
"operatingSystem": "Web",
"applicationCategory": "BusinessApplication",
"offers": {
"@type": "AggregateOffer",
"priceCurrency": "USD",
"lowPrice": "0",
"highPrice": "499",
"offerCount": "3"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "156"
}
}
6. Internal Linking Strategy
- Hub-spoke model: Link blog posts to their primary service page (e.g., SEO posts →
/seo) - Descriptive anchor text: "Next.js SEO checklist" instead of "click here"
- Topic clusters:
- SEO for Web Apps: This checklist → AI Search Optimization Guide → On-Page SEO Checklist
- Software Development: SaaS Architecture → API Integration Guide
Strong linking between technical posts and service pages improves both SEO authority and conversion. If you're worried about conversion loss, see: Is Your Website Costing You Customers?.
7. Security & Accessibility
Security Headers (Next.js)
// next.config.ts headers()
{ key: 'X-Content-Type-Options', value: 'nosniff' },
{ key: 'X-Frame-Options', value: 'DENY' },
{ key: 'Referrer-Policy', value: 'origin-when-cross-origin' },
{ key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubDomains; preload' },
Accessibility Checklist
- All images have descriptive alt text
- Color contrast meets WCAG 2.2 AA standards (4.5:1 for normal text)
- Keyboard navigation works for all interactive elements
- Form labels are properly associated with inputs
- ARIA landmarks used for major page sections
Accessibility improvements directly correlate with better SEO signals — reduced bounce rate, improved engagement, and better crawlability.
8. AI Search Discoverability
AI Overviews now appear in 60% of Google searches. Your web app must be AI-discoverable:
- Write citation-worthy content — Clear definitions, specific data, direct answers
- Use structured data — FAQPage, HowTo, and Article schema help AI parse your content
- Make headings scannable — AI extracts information by heading hierarchy
- Monitor AI bot activity — Track GPTBot, PerplexityBot, and ClaudeBot in server logs
- Ensure HTML rendering — Some AI bots can't execute JavaScript. Critical content should be in the initial HTML (Server Components handle this automatically)
For the advanced playbook, see AI Search Optimization Guide.
9. Measurement & Tracking
Essential Tools
| Tool | What to Track | Frequency |
|---|---|---|
| Google Search Console | Indexing, query impressions, AI Overview visibility | Weekly |
| GA4 | Engagement, conversions, scroll depth | Weekly |
| Core Web Vitals Reports | CrUX data, field performance | Monthly |
| Server logs | AI bot crawl frequency and coverage | Monthly |
| Schema Validator | Structured data compliance | After changes |
Optimization Cadence
- Weekly: Ship updates and track search performance changes
- Monthly: Audit Core Web Vitals, review AI search visibility, check indexing coverage
- Quarterly: Refresh high-value pages, conduct comprehensive SEO audits, and update structured data
Taking Action
SEO for custom web applications in 2026 requires a dual focus:
- Technical foundations — Core Web Vitals with INP, Server Components, clean sitemaps, and schema markup
- AI discoverability — Structured content, citation-worthy answers, and AI crawler access
By following this checklist, your custom web app will rank higher in traditional search, earn citations in AI Overviews, and convert visitors more effectively.
Need expert help? Our SEO Optimization Services combine technical audits with AI search optimization to help businesses improve rankings and capture more qualified leads. We specialize in Next.js and modern web application SEO.
Eiji
Founder & Lead Developer at eidoSOFT