- Does filament-announcements work with Filament v3 or v4?
- No. The package is built for Filament v5 only, so it cannot be installed on a v3 or v4 panel because the resource, schema, and widget APIs differ across majors. If your estate is still on Filament v3 or v4, the practical path is to treat the repository as a reference implementation and build the equivalent natively on your current version. That also removes the upgrade tax on the next Filament major release.
- How do I install marcelodelgado/filament-announcements?
- Install it with Composer using composer require marcelodelgado/filament-announcements, then publish the config, migrations, and assets. Register the plugin in your target PanelProvider so the dashboard widget and AnnouncementResource are attached to the panel. Finally run the migrations, and optionally seed sample announcements to confirm the widget renders correctly.
- How does automatic expiration work without a scheduled job or queue worker?
- Expiration is driven by starts_at and expires_at date windows rather than a scheduled task or queued job. The widget query evaluates which announcements are currently active at render time, so no background worker is required. Be aware that timezone handling at the exact publish and expiry boundary is a common source of subtle bugs, so test those transitions explicitly.
- How is per-user dismiss stored, and is it cleaned up when a user is deleted?
- Dismissals are recorded per user in a pivot table, so each user's dismissed state is remembered without affecting anyone else. The README does not document the migration's foreign key behavior, so verify that the pivot has cascading foreign keys on both user and announcement deletion. Without cascade or a cleanup hook, dismissing users or deleted announcements can leave orphaned pivot rows.
- Is announcement content sanitized, or can authors inject HTML and script tags?
- The package documentation does not state whether the announcement body is rendered as trusted HTML or escaped as plain text. Since anyone with authoring rights can write content that appears on every panel user's dashboard, confirm the rendering behavior before granting access. If raw HTML is allowed, restrict the authoring permission to trusted administrators or sanitize input yourself.
- How do I control who can create and manage announcements?
- The package advertises flexible permissions that work out of the box, with optional Gate or Spatie integration. By default, treat the CRUD resource as reachable by any panel user unless you explicitly gate it. Verify that authorization routes through Filament policies or a Gate before deploying, otherwise every panel user effectively becomes an announcement author.
- Does the dashboard widget support multi-tenancy and per-panel scoping?
- Multi-tenancy support is not documented in the README, so this needs verification against your panel configuration. If the widget query is not tenant-aware, announcements created in one tenant or panel could leak into another. Test with two tenants and two panels before rolling it out across an institutional installation.
- Is the package tested and actively maintained, or should I worry about abandonment?
- The project is maintained by a single author with a small install base and no dependents, and its maturity is README-level rather than backed by a test suite or long release history. For a feature this small, abandonment is not catastrophic because you can fork or reimplement it quickly. The real cost is that the next Filament major upgrade would land on your team rather than upstream.
- Can I translate the widget and resource strings into another language?
- Yes. All user-facing strings pass through Laravel's __() helper and the package ships publishable language files. Publish them and add a locale file for your language, then set the application locale as usual. This makes it practical for institutional panels that need to display announcements in more than one language.
- Should I use this package or build announcements myself in Laravel and Filament?
- The feature surface is small: one model, one migration, one resource, one widget, and one dismissal pivot table. A competent Filament developer can reproduce it in roughly one to three days, so adopting the package buys convenience rather than capability. Choose it when you are already on Filament v5 and want it working today; build in-house when you need policy control, tenant scoping, or sanitization guarantees the package does not document.