Blade Icons: rendering SVG icons as Laravel Blade components
A package to easily make use of SVG icons in your Laravel Blade views.
At a glance
- What is it?
- Blade Icons is a base package that turns SVG files into Blade components and an @svg directive. It is a rendering layer, not an icon set, and the icon sets come from separate third-party packages.
- Who is it for?
- Adopt Blade Icons if you already render Blade views and want SVG icons addressed by name instead of pasted markup. Do not adopt it if you need a self-contained icon library, since this package ships no icons and expects a separate set package such as Blade Heroicons or Blade Font Awesome.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 72 days ago.
- What is it written in?
- Mainly PHP, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem Blade Icons solves for Laravel views
Pasting raw SVG markup into a Blade template is noisy. Every icon brings its own viewBox, stroke attributes and path data, and the same icon repeated across ten templates means ten copies to keep in sync. Blade Icons addresses that by letting you reference an SVG file by name from a Blade view. The README shows the transformation directly: a camera.svg file containing an svg element with a viewBox and two path children becomes a single component tag, x-icon-camera, or a directive call, @svg('camera', 'w-6 h-6'). The audience is Laravel developers who already use Blade and want icon markup out of their templates. It is not a design tool and not an icon collection. The README describes it as "a base package to make it easy for you to use SVG icons in your app", with icon sets distributed separately as third-party packages. That split is the central design decision, and it shapes everything else about adoption.
How the component and directive resolve an icon
Two entry points exist and they behave differently. The component form, x-icon-camera, is a Blade component whose name maps to an icon identifier, so the icon name becomes part of the tag. The directive form, @svg('camera', 'w-6 h-6'), takes the icon name as its first argument and a class string as its second. Both end up emitting the contents of the matching SVG file into the rendered HTML rather than referencing an external image, which means the icon inherits the current text color when the SVG uses stroke="currentColor", as the README example does. The class argument is what lets you size and color an icon without editing the file; in the README example the classes w-6 h-6 are passed at the call site. The repository layout shows a config/ directory and a src/ directory, so the icon lookup is configurable, and a bin/ directory alongside composer.json suggests a command-line entry point ships with the package. The README does not document the contents of that binary in the text provided.
Installing Blade Icons and rendering a first icon
The README points to Packagist for the package under the name blade-ui-kit/blade-icons, which is the name shown in its version and download badges. Because this is a base package, the icon itself normally arrives through a separate icon set package; the README lists dozens, including Blade Heroicons and Blade Font Awesome, each maintained by a different author. The README does not print a Composer install command, so the exact invocation comes from Composer's own documentation for the package name above. Once an icon is resolvable, the README gives two ways to call it. The component form is:
<x-icon-camera class="w-6 h-6" />And the directive form is:
@svg('camera', 'w-6 h-6')In the rendered page you should see the SVG markup from the source file inlined into the HTML, with the classes you passed applied to the root element. If the icon name does not resolve, the tag renders nothing useful, so the first thing to check when an icon is missing is whether the set package providing it is installed and registered.
Where Blade Icons is the wrong choice
The package renders SVG inline, which means every icon instance adds its full markup to the HTML response. A page that repeats the same icon fifty times in a table will carry fifty copies of the path data unless the set package or your build step does something about it. An SVG sprite sheet or an icon font avoids that duplication at the cost of a separate asset request, and for icon-heavy interfaces that trade-off is worth reconsidering. The second limitation is the packaging model. The README is explicit that the maintainers are "not accepting requests to build new icon packages ourselves", so coverage of any particular icon library depends on whether a community member has published a set package for it. If your design system uses a proprietary icon set, you are writing the set package yourself, and the README points to a "Building Packages" section for that. Third, this is a server-side rendering concern only. If your frontend is a separate JavaScript application that consumes a JSON API, Blade Icons has nothing to offer; the icon rendering has to happen where the Blade views are.
Blade Icons compared with an icon font or a JS icon library
The closest alternative in a Laravel codebase is an icon font loaded through CSS, where an icon is a span with a class and the glyph comes from a web font file. The difference in approach is where the artwork lives: a font ships one binary asset and the browser draws glyphs from it, while Blade Icons inlines SVG markup at render time. Fonts are simpler to cache and avoid per-icon markup, but they are monochrome by nature and the glyphs are not addressable as DOM elements for per-path styling. A JavaScript icon library such as the one behind Blade Lucide takes a third approach, injecting SVG on the client after hydration, which suits component frameworks but adds a runtime dependency and can flash before the icon appears. Blade Icons sits in the server-rendered camp: no client runtime, no extra asset request, full access to the SVG structure, and the cost is markup size. That cost is the honest basis for choosing between them.
Maintenance, upgrades and the MIT licence
The repository is not archived, and the last push was on 2026-07-20. Release 1.10.1 is dated 2026-06-30, with 1.10.0 and 1.9.1 earlier in 2026, so the 1.x line has seen recent tagged releases. The default branch is 1.x, which tells you where development lands. An UPGRADE.md file sits at the repository root, and its presence is the practical signal for upgrade cost: read it before moving between 1.x releases rather than assuming the minor version is inert. The package is MIT licensed, which in broad terms permits commercial and closed-source use with the licence and copyright notice retained; that is a description of the licence text, not legal advice, and your own counsel should confirm obligations for your distribution model. The larger maintenance question is not this package but the icon set package you pair with it. Those are separate repositories with separate maintainers, and a stale set package will not block Blade Icons from working, but it will freeze the icons you can reference by name.
Editorial conclusion
Adopt Blade Icons if you already render Blade views and want SVG icons addressed by name instead of pasted markup. Do not adopt it if you need a self-contained icon library, since this package ships no icons and expects a separate set package such as Blade Heroicons or Blade Font Awesome. Before installing, verify that your chosen set package supports the same major version of this package, and check the UPGRADE.md file for changes between 1.x releases.
Frequently asked questions
How do I use Blade Icons in a Laravel view?
Reference an icon by name either as a component, x-icon-camera, or through the directive, @svg('camera', 'w-6 h-6'). Both render the SVG markup inline, and the class argument controls sizing and styling at the call site.
Does Blade Icons include any icons of its own?
No. The README describes it as a base package for using SVG icons, with icon sets distributed as separate third-party packages such as Blade Heroicons and Blade Font Awesome.
What package name do I install Blade Icons under?
The README links to Packagist under the name blade-ui-kit/blade-icons, which is the package name shown in its version and download badges.
How do I build my own icon set package for Blade Icons?
The README states that the maintainers are not accepting requests to build new icon packages, and points readers to a Building Packages section for creating their own.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/driesvints-blade-icons)