Open the board for any site that shipped in the last year. There will be forty issues on it. Layout problems, a flaky test, an accessibility ticket somebody opened in good faith and nobody picked up, a dependency bump that broke a build.
What will not be on it is the reason the client’s traffic dropped after launch.
Technical SEO defects are real defects. They have reproducible steps, observable incorrect behaviour, and a measurable cost. They just do not look like bugs, because nothing throws. The page loads, the design matches, the Lighthouse run is green, QA signs off, and three months later someone in marketing asks why the site that replaced a working site gets half the organic traffic.
None of this needs a specialist to find. It needs someone to look, with a list in hand. The categories below are the ones that come up most often in audits of custom-coded sites, the kind mehrana.agency runs on builds that shipped clean and still never ranked.
Why Technical SEO Falls Between Dev and Marketing
The structural reason these defects survive is ownership. Marketing cannot read the network tab. Developers were never given the acceptance criteria. So the work sits in a gap where neither side considers it theirs, and gaps do not generate tickets.
It gets worse on agency and contract builds, where the handoff is a deployment rather than a conversation. The team that understood the routing is gone by the time the consequences show up, and the person inheriting it has no way to tell a deliberate decision from an accident.
Rendering Bugs That Hide Content From Crawlers
This is the expensive category, because the failure is total rather than partial. Content that is not retrievable is not ranked, summarized, or cited.
Client-Side Rendering and the Empty HTML Response
Googlebot executes JavaScript, so client-side rendering is not automatically fatal. But rendering is queued, not immediate, and it fails on blocked resources, hydration errors, and anything gated behind an interaction.
More importantly, Google is no longer the only consumer. Many crawlers and retrieval systems that feed AI answers fetch the HTML and never execute a script. For those, a page whose body arrives empty contains nothing at all.
The check takes ten seconds: request the page with curl and read what comes back. If your main content is not in that response, decide deliberately whether that is acceptable rather than discovering it later.
Infinite Scroll Without Paginated URLs
A feed that loads on scroll with no addressable pages means everything past the first batch has no URL. It cannot be linked, crawled, or returned as a result. Infinite scroll is fine as an enhancement over real paginated routes. It is a content loss when it replaces them.
Routing and Redirect Bugs in Custom-Coded Websites
Redirect handling is where migrations quietly lose years of accumulated value.
The common faults are consistent: 302 used where the move is permanent, chains three and four hops long, redirects that land on a generic category page instead of the equivalent page, and pages that return 200 with a “not found” message in the body, which tells a crawler the page exists and is simply thin.
Then there are the duplicates that routing creates by accident. The same content served at both trailing-slash and non-slash URLs, at both www and bare domain, over both http and https, and again with tracking parameters appended. Each variant is a separate URL until something tells the crawler otherwise.
Duplicate URLs and the Canonical Tag Nobody Set
That something is the canonical tag, and in custom builds it is either missing, hardcoded to the homepage, or self-referencing on every variant, which defeats the purpose.
Faceted navigation is the usual multiplier. Three filters with five options each generate more URL permutations than the site has real pages, and without canonicals or parameter rules the crawler spends its budget on combinations no user asked for.
Heading Structure as a Front-End Concern
Multiple <h1> elements are not a penalty. That myth has outlived its usefulness. What does matter is whether the heading order describes the document, because both crawlers and screen readers use it to build structure.
Headings chosen for their font size are the actual problem. An <h4> used because it was the right weight, an <h2> wrapping a sidebar widget, a hero heading implemented as a styled <div>. Fixing this is a CSS change and a semantic one, and it costs nothing at build time versus a retrofit later.
Structured Data That Validates but Says Nothing
Schema markup passes validation far more often than it is correct. A product without price or availability, an organization block with no sameAs references, an article with a publish date that never updates, a breadcrumb trail that does not match the actual navigation.
The failure mode worth avoiding is markup that contradicts the page. Structured data describing a rating or a price that does not appear in the visible content is a guideline violation, not a shortcut, and it is a bug the front end introduced.
Core Web Vitals Are a Field Metric, Not a Lab Score
A green Lighthouse score is a lab result from one synthetic run on one simulated connection. Core Web Vitals are measured in the field, from real sessions on real devices, which is why a site can score 98 locally and fail on the metric that counts.
The gap usually sits in the same few places: images served at full resolution to mobile, no dimensions set so layout shifts as they arrive, fonts loading without a fallback, and third-party tags blocking interaction. Interaction to Next Paint, which replaced First Input Delay, is particularly unforgiving of main-thread work, so analytics and chat widgets added after launch tend to be where the regression came from.
Adding Technical SEO Checks to a Definition of Done
The fix is process, not expertise. Most of these become trivial once they are written down as acceptance criteria.
A workable minimum: the production build is not serving a noindex header or a blanket robots.txt disallow left over from staging, because that single line has cost more traffic than every other item here combined. Main content appears in the raw HTML response. Every old URL maps to a specific new URL with a single 301. One canonical URL form is enforced. Canonicals are present and self-referencing on real pages only. The sitemap contains indexable URLs and nothing else. Headings follow document order. Field performance data is checked after launch, not just the lab score.
None of that requires an SEO specialist on the team. It requires the list to exist and someone to be accountable for it, the same way nobody argues about whether tests should pass before merge.
Treat these as bugs and they get fixed in an afternoon. Treat them as marketing’s problem and they get fixed after the traffic is already gone.



