---
title: "Your navigation may contain no links — gCurv Technologies"
description: "A React dropdown nav that renders buttons instead of anchors, and unmounts when closed, ships zero navigation to a crawler."
lang: en
json-ld: |
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "headline": "Your navigation may contain no links",
    "description": "A React dropdown nav that renders buttons instead of anchors, and unmounts when closed, ships zero navigation to a crawler.",
    "datePublished": "2026-08-24",
    "dateModified": "2026-08-24",
    "url": "https://gcurv.com/notes/your-navigation-may-contain-no-links",
    "author": {
      "@type": "Organization",
      "name": "gCurv Technologies",
      "url": "https://gcurv.com"
    },
    "publisher": {
      "@type": "Organization",
      "name": "gCurv Technologies",
      "url": "https://gcurv.com"
    }
  }
---

[![gCurv logo](/assets/gcurv-logo-CJpRRXOD.png)gCurv ](/)

[Work](/work)[Capabilities](/capabilities)[Products](/products)[Notes](/notes)[About](/about)

[Contact us](/contact)

Engineering note 

# Your navigation may contain no links

2026-08-24

We audited a site with nineteen destinations in its primary navigation. The server-rendered HTML contained two links: the logo, and one item.

Two things combined to cause it. The dropdown items were rendered as <button onClick={handleNav}> rather than <Link to>, so there was no href for anything that does not execute JavaScript to follow. And the dropdown panels were conditionally rendered — mounted only when open — so in the initial HTML they did not exist at all.

Either alone is survivable. Together they mean the navigation is functionally invisible to anything that reads HTML: crawlers, AI agents, link checkers, a browser with JavaScript disabled.

Thirty-two routes had no crawlable inbound link anywhere on the site. That included every calculator on the site — the pages most likely to earn a link from someone else, and the ones nothing pointed to.

## The fix is unglamorous

Render real anchors, and keep the panels mounted while hiding them with CSS rather than unmounting them. invisible opacity-0 pointer-events-none gives the same visual result and leaves the markup present. On the site above that took the homepage from two crawlable links to forty-eight.

## How to check yours

Fetch your homepage without executing JavaScript and count href attributes. If the count is far below what you see in a browser, your navigation is decoration.

[← All notes](/notes)

![gCurv logo](/assets/gcurv-logo-CJpRRXOD.png)gCurv 

A full live website with homepage, platform narrative, product modules, services, pricing, and an editorial blog.

[Email our team](/contact)

### Platform

-   [Overview](/platform)
-   [Products](/products)
-   [Pricing](/pricing)

### Solutions

-   [Services](/services)
-   [Industries](/platform)
-   [Blog](/blog)

### Company

-   [About us](/about)
-   [Contact us](/contact)

© 2026 gCurv. All rights reserved. [Back to top ↑](#top)