awcodes/recently
Recently adds a "Recently Viewed" menu to Filament 4 and 5 panels, tracking visits to EditRecord and ViewRecord pages. Install via Composer, add the plugin, and include the trait on resource pages so users can quickly reopen records they've interacted with.
EditRecord/ViewRecord, a topbar render hook, global-search integration, per-user scoping, dedupe/ordering logic, and ongoing maintenance across Filament major versions. The package supplies all of it plus a supported upgrade path (v1 → v2 → v3 across Filament 3/4/5) for the cost of a composer require and a config file. Default recommendation: buy, unless navigation is a differentiated part of your product.global_search, menu, maxItems, width, icon, label, and renderUsingHook are all config-level product decisions, not code changes. That means a PM can A/B or stage placement (topbar menu vs. global search only) without an engineering cycle.max_stored_items and prune_after_days make retention an explicit product decision rather than an accident. Combined with track_records hiding deleted records, this addresses the two predictable stakeholder objections ("unbounded table growth" and "links to deleted records") with config, not custom work.Adopt when most of the following hold:
track_records feature; publish before enabling).@source path.Look elsewhere, or build, when:
user_model binding give you.QuickCreatePlugin or OverlookPlugin. Not a blocker, but you must exclude RecentEntryResource from both, and that pairing is an easy thing to forget during rollout.For executives (one paragraph). Our admin panel currently offers no way to return to a record you were just working on; users re-navigate from scratch every time. This is a small, well-scoped MIT-licensed Filament plugin that adds a "Recently Viewed" menu and search integration for roughly an afternoon of configuration instead of a multi-day internal build. It requires no changes to existing behaviour, is enabled per-resource so we can pilot it narrowly, includes retention controls so the tracking table can't grow unbounded, and can be removed with a single dependency deletion if it doesn't land. The main risk is maturity — it's a small community package with a single primary maintainer — which we mitigate by piloting in staging and limiting it to the highest-traffic resources.
For engineering (what they're actually signing up for).
composer require awcodes/recently, php artisan recently:install, register RecentlyPlugin::make() on the panel.HasRecentHistoryRecorder to the EditRecord/ViewRecord pages of targeted resources — tracking is opt-in and per-page, so blast radius is controllable.track_records (hides deleted records). Publish and run it before toggling the option.@source path, per the Filament custom-theme requirement.RecentEntryResource from QuickCreatePlugin and OverlookPlugin if present.max_stored_items and prune_after_days from day one and confirm model:prune is scheduled; set user_model to our App\Models\User.Recommendation: approve as a time-boxed pilot on 3–5 high-traffic resources, gated on staging validation and a retention configuration, with a one-sprint check on whether anyone actually uses the menu.
How can I help you explore Laravel packages today?