mike-bronner/flux-fontawesome-icons
Integrates FontAwesome icons with Flux UI, letting you use FontAwesome glyphs anywhere Flux icons are supported, such as flux:icon components. Install, register the icon set, and reference icons by name in your Laravel Blade views without extra markup or manual SVG handling.
This is the initial 0.1.0 release, so treat it as early-stage: the API surface is small but not yet frozen.
Install the package
composer require mikebronner/flux-fontawesome-icons
This package sits on top of Flux UI and Livewire, so you need a Laravel app with Flux already installed and working (<flux:icon name="..." /> rendering Heroicons). If Flux isn't rendering icons yet, fix that first — this package only swaps/augments the icon source.
Look here first
mike-bronner/flux-fontawesome-icons) — for a 0.1.0 release this is the authoritative source, there's no long-tail of blog posts yet.config/flux-fontawesome-icons.php it ships — this tells you how icon sets are registered and how names are resolved.composer.json constraints for livewire/flux — compatibility is the most likely source of trouble on a brand-new package.Publish config / assets (if the install command offers it)
php artisan vendor:publish --tag=flux-fontawesome-icons-config
Check php artisan vendor:publish output for the exact tags this package registers.
First use case: a drop-in icon swap in an existing view. Take a view that already uses Flux icons and point one at a Font Awesome glyph:
{{-- before --}}
<flux:icon name="user" />
{{-- after --}}
<flux:icon name="user" variant="solid" />
Verify it renders before you refactor anything else. The fastest way to validate the package is wired correctly is a single icon on a single page, not a full icon-library migration.
Use it as an icon source, not a Font Awesome wrapper. The value of this package is that it plugs Font Awesome glyphs into Flux's existing <flux:icon> component API, so you keep Flux's sizing (class="size-5"), color inheritance (text-current), and accessibility conventions. Don't reach for raw <i class="fa-solid fa-user"> markup — you lose all of that and you end up with two icon systems in one codebase.
Standardize on Flux's icon API across the app. Once installed, audit for direct Font Awesome usage (<i class="fas ...">, @svg('fas-...')) and migrate those call sites to <flux:icon>. This is the single highest-leverage refactor, because it means one icon abstraction, one place to change icon libraries later, and consistent sizing/spacing behavior.
Wrap icons in your own Blade component for team-wide consistency. Even with Flux handling the heavy lifting, a thin app-level component pays off:
{{-- resources/views/components/icon.blade.php --}}
@props(['name', 'variant' => 'solid'])
<flux:icon :name="$name" :variant="$variant" {{ $attributes->class('size-5 shrink-0') }} />
Now a future icon-library change is a one-file edit rather than a grep-and-replace across hundreds of views.
Variant selection maps to Font Awesome styles. Font Awesome's solid / regular / brands styles generally map onto Flux's variant attribute. Establish a convention in your team (e.g. solid is the default, brands only for social/auth-provider icons) and document it, because FA's naming is less predictable than Heroicons' — brands in particular has different glyph names than the solid set.
Integrate at the layout/nav layer first. The best ROI is navigation, sidebar items, and buttons — places with the highest icon density and the most repeated markup. Get those consistent, then work outward into one-off pages.
Testing pattern. Assert on rendered SVG presence rather than exact paths, so icon library upgrades don't churn your test suite:
$response->assertSee('<svg', false);
Pin the version while it's pre-1.0. Use "mikebronner/flux-fontawesome-icons": "^0.1" (not *) and commit composer.lock. For a 0.1.0 package, 0.1.x patch releases may still adjust naming or config keys.
Font Awesome Pro is a licensing issue, not a technical one. If you use Pro glyphs, the package can only render what's present in your installed Font Awesome assets. Verify your license covers your deployment model (especially SaaS/end-product distribution), and keep Pro assets out of public VCS if your license forbids redistribution. If you're on Free, expect a reduced glyph set — the brands and regular styles are noticeably thinner.
Icon names are the #1 source of "icon renders blank". Flux/Heroicons names (user, chevron-down) and Font Awesome names (user, chevron-down, but also magnifying-glass vs search, xmark vs x) differ subtly. When an icon doesn't render:
php artisan view:clear — icon resolution is often done in Blade compilation and stale views mask config changes.Flux is a commercial product with its own version cadence. A brand-new package may target a specific Flux major version. If icons fall back to Heroicons or the component throws, check Flux version compatibility before filing a bug — this is the most likely failure mode on install.
SVG vs. webfont. Flux renders inline SVG (no <i> tags, no network fetch). That's good for performance and offline rendering, but it means Font Awesome's webfont CSS classes and content-based icon sizing don't apply. Always size with utility classes (size-4, size-6) on the Flux component, never with fa-2x or font-size.
Watch component-level caching. Flux components have varying caching behavior across versions. If you see an icon not updating after a deploy, it's more often a view cache or a queue/worker still running old code than an icon-resolution bug. Clear caches before debugging anything else.
Extension point: fallback and aliasing. Look for a config-driven alias/mapping option so you can keep Heroicons names in views while resolving to Font Awesome glyphs underneath. If 0.1.0 doesn't offer this, wrap it yourself in the app-level <x-icon> component described above — that's your safety net for a pre-1.0 dependency.
Budget for API churn. With a single 0.1.0 release and one contributor, expect config keys and possibly the public component name to change. Keep the package usage confined to your wrapper component and a small number of direct <flux:icon> call sites so a breaking 0.2.0 is a contained fix, not a rewrite. Watch the GitHub releases feed for 0.x minor bumps and read them as breaking changes.
How can I help you explore Laravel packages today?