cd /news/developer-tools/the-missing-github-icon-that-broke-m… Β· home β€Ί topics β€Ί developer-tools β€Ί article
[ARTICLE Β· art-72543] src=dev.to β†— pub= topic=developer-tools verified=true sentiment=Β· neutral

The Missing GitHub Icon That Broke My Production Build

A developer building K-XpertAI, an AI agent that manages files in a live project workspace, encountered a production build failure on Vercel caused by a missing `Github` icon export from the `lucide-react` library. The icon had been silently removed from the library's default exports due to trademark concerns, but local development cached the old version, masking the issue. The fix involved replacing the import with a small inline SVG component.

read3 min views1 publishedJul 24, 2026

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

I'm building KingxTech, 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:

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:

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:

// 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.

── more in #developer-tools 4 stories Β· sorted by recency
── more on @kingxtech 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/the-missing-github-i…] indexed:0 read:3min 2026-07-24 Β· β€”