Lucide 1.0 removes brand icons and optimizes bundle size for millions of projects
Lucide hit 1.0, and the headline changes are the kind most teams sleep through: every trademarked brand icon is gone, and the package got dramatically lighter. If your project depends on Lucide — statistically likely, at over 30 million downloads a week — here is what changed, why the removals are good news, and what to check before you upgrade.
What Lucide 1.0 actually changed
The official v1 changelog reads like a hygiene checklist done right. Brand icons removed, with a dedicated brand-logo statement explaining why. UMD builds dropped — ESM and CommonJS only now. Accessibility improved, with aria-hidden set by default on icons. Framework support leveled up: a modern standalone @lucide/angular package, the lucide-vue-next package renamed to @lucide/vue, and context providers supported across React, Vue, Svelte, and Solid. Plus stable code points for the Lucide font, shadow DOM support, and per-framework guides (Lucide v1 release notes).
The scale is what makes this release matter beyond its own repo. The project reports over 30 million downloads per week across its ecosystem, used by millions of projects worldwide — again per the official announcement. When a dependency that ubiquitous ships a major version, the migration ripples through the whole frontend ecosystem.
Independent coverage fills in the numbers: the icon set now spans 1,600+ icons, and the lucide-react package dropped from 11.4MB to around 1MB gzipped — a 32.3% reduction driven largely by killing the legacy UMD build (InfoQ on the Lucide v1 release). Multiply a ~10MB saving by tens of millions of weekly installs and the aggregate transfer, storage, and CI savings are enormous.
Why the brand icons had to go
Lucide removed brand marks — GitHub, Slack, Figma, Facebook-style logos — for three converging reasons: trademark and legal exposure, design consistency, and maintenance friction. Trademarked assets sit uneasily inside a permissively licensed open-source set, and the team cited intensifying legal pressure as the forcing function (Lucide v1 release notes).
This was not sprung on anyone. Lucide, forked from Feather Icons, had deprecated brand icons since 2020 with public discussion trailing the decision for years — a detail confirmed in contemporary coverage. The v1 line was simply where the long-announced cut landed.
The removal does double duty. First, it sidesteps copyright and trademark headaches for both package authors and downstream users — one less compliance review for your legal team. Second, it ends an unending maintenance loop: brand marks change constantly as companies rebrand, restyle, or tighten display rules, and tracking them consumed maintainer attention that now goes to the core pictogram set. The result is closer to Lucide's roots: clean, consistent, community-owned pictograms that do one job well.
If your UI genuinely needs brand marks, the team points to Simple Icons as the default path — a library built specifically for company logos that commits to tracking trademark restrictions and updates. Splitting brand marks into a purpose-built package is a better division of labor than cramming them into a general icon set.
One codebase. iOS, Android, and web.
The Fitness Kit ships with auth, a database, and a backend already connected — no setup. Live demo at fitness-preview.otf-kit.dev.
The bundle win, concretely
The 32.3% cut to lucide-react — 11.4MB down to ~1MB gzipped — comes mostly from one decision: dropping the UMD build and shipping ESM and CommonJS only (InfoQ on the Lucide v1 release). That is not a clever compression trick; it is the maintainers honoring how modern bundlers actually consume packages. Legacy build targets were dead weight that every installer downloaded and almost nobody used.
The lesson generalizes to any frontend stack. Audit your own bundles for the same pattern: legacy builds, unused locales, polyfills for browsers you dropped years ago. The practices that shrank Lucide — drop dead targets, prune unused assets, let tree-shaking work — apply to every dependency you ship. Cold boots get faster, CI cycles shrink, and every client downloads lighter JS.
For teams running a shared design system, this release is also a prompt to pin down your icon story. Document which set you use, how brands are handled, and what the upgrade path looks like — the same discipline behind an agent-readable design system. When your AI coding agent can read your component conventions, swaps like the brand-icon migration become mechanical rather than archaeological.
Upgrading: what to check
Most upgrades will be uneventful, but three things deserve a grep through your codebase before you bump the version.
First, brand icon imports. If anything references a brand-named export, it will break — search for the obvious candidates and swap in Simple Icons or your own SVGs. Second, package renames: lucide-vue-next becomes @lucide/vue, and Angular users move to the standalone @lucide/angular (Lucide v1 release notes). Third, the UMD removal: if any legacy page still loads Lucide via a UMD script tag, switch it to ESM or the framework package.
Also worth knowing: aria-hidden now defaults on, which is the correct accessibility posture for decorative icons — but if you were relying on icons being exposed to assistive tech (unusual, but check), verify behavior. And if you use context providers to set default sizes or colors, the newly unified provider support across React, Vue, Svelte, and Solid may let you delete framework-specific workarounds.
Cross-platform teams should note the shared-component angle: one icon set consumed identically across web and mobile wrappers reduces the drift that plagues multi-platform component architectures. A stable v1 with fixed font code points is exactly the foundation you want underneath a single codebase shipping to three platforms.
Why invisible dependencies deserve major-version attention
Lucide is the textbook "invisible dependency": nobody chose it in an architecture review, yet it ships inside millions of builds. Releases like 1.0 are when invisible dependencies become visible — a removal here, a renamed export there — and the teams that survive painlessly are the ones with lockfiles, CI, and upgrade runbooks rather than vibes.
Give this one an hour: bump, grep for brand imports, run the visual diff suite, ship. And if you are scaffolding something new, start from kits that already encode these hygiene choices: browse the OTF kits — production-grade foundations your agent can build on without relearning dependency discipline.
Sources
- Lucide v1 release notes — brand icon removal, UMD dropped, 30M weekly downloads, renames, accessibility defaults, context providers. Verified live.
- InfoQ on the Lucide v1 release — 1,600+ icons, 11.4MB to ~1MB gzipped (−32.3%), tens of millions of weekly npm downloads, Simple Icons pointer. Verified at prep time.
- Simple Icons — recommended home for brand marks going forward. Verified at prep time.
Stop wiring. Start shipping.
- Login, database, and backend already connected — nothing to set up
- iOS + Android + web from one codebase
- AI configs pre-tuned + 40+ tested prompts included