aymanalhattami/filament-slim-scrollbar
Slims down every scrollbar in your Filament app—sidebars, tables, and more—using pure CSS with no JavaScript or extra libraries. Supports both light and dark modes. Just install via Composer and you're done.
Architecture fit
This is not an architectural component — it is a presentation-layer asset. The package ships a service provider that registers a stylesheet with Filament's asset pipeline; there is no config file, no publish step, no panel-provider registration, no migration, and no PHP API surface we would ever call. That means it is architecturally inert: it cannot influence domain boundaries, data flow, or module coupling regardless of whether the host app is a modular monolith or a layered Laravel app. Its only contact surface is the rendered <head> of a Filament panel.
Treat it as a design token, not a dependency. The correct mental model is "we adopted a 20-line CSS rule," which reframes the entire risk conversation.
Integration feasibility
Trivially feasible. composer require aymanalhattami/filament-slim-scrollbar plus a cache clear is the whole onboarding. The one real decision is version selection: ^2.x for Filament 3/4/5, ^1.x for Filament 2. Effort for a single engineer, inclusive of QA, is well under a day.
One documentation defect worth flagging to the team: the README's version-matrix note links to filament-page-with-sidebar, a copy-paste leftover from the author's other package. Low harm, but it is a signal about documentation rigor — verify constraints against Packagist / composer show, not the README prose.
Technical risk
Blast radius is as small as a dependency gets: pure CSS, zero JavaScript, no external libraries, no server-side execution path. It cannot throw exceptions, touch the database, or affect request performance beyond one small asset. Residual risks are all cosmetic and silent:
->viteTheme() with custom scrollbar rules will either override or be overridden. Failure is visual and produces no error — easy to miss in review.min-width: 1024px media query, so mobile is intentionally untouched. That is a defensible choice but creates a desktop/mobile inconsistency that should be a conscious decision, not a surprise.scrollbar-width/scrollbar-color (added in 2.1.0); WebKit uses ::-webkit-scrollbar. Both paths need verification — a Chromium-only check proves nothing.Key questions
viteTheme? If yes, why take a dependency instead of copying the rules in?Stack fit
Any Laravel 10/11/12 + Filament 3/4/5 application. No PHP version, extension, or build-tool constraints beyond Filament itself. This is a horizontal, app-wide concern with no per-feature wiring.
Migration path — two viable options, pick by context
viteTheme stylesheet and drop the dependency. Correct when a custom theme already exists, when the app is long-lived, or when the org restricts third-party UI dependencies. Optimizes for supply-chain independence and gives us control over the media query and accessibility tokens.My recommendation for a product with a multi-year horizon: Option B, using Option A only as a same-day spike to preview the look. The package's real value is the opinionated CSS, not the delivery mechanism, and the CSS is short enough to own outright.
Compatibility
Pin the constraint explicitly rather than relying on the README. Confirm the resolved version against the Filament version in composer.lock. Note that Filament 4/5 support entered in 2.1.1 via a community contribution — validate it against our actual Filament minor, not against the badge.
Sequencing
Maintenance
Runtime maintenance is effectively zero — nothing to configure, monitor, or patch operationally. The cost is not upkeep but upgrade-time verification: the CSS is coupled to Filament's DOM and class names, so it can silently stop applying after a Filament major. Budget a recurring 30-minute QA task per Filament upgrade rather than an ongoing ownership burden.
Support
Bus factor is one. 51 stars, zero dependents, a changelog dominated by dependency bumps rather than feature work, and no commercial backing. Support means GitHub issues with no SLA. For a cosmetic asset this is acceptable — but only because the fallback (vendor the CSS) is trivial. That asymmetry is the whole reason this is a safe bet.
Scaling
No runtime scaling concern. A few hundred bytes of CSS, no build step, no request amplification, no state. It behaves identically at 10 users and 100,000. The only thing that "scales" is the number of panels and themes requiring manual QA — a linear, human cost.
Failure modes
Ramp-up
Minutes. Any engineer can read the entire package. The only onboarding artifact worth producing is a short ADR stating which option we chose, why, and the removal procedure. No training, no runbook, no on-call implications.
TPM verdict: Low-cost, low-value visual polish with an unusually clean risk profile and a built-in exit. Accept it, but prefer vendoring the CSS into our own theme so that a cosmetic improvement never becomes a standing third-party dependency — and make the accessibility check on hit-target size and dark-mode contrast an explicit gate rather than an afterthought.
How can I help you explore Laravel packages today?