Technical SEO for web apps: a guide for development teams
From rendering and metadata to Core Web Vitals, structured data, and hreflang — what every development team must do so their app gets found in Google.
Technical SEO is the part of search optimization that lives in your code, not your content. You can have the best articles in your niche, but if Google can't render, index, or understand their structure, they stay invisible. For a modern web app, these technical details often make the difference between steady organic traffic and zero visibility.
This guide is written for development teams: we walk through the decisions that truly matter, in order of impact, and point out the mistakes we see most often in audits.
Rendering: SSR/SSG vs. client-only
An app that renders everything in the browser (client-only) first sends an almost empty page, with content appearing only after JavaScript runs. Modern engines can render JS, but they do so with delay and inconsistently. Server-side rendering (SSR) or static generation (SSG) delivers complete HTML up front, which means faster, more reliable indexing.
- SSG (static): ideal for content that changes rarely — blog, product pages, landing pages. The fastest and most stable option for SEO.
- SSR (server-side): suited to personalized or frequently updated content that still needs to be indexed.
- Client-only: reserved for areas behind authentication that shouldn't be indexed anyway.
Metadata and canonical
Every indexable page needs a unique, descriptive title and a meta description that honestly summarizes the content. Just as important is the canonical tag: it tells the engine which version of a page is the "official" one, preventing duplicate content caused by URL parameters, pagination, or trailing-slash variants.
Structured data (JSON-LD)
Structured data describes your content in a format engines understand directly — an article, a product, an organization, an FAQ. The recommended format is JSON-LD, included as a script in the page. The practical payoff is "rich results": star ratings, prices, and FAQs shown right in the search results, which lift click-through rates.
Sitemaps and robots
A correct sitemap.xml lists all the pages you want indexed and helps engines discover new content quickly. The robots.txt file does the opposite: it signals what shouldn't be crawled. The classic — and costly — mistake is blocking resources in robots.txt that the engine needs to render the page, or leaving a stray "Disallow: /" in production from the development phase.
Core Web Vitals: LCP, INP, CLS
Google uses a page's real speed and stability as a ranking factor. Three metrics matter most:
- LCP (Largest Contentful Paint): how quickly the main element appears. Aim for under 2.5 seconds.
- INP (Interaction to Next Paint): how quickly the page responds to interactions. Aim for under 200 ms.
- CLS (Cumulative Layout Shift): how much elements "jump" during loading. Aim for under 0.1.
A fast page isn't just an SEO signal — it's the experience every visitor feels before they read a single word.
Image optimization
Images are usually the heaviest element on a page. Use modern formats (WebP or AVIF), serve sizes appropriate to each screen, add width and height attributes to avoid layout shift, and lazy-load anything below the fold. A single unoptimized image of a few megabytes can wreck your LCP score.
Internal linking
Your internal link structure tells engines which pages are important and how they relate. Use descriptive anchor text, link relevant articles to each other, and make sure no important page is more than a few clicks from the homepage.
Internationalization and hreflang
If your app has versions in several languages — as with a site in Romanian, Russian, and English — hreflang tags tell the engine which version to show each user. Every language variant must point to all the others, including itself, and the language and region codes must be correct. A misconfigured hreflang leads to the wrong language showing up in results.
Common technical mistakes
The most frequent issues we find in audits: pages accidentally blocked in robots.txt, canonical tags pointing to the wrong page, duplicate titles across dozens of pages, huge images without lazy loading, and incomplete hreflang. None is hard to fix — but each, left in production, costs traffic every single day.
Conclusion
Technical SEO isn't magic; it's a list of concrete decisions your team can methodically check off. If you'd like an assessment of your app — from rendering to Core Web Vitals and hreflang — get in touch with CraftWork. We'll run a clear technical audit and give you a priority list, ordered by impact.