JavaScript applications fail at SEO in predictable ways: empty first paints, duplicate URLs, missing canonicals and slow interactions. Working on multilingual marketplaces and corporate sites, I keep coming back to the same checklist.
Rendering: give crawlers HTML
Use SSR or static generation for every indexable route. Reserve client-only rendering for authenticated dashboards that should never be indexed anyway — and make sure those routes say so with noindex or auth walls.
Canonical discipline
One URL per page. Self-referencing canonicals, HTTPS everywhere, consistent trailing slashes, and redirects for legacy route shapes (for example /services/details back to /services). Multilingual pages must self-canonical per locale — never point every locale at the default language.
Sitemaps that stay fresh
Generate the XML sitemap from the database so new posts, projects and services appear automatically, reference it from robots.txt, and include only canonical, indexable URLs.
Core Web Vitals as ranking input
Optimize images (explicit dimensions, lazy loading below the fold, modern formats), keep third-party scripts lean, and avoid shipping animation libraries to pages that do not use them. On one B2B marketplace this discipline, combined with SSR, tripled organic traffic.
SEO for JavaScript apps is mostly unglamorous correctness — which is exactly why it compounds.
Discuss this article
Questions about Technical SEO for Next.js Applications: SSR, Indexing and Core Web Vitals — or applying it to your own SaaS or B2B application? Send the details and I will get back to you.