codeat3/blade-radix-icons
A Laravel Blade package for rendering Radix Icons as simple, customizable components. Use convenient x-radix-icon tags in your views, with support for sizing, colors, and easy Composer installation.
codeat3/blade-radix-icons is a packaging-only dependency. It registers the Radix Icons SVG set as an icon set for the blade-ui-kit/blade-icons ecosystem via a service provider and exposes each glyph as <x-radix-icon-name />. From a TPM lens this is pure presentation-layer capability: no runtime services, no data, no network calls, no migrations, no config surface. The architectural question collapses to a binary — it either fits our Blade view layer or it does not — and the blast radius is bounded by rendered HTML.
Release 1.9.0 is a single-change release: a Laravel 13 compatibility constraint update (PR #22). No new icons, no API change, no deprecations, no config keys. That is the lowest-risk release class, and it marginally improves the risk profile by keeping the package on a supported framework path. Two stars and zero dependents mean we would effectively be an early adopter; acceptable because the underlying icon set (Radix) is reputable and MIT-licensed, but we should not assume community-vetted behavior.
Technical risk, ranked by materiality:
blade-ui-kit/blade-icons. Laravel 13 support only holds if that upstream also resolves on Laravel 13. A green release here is necessary but not sufficient for a clean composer update in our app.Key questions to resolve before adoption:
composer require codeat3/blade-radix-icons:^1.9 actually resolve on our target Laravel 13 skeleton — including blade-ui-kit/blade-icons and the PHP floor Laravel 13 implies?blade-icons sprite/caching mode for icon-dense pages, and is that configurable without forking?Net: a low-risk, additive, reversible, commodity dependency. The 1.9.0 release does not change the risk profile; it marginally improves it.
Stack fit. Native for Blade-first, server-rendered Laravel — admin panels, internal tooling, back-office dashboards, static marketing pages. It coexists with other blade-* icon packs because each registers a distinct prefix. Poor fit for Inertia/React/Vue frontends with an established JS icon pipeline, where a Blade-only wrapper creates a second, inconsistent icon path. Also a poor fit where procurement requires vendor SLAs or security attestation.
Migration path. Greenfield: add to composer.json, use immediately — service provider auto-discovered, nothing to publish, no build step, no npm. Brownfield: replace inline SVG partials or icon-font classes with <x-radix-* /> incrementally; components are self-contained, so no controller or model changes are involved. Exit is mechanical: publish the SVGs into resources/ and preserve the component names.
Compatibility. 1.9.0 widens framework support rather than narrowing it, so it is backward compatible with our current Laravel by construction. Two gates must be verified in the lockfile: (a) our pinned blade-icons version satisfies the package requirement, and (b) our PHP version meets the floor implied by Laravel 13. Component names are stable across 1.x and derive from upstream Radix naming, so template-level breakage is unlikely.
Sequencing.
composer require codeat3/blade-radix-icons:^1.9 --dry-run against the Laravel 13 skeleton; capture the full dependency delta.<svg> markup) so silent failures surface in CI.Maintenance. Near-zero steady state: no jobs, no storage, no credentials, no external runtime calls. Ongoing work is periodic composer update cycles to pull icon refreshes and framework support. Posture: caret constraint plus committed lockfile, automated via Dependabot/Renovate, CI as the gate.
Support. Burden concentrates in "the icon renders blank" tickets. Mitigate with a documented component-name convention and a link to the upstream Radix catalogue in internal docs. Because the package is single-maintainer, avoid building deep customization on top of it — treat it as a replaceable asset source so support never becomes a blocker.
Scaling. Horizontally irrelevant — it is compile-time markup, not a service. The only scaling dimension is HTML weight: many inline SVGs inflate payloads. For icon-dense pages, evaluate blade-icons sprite/caching mode or trim to a curated subset; measure before optimizing, since most apps will not notice.
Failure modes.
blade-icons lag) — surfaces at build time, loud, recoverable by pinning one version back.view:cache must run after composer install so components are discoverable; misordering yields blank icons in production only. Add to the deploy checklist.Ramp-up. Effectively zero for anyone who has written Blade: one line of documentation ("icons are <x-radix-* />, catalogue at X"). TPM effort to adopt is hours, not sprints. The one judgment call worth escalating is adopt-vs-inline: for a design system consuming fewer than roughly 20 icons, vendoring those SVGs directly may be the lower lifetime-cost choice than carrying a dependency. Recommendation: adopt for internal and admin surfaces where Blade is the render path; revisit if these icons become load-bearing in customer-facing UI or if a second, non-Blade frontend appears.
How can I help you explore Laravel packages today?