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

Mediable Laravel Package

tomshaw/mediable

Mediable is a lightweight Livewire media manager for Laravel that lets you upload, convert, and attach images, videos, and documents to blog posts, carousels, and product previews, with configurable file types, storage, and SEO-friendly names.

View on GitHub
Deep Wiki
Context7

A Laravel Livewire Media Manager.

Frequently asked questions about Mediable
What is tomshaw/mediable and what does it do?
Mediable is a Laravel Livewire media manager for uploading images, video, audio and files into blog posts, carousels and product previews. It handles uploads, WebP and AVIF conversion, SEO-friendly filenames, configurable disks and file policies, database storage and attachment events. It is a UI-first Livewire component package, not a headless media library.
What PHP, Laravel and Livewire versions does Mediable require?
Mediable documents PHP 8.5, Laravel 13.20 and Livewire 4.x, plus the gd or imagick PHP extension for WebP and AVIF conversion. Those requirements exclude most production apps still on PHP 8.2 to 8.4 and Laravel 11 or 12. A Laravel 12-capable line existed around 0.8.0, so pinning an older pre-1.0 branch is the only documented compatibility escape hatch.
How do I install Mediable in a Laravel application?
Run composer require tomshaw/mediable, then php artisan mediable:install, php artisan migrate, and php artisan storage:link. Add the @mediableStyles and @mediableScripts Blade directives to your layout alongside your @vite directives, and make sure APP_URL is set correctly in .env. The install command publishes a config file and creates an attachments table via the included migration. Review any files the install command writes before deploying.
Does Mediable work with Laravel 11 or 12 and PHP 8.2?
As documented, no: Mediable requires PHP 8.5, Laravel 13.20 and Livewire 4.x. If you are on Laravel 11 or 12, you would need to pin an older branch such as the 0.8.0 line that supported Laravel 12, which means shipping a pre-1.0 release. Verify the exact constraints on Packagist before committing.
How does Mediable store uploads and attach them to models like posts or products?
Uploads are recorded in an attachments table created by the package migration, and selections are handed to your form through Livewire events such as mediable.open with an id named argument and a mediable.on callback. The README does not document a polymorphic relation or model trait, so per-entity galleries are something you build on top of the attachments table. Integration is effectively ID or URL injection into Livewire-rendered forms. Plan your own association layer if products, posts or tenants need scoped media.
Can I configure allowed file types, maximum file size and the storage disk?
Yes, a single config file controls allowed mime types, maximum file size, storage disk and folder. That makes policy changes easy but centralized: validation lives in config rather than application form requests, so varying rules per upload context or per role takes extra work. Defaults allow zip, rar and doc files with no documented scanning, and the README suggests adding svg, which is a stored-XSS risk when served from your app origin.
Are WebP and AVIF conversions queued or run during the upload request?
Image conversion runs synchronously in the upload request path, and WebP and AVIF generation is on by default for both formats. AVIF also depends on a GD build with AVIF support. The documentation does not describe a queue option or per-environment switching, so expect extra CPU latency and roughly triple storage per image unless you change the config.
Is Mediable safe for multi-tenant applications and how is authorization handled?
Authorization and tenancy are undocumented, and a flat attachments table with a browser UI implies a global media pool. In a multi-tenant or role-differentiated product that is a plausible cross-tenant data exposure, and no third party has stress-tested the authorization model. Verify in source whether any policy, ownership or tenant field exists and whether it can be scoped without forking before any pilot.
Can I customize the Livewire views or use Mediable without Livewire, such as with Inertia or Vue?
Component granularity is good for white-labeling, but whether the Livewire views and config are publishable and overridable needs verification in the repo. There is no documented path for Inertia, Vue or plain POST forms, so the feature is gated to Livewire-rendered forms. If you need a headless media library, Mediable is not a drop-in fit.
Is Mediable production ready, how is it maintained, and what alternatives exist?
Treat Mediable as a conditional pilot, not a default choice: it is pre-1.0 with a single maintainer, about 20 stars, zero dependents and a very new version frontier. Positives include a README, per-version changelogs, tagged releases, a CI badge and PHPStan/Pint config, and 1.5.0 added garbage collection for hidden attachments. Ask about the post-1.0 backward-compatibility policy, release cadence, scheduled cleanup that reclaims files, and whether conversions can be queued or disabled. For headless or polymorphic media needs, evaluate more established alternatives against your Laravel version.
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.
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo
bernskioldmedia/laravel-harvest
bernskiold/laravel-data-scrubber
bernskiold/laravel-currency-converter
bernskiold/laravel-campaign-monitor
bernskioldmedia/laravel-autotranslate
siberfx/telegram-bot
roy-sandip/laravel-view-extended
gregsphotography/site-builder-core
roy-sandip/laravel-view
anodyne/blade-fluentui-icons
webx-ui/module-catalog-collections