Metadata, crawlability, structured data, internal linking, performance and content architecture that help a Next.js website become genuinely search friendly.
01Make every important page understandable on its own
Good SEO in Next.js starts before adding a sitemap or a metadata object. Each important route should have a clear purpose, a descriptive title, one strong primary heading and visible content that explains the page without depending on client-side interactions. I treat metadata as a summary of a useful page, not as a replacement for the content search engines and visitors actually need to read.
02Build clean metadata and canonical rules
I create unique titles and descriptions for core pages, blog posts and project detail routes, then add canonical URLs so duplicate variations do not compete with each other. Open Graph and social metadata are useful for sharing, while sensible robots rules help keep admin areas, preview pages or other private routes out of search results. Dynamic routes should generate metadata from the same source that renders the visible content so the two never drift apart.
03Make crawlability part of the site architecture
Search engines need reliable paths to discover content, so I use semantic navigation, contextual internal links and generated sitemaps instead of leaving important pages isolated. URLs should be readable and stable, headings should follow a meaningful hierarchy, and content should not be hidden behind interactions that are impossible to reach without JavaScript. Breadcrumbs and related-content links can also help both users and crawlers understand how pages connect.
“SEO works best when technical signals, page structure and useful content all tell the same story.
04Add structured data where it clarifies meaning
Structured data is most valuable when it describes what is already visible on the page. For a portfolio, that can include Person information, articles, projects or breadcrumbs where appropriate. I keep the JSON-LD accurate and minimal rather than adding every possible schema type, because the objective is to make the page easier to interpret instead of creating markup that does not match the real content.
05Protect performance and Core Web Vitals
Performance is part of production SEO because slow pages create a worse experience before a visitor can even evaluate the content. I reduce unnecessary client-side JavaScript, use optimized images, reserve space for media to avoid layout shifts and keep fonts under control. Server Components and static rendering can be especially useful when a page does not need heavy interactivity, because they reduce the amount of work shipped to the browser.
06Measure after launch instead of assuming
A checklist is only the starting point. After deployment I verify indexability, inspect generated metadata, test the sitemap and monitor real traffic and search behavior. Search Console, analytics and performance reports can reveal pages with weak click-through rates, indexing problems or slow experiences, and those signals should feed the next content and technical improvements rather than leaving SEO as a one-time launch task.
Building something complex?
I work across React, Next.js, Node.js and product engineering to turn complicated workflows into maintainable software.
