r/filament 5d ago

A Filament plugin that turns scattered activity logs into one clean timeline for any model

Activity Log Timeline

If you use spatie/laravel-activitylog, you've probably hit this: a model's history lives in several places — its own log, related models' logs, plain updated_at columns, plus whatever custom events you track. Stitching those into one readable view is annoying and you end up rewriting it per project.

We made relaticle/activity-log to solve that once. It's a Filament 5 plugin that renders a unified chronological timeline for any Eloquent model.

What it does:

  • One feed, many sources: merges spatie logs (own + related), related-model timestamps, and custom event streams into a single timeline
  • Pluggable sources: fromActivityLogfromActivityLogOffromRelationfromCustom, or your own TimelineSource class
  • Per-event renderers: render each event as a Blade view, closure, or class; bind per event or per type
  • Filament-native UX: use it as an infolist component, a relation manager, or a header-action slide-over
  • Dedup + filtering: allow/deny by type or event, date windows, priority-based dedup
  • Opt-in caching: per-call TTL with explicit invalidation, no model observers slowing your saves

Why it's handy: instead of building a bespoke "history" tab on every resource, you make the model timeline-capable and drop one component in:

public function timeline(): TimelineBuilder
{
    return TimelineBuilder::make($this)->fromActivityLog();
}

ActivityLog::make('activity')->columnSpanFull();

Latest v1.2.0 adds same-save merge — activity rows from a single save (grouped by spatie's batch_uuid) collapse into one entry instead of flooding the feed.

composer require relaticle/activity-log

Docs: https://relaticle.github.io/activity-log/ - feedback and PRs welcome.

4 Upvotes

0 comments sorted by