# The Missing GitHub Icon That Broke My Production Build

> Source: <https://dev.to/alkhassim_lawalumar/the-missing-github-icon-that-broke-my-production-build-b1c>
> Published: 2026-07-24 19:19:48+00:00

*This is a submission for DEV's Summer Bug Smash: Smash Stories powered by Sentry.*

I'm building [KingxTech](https://kingxtech.name.ng), and specifically **K-XpertAI** — an AI agent that reads, writes, and deletes files in a live project workspace, then hosts the result instantly. Under the hood it's a React 19 + Vite frontend talking to a TypeScript/Express backend on Cloud Run.

I'd just shipped a big batch of changes to the workspace UI — a proper code editor, a file tree with GitHub import/export buttons, a terminal tab. Pushed to GitHub, Vercel kicked off the deploy... and it failed.

```
Error: Command "npm run build" exited with 1
```

Digging into the build log, the real error was buried a few lines down:

``` js
15 │ import { File as FileIcon, Folder, FolderPlus, FilePlus, Trash2, Save,
   │   RefreshCw, Undo2, Copy, ExternalLink, Code2, Eye, Rocket,
   │   TerminalSquare, Upload, Maximize2, Minimize2, Github, FolderInput,
   │   SlidersHorizontal, Info, Plus } from "lucide-react";
   │ ───┬──
   │ ╰──── Missing export
```

Vite's bundler (via Rolldown) was telling me `Github`

didn't exist as an export in `lucide-react`

— but only in Vercel's build. It worked fine in local dev. That's the kind of bug that makes you doubt your own eyes: the icon was clearly imported the same way as a dozen others on that same line that worked perfectly.

First instinct: check the installed version.

```
"lucide-react": "^1.23.0"
```

Nothing obviously wrong there. So instead of guessing at what icon names *should* exist, I installed that exact version in an isolated sandbox and just asked the module directly:

``` js
const icons = require('lucide-react');
const names = ['Github', 'FolderInput', 'SlidersHorizontal', /* ...the rest */];
for (const n of names) {
  console.log(n, typeof icons[n] !== 'undefined' ? 'OK' : 'MISSING');
}
Github MISSING
FolderInput OK
SlidersHorizontal OK
...everything else OK
```

There it was. Every icon in that import worked *except* `Github`

.

`lucide-react`

— like a lot of modern icon libraries — has been progressively removing brand/trademark logos (GitHub, Twitter, etc.) from its default export set, pushing people toward dedicated brand-icon packages instead. Somewhere between versions, the plain `Github`

icon quietly stopped being exported. Local dev didn't catch it because of caching in `node_modules`

from an earlier install; a clean Vercel build (fresh `npm install`

every time) surfaced it immediately.

The fix wasn't "install a different package" — it was small enough to just inline:

``` js
// Before: relying on a brand icon that no longer ships
import { Github } from 'lucide-react';

// After: a tiny local SVG component instead
function Github({ size = 14 }) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="currentColor">
      <path d="M12 .5C5.7.5.5 5.7.5 12c0 5.1 3.3 9.4 7.9 10.9..." />
    </svg>
  );
}
```

Same component name, same usage everywhere else in the file — zero call-site changes needed.

Since the whole failure was "works locally, fails in CI," I didn't trust a visual read of the diff. I ran the actual production build in a clean environment:

```
npm install
npm run build
✓ 1902 modules transformed.
dist/index.html                     1.44 kB
dist/assets/index-*.css            24.68 kB
dist/assets/index-*.js           1,185.88 kB
✓ built in 3.16s
```

Clean exit code, real `dist/`

output. Only then did I consider it actually fixed.

`node_modules`

can hide exactly this class of bug. A clean install is the only honest test.Small bug, but a good reminder that "it built yesterday" is not evidence of anything today.
