Zum Hauptinhalt springen
IT Security NachrichtenVernetzungstreffen - Berichte aus der LPD Burgenland(23.10.2026 um 18:49 Uhr)
•••
IT Security NachrichtenTrust Is Not What It Seems — And Fraudsters Are Counting on It(24.10.2026 um 00:04 Uhr)
••••
IT Security NachrichtenCisco stopft diverse, teils kritische Sicherheitslücken | heise online(23.10.2026 um 23:44 Uhr)
••
IT Security NachrichtenPeople Are Vibe Coding Their Way to Better TVs(24.10.2026 um 00:00 Uhr)
•
IT Security NachrichtenVernetzungstreffen - Berichte aus der LPD Burgenland(23.10.2026 um 18:49 Uhr)
•••
IT Security NachrichtenTrust Is Not What It Seems — And Fraudsters Are Counting on It(24.10.2026 um 00:04 Uhr)
••••
IT Security NachrichtenCisco stopft diverse, teils kritische Sicherheitslücken | heise online(23.10.2026 um 23:44 Uhr)
••
IT Security NachrichtenPeople Are Vibe Coding Their Way to Better TVs(24.10.2026 um 00:00 Uhr)
•
Intelligence View
⚡ tsecurity.de Intelligence

The Missing GitHub Icon That Broke My Production Build

This is a submission for DEV's Summer Bug Smash: Smash Stories powered by Sentry. The setup I'm building KingxTech, and specifically K-XpertAI — an AI agent t…

Beitrag
0
Seite
0
↗ Quelle (dev.to)
Social ReaktionenReagiere als Erste:r — dein Feedback zählt!

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






The setup



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.






The bug






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.






The investigation



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.






The root cause



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.






Verifying it, not just eyeballing it



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.






What I'm taking away





  • A missing export is a build-time contract violation, not a typo — treat it like one. Don't guess at what a package should export; ask it.


  • Local dev green ≠ CI green. Stale node_modules can hide exactly this class of bug. A clean install is the only honest test.


  • Brand icons in open-source icon libraries are not guaranteed to stay. If your UI depends on a company's logo shape, either pin the package version deliberately or just own a tiny inline SVG — it's one function, and it never breaks on you again.



Small bug, but a good reminder that "it built yesterday" is not evidence of anything today.

Intelligence Digest — kostenlos Täglich die wichtigsten Security-News · jederzeit abbestellbar
Community Rating & Social Proof
⭐ Leser-Wertung
–
Ø / 5.0
Noch keine Leser-Bewertungen
War diese Seite hilfreich?
0
Jetzt Bewertung abgeben
🟢 Niedrig (1-3.9) 🟡 Mittel (4.0-6.9) 🔴 Hoch (7.0-8.9) Kritisch (9.0-10.0)

Verwandte Story-Cluster & Quellen (Vektor-KI)

Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten The Missing GitHub Icon That Broke My Production Build

Thematisch verwandte Begriffe: Missing, GitHub, Icon, That · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

💬 Reacties worden geladen…
Trek om te vernieuwen
Nächster Beitrag