Filament Studio supports snapshot-based version history for records. When enabled, every update creates a version entry containing the complete record state before the change.
Versioning can be enabled globally or per collection.
FilamentStudioPlugin::make()
->enableVersioning();
Toggle enable_versioning on individual collections through the admin UI or programmatically:
$collection->update(['enable_versioning' => true]);
The RecordVersioningObserver is registered on the StudioRecord model. When a record is updated:
StudioRecordVersion is createdIdentical consecutive edits (no actual data change) do not create new versions.
Each version record contains:
| Field | Description |
|---|---|
record_id |
The record this version belongs to |
collection_id |
The collection (for efficient querying) |
snapshot |
JSON object of all field values at that point in time |
created_by |
User who triggered the update |
created_at |
When the version was created |
tenant_id |
Tenant scope |
In the record edit page, version history is displayed when versioning is enabled. Users can view previous snapshots and restore a record to a prior state.
Soft deletes are a separate feature that can be enabled alongside versioning:
FilamentStudioPlugin::make()
->enableVersioning()
->enableSoftDeletes();
When soft deletes are enabled, deleted records are marked with a deleted_at timestamp rather than being permanently removed. They can be restored through the admin interface.
How can I help you explore Laravel packages today?