leek/filament-dicebear
DiceBear avatar provider for Filament panels, supporting all 31 DiceBear styles with caching, per-model customization, and self-hosted instances. Just register the plugin and provider to give users without custom avatars a generated DiceBear avatar.
seedUsing(fn ($record) => $record->id) should be an explicit, documented decision.bottts-neutral, tenant-level entities get something distinct. This measurably helps admins scan large tables and reduces mis-targeted actions in support workflows.->customStyle('brand', $path)) allow an owned avatar language rather than shipping DiceBear's stock art in a customer-facing surface. Useful if avatars will ever appear outside the admin panel.getCustomAvatarUrl()) and treat it as the fallback layer.scale() semantics, removed getters) and a deprecation list scheduled for removal in 3.0. Adopting means accepting a future maintenance line item — pin the version and schedule a review before any 3.0.Adopt when all of the following hold:
HasAvatar models, so integration is registration plus a trait — no schema, no migration, no data model change.Look elsewhere (or build) when:
To executives (one paragraph): A small open-source add-on that gives every admin-panel user a distinct generated avatar when they haven't uploaded a photo. Roughly half a day of engineering, no database changes, no new vendor, and removal is a one-line revert. The v2 release renders avatars inside our own application, so no user data is sent to a third party. Main caveats: it's a single-maintainer package (pinned version, low blast radius) and some included art styles carry an attribution requirement we can avoid by selecting CC0 styles. Ask: approve as a timeboxed polish item, behind a config flag, with no roadmap slot committed beyond one day.
To engineering: composer require leek/filament-dicebear, register DiceBearProvider as the default avatar provider and DiceBearPlugin in the panel provider, optionally publish config. Use the native (default) driver — no HTTP calls, no rate limits. Enable disk caching (already default) and use the model id as seed. Pin the tag; v2 has breaking changes from v1 and a 3.0 deprecation list. Add a test asserting cache-file stability across config change (their 1.1.0 fix addressed exactly this class of bug).
Success measures for the pilot: reduction in "no avatar / broken image" reports, admin time-to-identify in user-heavy tables, zero external requests from admin pages, cache hit rate above ~95% after warm-up, and no measurable page-render regression.
Decision framing: treat this as reversible, cosmetic, and cheap. Say yes to the pilot, no to depending on it for anything identity-critical.
How can I help you explore Laravel packages today?