Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ux Fontawesome Laravel Package

krystal-sf/ux-fontawesome

Integrates FontAwesome with Symfony UX, adding Twig helpers and PHP components to render and configure scalable icons consistently. Simplifies icon usage in templates with clean syntax, flexible options, and streamlined asset integration for modern Symfony applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: Low for a Laravel estate, but the honest framing is that this package is not aimed at Laravel at all. It is a thin Symfony UX icon-set provider — Font Awesome Free assets plus the conventions of symfony/ux-icons, Twig, and Symfony's asset pipeline. In a Laravel application there is no service provider to auto-discover, no Blade component, no Vite/AssetMapper equivalent, and no Twig rendering surface. Composer will install it; Laravel will not use it. The only extractable value is the vendored Font Awesome Free assets and any icon-name mapping, which you can obtain from @fortawesome/fontawesome-free directly with less friction.

Integration feasibility: As a direct dependency in Laravel — near zero without custom glue. A team would either strip the package down to static assets (at which point the dependency is pointless) or write a Laravel-native wrapper around the npm package. In a Symfony service already using UX Icons, feasibility is genuinely reasonable — composer require, register the bundle, render via ux_icon('fa:user', {class: '...'}) — but that is a different conversation than the one a Laravel TPM is having.

Technical risk: High, and it is layered. First, framework mismatch — the integration layer is not portable. Second, ecosystem signal — zero stars, zero dependents, score 0, single-org provenance means no external validation, no issue history, no third-party regression coverage. Third, the licensing surface, which is real and often missed: Font Awesome Free icons are CC BY 4.0, fonts SIL OFL 1.1, and the package's own code MIT, so attribution obligations flow through to whatever product ships the icons. Fourth, undocumented version constraints on Symfony/PHP/UX Icons — a minor bump can break asset paths or icon registration silently. Fifth, prefix ambiguity: the icon prefix (fa, fontawesome, fas/far/fab) determines every template string, and a mismatch surfaces as an IconNotFoundException at render time on live pages.

Key questions:

  • Which Font Awesome Free version is pinned, and who owns the upgrade when FA ships a major?
  • Does the package hard-require symfony/ux-icons, and what Symfony/PHP ranges are declared in composer.json?
  • What is the icon prefix, and is it configurable or fixed by a getPrefix() in the icon set class?
  • Are the FA licence headers and attribution files preserved when assets compile into a Laravel Vite build?
  • Is there a named maintainer, release cadence, or security policy, or is this internal Krystal tooling published publicly?
  • What is the rollback cost if Krystal archives the repo — forked? vendored? replaced?
  • Does it support AssetMapper only, Encore only, or both?

The TPM takeaway: this is not a dependency decision, it is an ownership decision, and the default answer for a Laravel team is "no, and we don't need to think harder than a Blade component plus npm."

Integration Approach

Stack fit: Do not attempt to force this into Laravel's runtime. The correct Laravel shape for the same requirement is:

npm install @fortawesome/fontawesome-free
// resources/js/app.js
import '@fortawesome/fontawesome-free/css/all.min.css'

plus a small Blade component (<x-icon name="user" />) or blade-ui-kit/blade-icons if you want a broader, maintained catalogue. That is roughly one afternoon of work, gives you full control of the asset pipeline through Vite, and carries no third-party framework coupling. It also removes the package from your Composer audit surface entirely.

Migration path: There is no migration onto this package from Laravel — there is only a migration pattern you can borrow. If you are moving a Symfony service to Laravel, replace ux_icon(...) calls with your Blade component, swap AssetMapper/Encore for Vite, and confirm the Font Awesome version is identical so rendered glyphs don't shift mid-migration. If you are staying on Symfony, the package is adoptable directly, but scope it to Symfony services only and do not let it leak into shared PHP libraries that Laravel also consumes.

Compatibility: PHP and Composer constraints will almost certainly resolve — the blocker is framework semantics, not version numbers. Laravel's package discovery will not register the Symfony bundle; Blade will not evaluate Twig; Vite will not read AssetMapper config. The CSS/JS artefacts are portable; nothing else is. Treat the package as a reference implementation of Font Awesome Free wiring, not as a library.

Sequencing:

  1. Confirm the requirement is icon delivery, not Symfony UX icon registration. If it is the former, this package is out of scope immediately.
  2. Establish the licence position — CC BY 4.0 / SIL OFL 1.1 / MIT — and decide where attribution lives (a NOTICE file or an About page). Do this before any code lands.
  3. For Laravel: prototype the npm + Vite + Blade component path first. Measure bundle size with the full Free CSS versus a targeted subset; if payload matters, use SVG or symfony/ux-icons-style on-demand fetching instead.
  4. Wrap every icon call behind a single internal component from day one, so the underlying implementation is swappable without touching product templates.
  5. If a Symfony service is genuinely in scope, pilot this package there in a non-critical app, verify Symfony/UX/PHP version alignment with bin/console cache:clear and one throwaway template, and only then standardise.
  6. Only after maintenance ownership, release history, and rollback path are documented should adoption be recorded as a decision rather than a default.

Operational Impact

Maintenance: Assume you own it. Zero stars and zero dependents means no community is watching, no one else is filing issues, and no one else will notice when a Symfony upgrade breaks the asset paths. Any Laravel adapter you write is 100% yours forever, which is the decisive argument against writing one. If you adopt the package inside Symfony, budget a recurring line item for FA version bumps and license-header verification — small, but real, and it needs a named owner before it enters composer.json.

Support: No meaningful external support signal. Documentation is thin and Krystal-specific, and the actual API surface (Twig function name, prefix, config key) is discoverable only by reading README.md, composer.json, src/Icon/, and src/DependencyInjection/Configuration.php. For Laravel there is no first-class path at all — the support channel is your own team's memory of how it was wired.

Scaling: The assets scale fine; the integration does not. Static Font Awesome files serve equally well from a CDN, a Vite build, or an offline bundle, and self-hosting is a genuine privacy win over a third-party CDN call — worth stating in a GDPR or air-gapped review. The failure is organisational: if multiple teams each solve icon rendering separately, you get five divergent wrappers and inconsistent glyph versions across the estate. The mitigation is a single internal icon standard — one component, one pinned FA version, one place to change — regardless of whether this package sits behind it.

Failure modes: Broken asset paths after a Symfony UX or AssetMapper upgrade; Composer conflicts against pinned Symfony packages; template-wide IconNotFoundException from a prefix mismatch or a name that isn't in the Free set (many Pro names are not); silent glyph regressions when the FA version drifts between services; Laravel package discovery quietly registering nothing and the failure only surfacing in a rendered page; missing attribution notices creating a licence-compliance gap; and abandonment — the repository going quiet with no deprecation notice and no successor named.

Ramp-up: For a Laravel developer, non-trivial and largely wasted — you would need Symfony UX, Twig, and Stimulus context to read the package at all, for a requirement that a Blade component solves in an afternoon. If you only lift the static assets, ramp-up is effectively zero but so is the package's value. For a developer already fluent in Symfony UX, ramp-up is low — an hour to confirm the prefix and config key, then it is just ux_icon() calls. That asymmetry is the whole story: the package is cheap for the audience it was built for and expensive for everyone else, and as a TPM the useful move is to route it to that audience rather than broaden it.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core