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 Media Library Laravel Package

wotz/filament-media-library

A Filament media library plugin for browsing, uploading, and managing reusable images and files. Provides a central media manager, picker integration for forms, and a clean interface for organizing assets in Laravel admin panels.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Context on signal: 18 stars, 0 dependents, an aggregate score of 18.4 and an opportunity score of 10.35 still put this firmly in "unvalidated" territory. v4.7.0 does not change the adoption picture — it is a two-PR minor release from a single maintainer with no new downstream consumers — but it does resolve two of the open architectural questions cheaply, and it corrects one framing error in the prior assessment. That is enough to sharpen the diligence, not enough to change the decision category. A TPM should treat the star count as absent ecosystem proof, not as evidence of poor quality, and price the diligence accordingly.

What v4.7.0 actually tells us:

  • Version line is 4.x, not pre-1.0. The prior assessment hedged on "pre-1.0 / low-adoption packages churn." The package is on a mature 4.x major with a 4.6.1 → 4.7.0 minor bump and no listed breaking changes. Correct the risk framing: the churn risk is minor-version API drift within a stable major, not wholesale pre-release instability. That is a materially smaller risk.
  • "Make the attachment model configurable" (PR #88) answers key question 3. The package has its own attachment model with a hard-coded default. This is a schema commitment — it owns (or at least fronts) its own table rather than thinly wrapping Spatie's media table. That is the expensive end of the data-model spectrum and must be priced as such. The configurability itself is a net positive: it means the model can be swapped or extended without a fork, which improves the exit ramp.
  • "Make the media grid usable: real breakpoints, card titles and a thumbnail fallback" (PR #89) answers key question 1. There is a genuine media grid/browser, not just a re-skin of SpatieMediaLibraryFileUpload. Thumbnail fallback also implies the authors are handling missing/failed conversions explicitly — a small but real signal that conversion edge cases are on their radar.
  • Maintainer is active, with a small, continuous cadence of scoped PRs. Bus factor remains 1.

Architecture fit:

  • The package targets a narrow, well-understood seam: a Filament admin panel that needs a shared, reusable media pool rather than Filament's built-in per-record upload field.
  • This is a presentation-layer package. It should not touch domain models, business logic, or queue topology. That keeps blast radius small and makes it easy to excise — the single most important property for a low-signal dependency.
  • Revised: the presence of a first-class "attachment model" confirms this is a media browser with cross-model reuse (genuine value, non-trivial to build), not a redundant re-skin. The trade is that we now inherit a schema.
  • Data-model fit is now the primary architectural question: does the attachment table sit alongside Spatie's media table or replace it, and does making the model configurable require a migration for existing installs? Verify before committing to a spike on existing data.

Integration feasibility:

  • Composer-level integration remains trivial: require, vendor:publish for config/migrations/assets, register the plugin on the target panel.
  • Since v4.7.0 is a minor bump with no documented breaking changes, an existing 4.6.x install upgrades without code changes — but confirm the attachment-model config is additive rather than a required republish of the config file.
  • The binding constraint is still version alignment across three moving targets — Filament major (v3 vs v4 have divergent form/table/asset APIs), Spatie MediaLibrary major, and Laravel/PHP. A package of this size realistically supports one narrow band.
  • PR #89 touches published assets and Tailwind breakpoints. Filament's panel asset pipeline is a recurring source of breakage for small plugins; verify published assets exist and match the installed Filament version.

Technical risk:

  • Bus factor 1. No dependents means no downstream users generating incident reports, no community patches, no compatibility pressure on upstream releases. Every Filament minor bump is our problem to detect.
  • API instability — downgraded. A stable 4.x major with clean minor releases is a better signal than assumed. Residual risk is config-surface drift (the new attachment-model setting) rather than core API churn.
  • Schema coupling — upgraded. The configurable attachment model is useful but confirms we are adopting a table. This is the item that makes the exit ramp costlier than a pure presentation-layer package would be.
  • Release metadata anomaly. The prior assessment flagged a last-release date of 2026-09-15 as either a data-pipeline artifact or a forward-dated tag. v4.7.0 does not resolve this — we still have no verified dates. Do not treat this release as evidence of a healthy cadence until tag history is checked; we can only say two PRs landed in one release.
  • Supply chain. MIT is permissive and fork-friendly — good. Pin exact versions and vendor or fork.
  • Security surface. Media uploads imply MIME validation, SVG/HTML sanitization, private-disk authorization, and signed-URL scoping. A UI-focused release is no evidence either way here. This still needs explicit review, not assumption.

Key questions:

  1. Does it implement a shared media browser, or wrap Filament's existing Spatie upload field? Answered: shared media grid confirmed.
  2. Which exact Filament / Spatie MediaLibrary / Laravel / PHP versions are in the constraint set, and is there CI proving it?
  3. Does it introduce its own schema, or reuse media? Answered: it owns an attachment model. Now: what is the table shape, and does the v4.7.0 model config require a migration?
  4. Is there a test suite, and does it cover authorization and upload validation?
  5. Who maintains it, what is the release cadence, and is there a contribution/funding signal? (partially answered: active single maintainer, small scoped PRs, no funding signal observed)
  6. Does it respect Filament's native multi-tenancy for disk paths and query scoping?
  7. Are conversions queued, and what happens to existing conversions when config changes? (thumbnail fallback in #89 suggests some handling — verify)
  8. New: can the attachment model be overridden cleanly (subclass, morph map, config), and does swapping it invalidate stored polymorphic references?

Integration Approach

Stack fit:

  • Clean fit for a Laravel + Filament monolith or modular monolith where the admin panel is already a first-class deliverable. Poor fit for headless/API-only products, non-Filament admin surfaces, or teams standardizing on a different media abstraction.
  • Assume Filament is the load-bearing constraint. If the roadmap includes a Filament major upgrade within twelve months, budget for this package to break.

Migration path:

  • Treat it as additive first: introduce the media library alongside existing upload fields behind a panel-level feature flag, on one non-critical resource.
  • The v4.7.0 configurable attachment model is the lever that makes a phased migration safer — it lets us point at an app-owned model (and potentially an app-owned table) rather than living with a package-owned one. Exercise it in the spike; if the override works cleanly, it converts a schema liability into a manageable one and strengthens the exit ramp considerably.
  • If replacing an existing per-model upload implementation, plan a two-phase migration — dual-write/backfill into the attachment table, verify referential integrity, then cut over and drop the legacy columns in a later release. Media records are typically the least-governed data in the system.
  • Explicit exit ramp: confine all package references to a small adapter layer (custom field wrapper, service class) so a swap to a fork or hand-rolled implementation touches a handful of files.

Compatibility:

  • Pin exact versions of the package and Filament and Spatie MediaLibrary in composer.lock; treat the lockfile as part of the design. v4.7.0 upgrades cleanly from 4.6.x on paper, but republish config to pick up the new attachment-model key.
  • Verify PHP extension and image-driver prerequisites (GD vs Imagick) in every environment, including CI and container images, before promising conversion behavior.
  • Validate storage disks end-to-end: local, S3-compatible, and any private disk. The new thumbnail fallback may mask conversion failures that previously surfaced as broken images — confirm failures are still observable in logs, not just visually swallowed.

Sequencing:

  1. Spike (1–2 days): install in a scratch panel, exercise upload/browse/attach/delete, override the attachment model via the new config, confirm behavior under both the default and overridden model.
  2. Code review (1–2 days): dependency tree, test coverage, authorization checks, upload validation, whether PR #88/#89 added tests, license and maintenance posture.
  3. Decision gate: adopt as dependency / fork-and-own / reject.
  4. If proceeding, pilot on one resource behind a flag for a full release cycle, then widen.

Operational Impact

Maintenance:

  • Still self-maintenance. Budget a named owner and a recurring allowance for compatibility patches at every Filament upgrade. If nobody will own it, do not adopt it.
  • Forking under our org remains a legitimate and probably preferable outcome: MIT permits it, the codebase is small, and v4.7.0's config surface makes a fork cheaper to maintain — we can carry our own attachment model upstream rather than patching internals.
  • Track upstream release notes as a review item; the 4.6.1 → 4.7.0 delta shows changes land in small, reviewable PRs, which is cheap to monitor.

Support:

  • No vendor, no SLA, no downstream community to lean on for triage. Internal escalation must terminate with our own engineers.
  • Documentation is likely a README; PR #88 adds a config knob that is probably under-documented. Plan for source-reading as the primary reference and capture findings in an internal ADR so knowledge is not single-threaded.

Scaling:

  • The admin UI does not scale-load; the media pipeline does. Watch conversion queue throughput, image-processing CPU, and storage growth.
  • Enforce retention and orphan cleanup from day one — soft-deleted models leaving attachment rows behind is the standard failure here and compounds quietly into storage cost.
  • Watch N+1s where media relations are loaded per row in Filament tables, especially now that the grid renders card titles; eager-loading is usually a config, not a package, concern.

Failure modes:

  • Filament major/minor upgrade breaks published assets or the field API — admin panel resource unusable. PR #89's breakpoint/Tailwind work increases exposure to Filament's asset pipeline specifically.
  • Attachment model override misconfigured → rows orphaned under the old morph/class reference; data present but invisible.
  • Storage or conversion misconfiguration → broken thumbnails or missing originals in production only. Thumbnail fallback may reduce user-visible breakage while hiding the underlying defect.
  • Orphaned media accumulating after record deletion or failed transactions.
  • Authorization gaps exposing private media via unsigned or over-scoped URLs.
  • Upload validation bypass (SVG/HTML, MIME sniffing) producing a stored-XSS path in the admin panel.
  • Maintainer abandonment, discovered only at the next framework upgrade.

Ramp-up:

  • Technically shallow: a mid-level Laravel developer is productive in the pilot phase within a day. Filament familiarity is the real prerequisite, not this package.
  • The genuine ramp-up cost is organizational — establishing ownership, a pinned-version upgrade ritual, an ADR, a decision on whether to own the attachment model, and a documented exit plan. Estimate 3–5 engineer-days of total diligence and setup before the first production resource, most of it review rather than coding.
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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource