solar-icons/blade
solar-icons/blade provides Laravel Blade components for rendering Solar icon sets, making it easy to drop scalable SVG icons into your views with simple, expressive tags and minimal setup.
Architecture fit
This is a Laravel Composer package that registers an icon set as Blade components (<x-solar-*>) plus an svg() helper and a publishable set of raw SVG assets. It emits inline SVG, so it slots into any Laravel rendering path (Blade views, Livewire, Inertia SSR output, mail templates) without touching the build pipeline. The v2.0.1 change moves stroke-width from per-file markup into a single package config value that is applied at render time by Blade Icons. Architecturally this is the right direction: one source of truth, styling controlled centrally rather than through per-asset duplication.
Integration feasibility
Low effort. composer require, optional vendor:publish for config and/or raw assets, then use the components. No JS dependency, no asset compilation step unless the team chooses to consume the published raw SVGs. The only new integration decision introduced by this release is whether the app depends on inline components (affected by the config) or on published raw SVG assets (no longer carries a baked stroke-width).
Technical risk
Moderate, and non-obvious for a patch-level release. The prior behavior produced a duplicate stroke-width attribute whenever a caller overrode stroke width on a static component or via svg(). Duplicate attributes are invalid markup and browsers honor the first occurrence, so overrides were silently ignored — the fix is real and valuable. However, two behavioral consequences follow:
stroke-width and fall back to the SVG default (1). Any consumer that publishes assets and renders them standalone — email templates, <img> tags, CDN-served sprites, Figma handoffs — will see thinner strokes than in v2.0.0.
Visual regression risk is the dominant concern, not runtime failure. Nothing throws; icons just look different.Key questions
stroke-width land on the root <svg> and inherit, or is it applied per-path? Inheritance behavior matters for multi-path icons and for CSS overrides.blade-ui-kit/blade-icons versions are required, and is that constraint tight enough to guarantee the new attribute-resolution path?Stack fit Standard Laravel service-provider + Blade component registration; no framework version coupling beyond normal requirements. Fits apps on Blade, Livewire, Filament, and Inertia equally. Teams rendering icons in outbound email or static HTML should treat the published-asset path as a separate integration with its own styling contract.
Migration path
For most consumers this is a composer update with a visual diff. Recommended sequence:
Compatibility
Two compatibility surfaces: the Blade Icons constraint (must support config-driven stroke-width emission) and the app's own published assets, which are effectively forked at publish time. Published assets do not auto-upgrade — they are a manual migration even though the package version is a patch. Teams that pin the package but consume assets from a CDN or a checked-in directory have a split-brain risk between the component output and the asset output.
Sequencing
Pin the dependency, update in a dev branch, capture before/after screenshots of the top icon surfaces, verify override behavior (stroke-width passed on a static component and via svg()) now takes effect, then roll to staging and production. Treat the published-asset decision as a separate change ticket so the two behavioral changes are not diagnosed simultaneously.
Maintenance Net positive. Stroke width becomes one config line instead of a property smeared across every generated file, so design-system changes no longer require republishing. The offsetting cost is that the config file is now load-bearing: it must live in version control, be present in every environment, and be reviewed when changed. Add it to the set of files checked during environment parity audits.
Support Expect a small wave of "icons look thinner" reports after upgrade, concentrated among teams using published assets or email templates. Support guidance should lead with the two-line explanation (config controls components; raw assets intentionally have no baked width). The duplicate-attribute fix should reduce a prior class of tickets — "my stroke-width override does nothing."
Scaling No meaningful runtime scaling change: same inline SVG payload, same component resolution path. A config-driven attribute is marginally cheaper than duplicated attributes per file and reduces published-asset bytes. For icon-dense UIs, the usual advice still applies — consider sprites or caching rendered partials rather than thousands of inline SVGs.
Failure modes
config:cache refresh; a stale cache looks like a broken upgrade.Ramp-up Near zero for developers using components — the API surface is unchanged. The ramp-up burden falls on whoever owns the design system: understanding the config key, owning the value, and deciding the published-asset contract. Budget a short pairing session with design to confirm the new default matches the intended visual spec before the upgrade goes wide.
How can I help you explore Laravel packages today?