Recently
CommunityEasily track and access recently viewed records in your filament panels.
Author:
Adam Weston
Package health
BetaAutomated checks of this plugin's Composer package
15 checks
- Passed: GitHub Actions pinned to SHA
- Skipped: GitLab CI includes pinned to SHA
- Passed: Open security advisories
- Passed: Dependabot PR responsiveness — No open Dependabot PRs.
- Skipped: Renovate MR responsiveness
- Passed: Dependabot or Renovate configured
- Passed: Dependency update cooldown configured
- Passed: Provides a security policy
- Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
- Passed: Commit and release recency — Active: last commit 5 days ago; last release 104 days ago.
-
Passed:
composer.lock not committed by library
—
composer.lockis absent from the released dist archive. - Passed: Dist archive is lean
-
Passed:
Current Laravel version supported
—
Package dependencies resolve together with current Laravel
13.0. -
Passed:
Current PHP version supported
—
Constraint
^8.2supports current PHP8.5. - Skipped: Current Symfony version supported
filament/
namespace. Review the source and install at your own risk. Found
malware or an unresolved security issue the author won't
address?
Report it
.
Documentation
- Compatibility
- Installation
- Usage
- Configuration
- Appearance
- Testing
- Contributing
- Security Vulnerabilities
- Credits
- License
Easily track and access recently viewed records in your filament panels.
#Compatibility
| Package Version | Filament Version |
|---|---|
| 1.x | 3.x |
| 2.x | 5.x |
| 3.x | 4.x & 5.x |
#Installation
You can install the package via composer then run the installation command and follow the prompts:
composer require awcodes/recently
php artisan recently:install
[!IMPORTANT] If you have not set up a custom theme and are using Filament Panels follow the instructions in the Filament Docs first.
After setting up a custom theme add the plugin's views to your theme css file or your app's css file if using the standalone packages.
@source '../../../../vendor/awcodes/recently/resources/**/*.blade.php';
#Usage
The plugin adds a “Recently Viewed” functionality in your filament panel(s), letting users quickly access resources they’ve recently interacted with. It tracks views/visits to EditRecord and ViewRecord pages of resources where it’s enabled.
#Registering the plugin
use Awcodes\Recently\RecentlyPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
RecentlyPlugin::make(),
])
}
#Possible Conflicts
If you are using QuickCreatePlugin or OverlookPlugin you will need to exclude the RecentEntryResource from them.
OverlookPlugin::make()
->excludes([
RecentEntryResource::class,
]),
QuickCreatePlugin::make()
->excludes([
RecentEntryResource::class,
]),
#Tracking Recent
To record recent edits/views, include the trait on EditRecord or ViewRecord pages of the resources you want to monitor:
Recent Edits:
use Awcodes\Recently\Concerns\HasRecentHistoryRecorder;
class EditUser extends EditRecord
{
use HasRecentHistoryRecorder;
protected static string $resource = UserResource::class;
}
Recent Views:
class ViewUser extends ViewRecord
{
use HasRecentHistoryRecorder;
protected static string $resource = UserResource::class;
}
#Configuration
You can enable/disable or customize the plugin's features either globally through the config file or per panel.
// config/recently.php
return [
'user_model' => App\Models\User::class,
'max_items' => 20,
'width' => 'xs',
'global_search' => true,
'menu' => true,
'icon' => 'heroicon-o-arrow-uturn-left',
];
#Global Search
By default, the plugin will list the recent visits/views as part of the global search results. To disable this feature, set the global_search option to false from the config or by passing false to the globalSearch() method per panel.
use Awcodes\Recently\RecentlyPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
RecentlyPlugin::make()
->globalSearch(condition: false),
])
}
#Menu
By default, the plugin will list the recent visits/views as a dropdown menu in the topbar using the PanelsRenderHook::USER_MENU_BEFORE render hook. To disable this feature, set the menu option to false in the config or by passing false to the menu() method per panel.
use Awcodes\Recently\RecentlyPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
RecentlyPlugin::make()
->menu(condition: false),
])
}
#Appearance
#Icon
Set a custom icon for the menu.
use Awcodes\Recently\RecentlyPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
RecentlyPlugin::make()
->icon('heroicon-o-clock'),
]);
}
#Rounded
The menu icon is round you can opt out of this by passing false to the rounded() method.
use Awcodes\Recently\RecentlyPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
RecentlyPlugin::make()
->rounded(condition: false),
]);
}
#Label
The menu has no label, but you can set a custom label by passing a string to the label() method.
use Awcodes\Recently\RecentlyPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
RecentlyPlugin::make()
->label('Recently Viewed Records'),
]);
}
#Width
The dropdown menu uses the filament dropdown blade component, so you can use any of the options available, the default is xs.
use Awcodes\Recently\RecentlyPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
RecentlyPlugin::make()
->width('sm'),
]);
}
#Max Items
Specify the maximum number of recently viewed items to display in the menu.
use Awcodes\Recently\RecentlyPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
RecentlyPlugin::make()
->maxItems(10),
]);
}
#Render Hook
The plugin will render the menu using the PanelsRenderHook::USER_MENU_BEFORE hook. However, you can change this using the renderUsingHook() method by providing one of the other available filament Render Hooks.
use Awcodes\Recently\RecentlyPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
RecentlyPlugin::make()
->renderUsingHook('PanelsRenderHook::USER_MENU_AFTER'),
]);
}
#Testing
composer test
#Contributing
If you want to contribute to this plugin, you may want to test it in a real Filament project:
- Fork this repository to your GitHub account.
- Create a Filament app locally.
- Clone your fork in your Filament app's root directory.
- In the
/recentlydirectory, create a branch for your fix, e.g.fix/error-message.
Install the plugin in your app's composer.json:
"require": {
"awcodes/recently": "dev-fix/error-message as main-dev",
},
"repositories": [
{
"type": "path",
"url": "recently"
}
]
Now, run composer update.
Please see CONTRIBUTING for details.
#Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
#Credits
#License
The MIT License (MIT). Please see License File for more information.
The author
Adam is a full-stack web developer (with a focus on Laravel) who has been coding for close to 20 years. He is a core Filament team member as well and has authored numerous plugins for Filament such as Curator, Tiptap Editor and Table Repeater, to name a few. You can learn more about Adam on his website.
From the same author
Shout
A simple inline contextual notice for Filament Forms, basically just a fancy placeholder.
Author:
Adam Weston
Botly
Botly is a Filament plugin to manage your site's robots.txt file directly from a Filament admin panel.
Author:
Adam Weston
Table Repeater
A modified version of the Filament Forms Repeater to display it as a table.
Author:
Adam Weston
Tiptap Editor
A Rich Text Editor plugin for Filament Forms.
Author:
Adam Weston
Featured Plugins
A selection of plugins curated by the Filament team
Blueprint
Filament Blueprint is a premium Laravel Boost extension that helps AI agents produce accurate, detailed implementation plans and security reports for Filament apps.
Filament
Data Lens
Advanced Data Visualization for Laravel Filament - a premium reporting solution enabling custom column creation, sophisticated filtering, and enterprise-grade data insights within admin panels.
Padmission
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament