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

Filament Icons Laravel Package

tomatophp/filament-icons

Filament Icons adds an icon picker, icon table column, and icon provider to FilamentPHP. Install via Composer, cache icons with filament-icons:install, then use IconPicker and IconColumn in forms and tables, including custom icons.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • tomatophp/filament-icons is a narrow Filament-only UI accelerator: an IconPicker form component, an IconColumn table column, and a cached icon provider. It has no role outside a Filament admin panel and does not touch domain logic, persistence design, or API surfaces.
  • For a TPM this should be classified as a developer-velocity and UX-consistency dependency, not a platform capability. Its value is eliminating repeated hand-built pickers, icon search, and column renderers across admin resources.
  • Coupling is native to Filament's component model, with one structural constraint: package majors follow Filament majors. v5 requires Filament ^5.0 / Livewire 4; Filament v4 panels must stay on the v4 branch. The package therefore rides the Filament upgrade train rather than acting independently.
  • The data contract is simple but unenforced: icon values persist as provider-compatible class/template strings. Without a validation rule and fallback renderer, malformed or retired icon names fail silently in the UI.

Integration feasibility

  • Mechanically low effort: composer require tomatophp/filament-icons, run php artisan filament-icons:install to warm the icon cache, then use IconPicker::make('icon') and IconColumn::make('icon'). Views and config can be published via vendor:publish tags.
  • Custom libraries register through the FilamentIcons facade in a service provider (asset URL, template, prefix replacements, icon list), followed by filament-icons:clear and filament-icons:install. Feasible, but it converts icon-set registration and cache lifecycle into permanent deployment runbook items.
  • The actual effort sits in prerequisite and governance work: confirming Laravel 12/13, PHP 8.3/8.4, Filament/Livewire majors per panel, verifying light/dark rendering, defining validation and fallback behavior for stored values, and security-reviewing custom templates and external CSS assets.

Technical risk

  • Adoption and supply-chain risk: 39 stars and 0 reported dependents means minimal community validation. MIT licensing is favorable, but there is no commercial SLA, no security-response commitment, and no evidence of broad production hardening. Treat as tactical OSS with version pinning and a documented exit plan.
  • Filament major-version lock: a Filament upgrade becomes a coupled package + Livewire upgrade. Branch divergence (v5 vs v4) must be tracked per panel; mixing branches across panels is a latent breakage vector.
  • Platform floor: v5 demands Filament ^5.0, Livewire 4, Laravel 12/13, PHP 8.3/8.4. Teams on older stacks cannot adopt without a platform upgrade that dwarfs the package's own integration cost.
  • Cache and deployment risk: the icon registry is populated by an artisan command. New nodes, container rollbacks, or provider changes yield blank or stale icons if warm/clear steps are missing from CI/CD or multi-node deploys.
  • Rendering/security risk: custom icon templates and external asset URLs are trusted-code inputs. Stored icon values should be constrained to known provider entries to avoid injection or broken-render paths.
  • Maintenance concentration: low adoption plus a likely single-maintainer profile raises bus factor. Do not plan around timely fixes for our specific edge cases.

Key questions

  • Which Filament and Livewire majors are we on today per panel, and what is each panel's upgrade roadmap?
  • Is searchable icon selection a committed product requirement or a deferrable UI convenience?
  • How many panels and resources would consume it, and who owns icon taxonomy, provider approval, and naming conventions?
  • Do we need sets beyond Heroicons and our own providers, and can all external assets be self-hosted or vendored?
  • Where are icon values stored, how are they validated on write, and what renders when a provider or icon name disappears?
  • Can we accept a low-adoption dependency, and what is the fork-or-replace trigger threshold?
  • Does custom template rendering pass security review, and who signs off on each new provider registration?
  • How will filament-icons:install and filament-icons:clear be sequenced in CI/CD, blue/green deploys, and rollbacks?

Integration Approach

Stack fit

  • Adopt only for Filament admin panels on Laravel 12/13, PHP 8.3/8.4, Filament v5; pin the v4 branch for Filament v4 panels.
  • Strong fit for internal tools, back-office CRUD, and rapid admin delivery where visual consistency outweighs bespoke illustration. Weak fit for customer-facing UI, non-Filament frontends, or teams needing animated/custom SVG workflows.
  • Size expectations accordingly: hours of integration, not a project. Position it as a small-blast-radius UI productivity dependency rather than a strategic platform component.

Migration path

  • Inventory every Filament panel with its Filament, Livewire, PHP, and Laravel versions, plus each existing icon field and how values are currently stored.
  • Select the package branch per Filament major and record the decision; do not mix branches across panels or share config across majors.
  • Pilot in one non-critical admin panel: install, warm the cache, publish config/views only if defaults are insufficient, then wire a single form picker and a single table column.
  • Define the icon field contract before wider rollout: allowed provider values, validation rule, default/fallback icon, and a backfill for records holding free-text icon strings.
  • Register custom libraries only through reviewed provider code committed to the repo, with asset URLs, templates, prefixes, and refresh steps documented inline.
  • Roll out panel by panel against written acceptance criteria; avoid a big-bang migration.

Compatibility

  • v5: Filament ^5.0, Livewire 4, Laravel 12/13, PHP 8.3/8.4; CI covers PHP 8.3/8.4 on Laravel 12 and 13, tested with Pest 4/5 and Testbench 10/11. v4 branch covers Filament v4. There is no supported path for Filament v3 or older Laravel/PHP, so any such panel is out of scope until a platform upgrade lands.
  • Icon column fixes across the 1.x line (unlisted icons beyond a 50-item limit, empty column values, native select rendering) indicate the picker's search/limit behavior has had recurring edge cases — regression-test those paths explicitly during the pilot.
  • Localization is community-contributed and partial; confirm the panel's locales are covered or accept English fallback.

Sequencing

  1. Platform readiness check (Filament/Livewire/PHP/Laravel per panel) and branch decision.
  2. Security and dependency review of the package and any external icon assets.
  3. Single-panel pilot with picker + column and written acceptance criteria.
  4. Define and enforce the icon field contract, then backfill existing data.
  5. Roll out per panel, adding custom providers only as approved and reviewed.
  6. Bake filament-icons:install into build/deploy and document clear for provider changes.

Operational Impact

Maintenance

  • Low steady-state code burden (two components plus config), but three ongoing obligations: keeping package major aligned with Filament major, curating the approved icon/provider list, and maintaining the cache warm/clear steps.
  • Budget a small recurring slice of admin-UI capacity for icon taxonomy ownership; unowned icon sets drift into inconsistent naming and duplicated providers.

Support

  • No vendor support channel; upstream is a volunteer OSS project. Internal support means the team that integrated it, with an escalate-to-fork path.
  • Expect questions of the form "why is this icon blank / not in the picker" — these map to cache staleness, provider not registered, or a value outside the cached set. Publish a short troubleshooting note to deflect them.

Scaling

  • The picker is a searchable list over a cached icon set, so UI cost scales with icon-set size rather than record count — acceptable at typical panel volumes, but very large custom sets should be measured during the pilot.
  • Multi-node and autoscaled deployments are the real scaling concern: every node needs a warm cache, so the install command belongs in the image build or a deploy hook, not a one-off manual step.
  • Table columns render per row; heavy admin tables with many icon columns are fine, but confirm no per-row asset fetch is introduced by custom providers.

Failure modes

  • Cold or missing cache → blank icons or empty pickers, typically after a new node or rollback.
  • Provider asset URL unreachable or blocked by CSP → broken glyphs with no error surfaced to users.
  • Filament/Livewire major drift → component render errors or silent no-ops after an upgrade.
  • Stored icon no longer in the provider list → empty cell; needs a fallback renderer and a periodic audit.
  • Malformed or attacker-influenced icon value → injection risk in custom templates; mitigate with a validation allowlist.
  • Upstream abandonment → no fixes for new Filament majors; contingency is fork-and-maintain the two components.

Ramp-up

  • Developer ramp-up is near zero: one Composer require, one artisan command, two component calls, and a documented provider registration snippet.
  • Team ramp-up is mostly process, not skill: teaching the icon field contract, the provider approval gate, and the cache lifecycle in deploys.
  • Estimate roughly half a day to a day for a piloting engineer including security review and validation wiring; onboarding additional panels thereafter is an hour-scale task each.
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.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle