sashalenz/nova-activitylog
Nova Activity Log integrates spatie/laravel-activitylog with Laravel Nova, adding a resource to browse, filter, and inspect recorded model events and user actions from your admin panel. Quickly trace who changed what and when.
Architecture fit. sashalenz/nova-activitylog is a thin presentation layer over spatie/laravel-activitylog: it surfaces activity records inside Laravel Nova as a tool/resource (timeline and/or field), so it does not introduce a second audit pipeline. That is the right architecture — the source of truth remains Spatie's activity_log table and model, and Nova is only a read/query surface. The package therefore inherits the constraints of both dependencies: it is only viable if your application is already on Nova and either already uses Spatie activitylog or is willing to adopt it. It is not a standalone audit solution and should not be evaluated as one.
Integration feasibility. Integration is a Composer install plus provider/tool registration and, where relevant, attaching the field to existing Nova resources. Effort is measured in hours, not sprints, for a team already on Nova. The real cost driver is data, not code: retention of activity_log rows, causer/subject morph mapping, and whether historical records exist to backfill.
Technical risk. The release is a major version bump (1.1.1 → 2.0.0) with no substantive release notes — only an auto-generated changelog compare link. Under semver, a major bump is an explicit signal of breaking changes, but the specific breaks are unverified. The most probable breaking axes for a package of this shape are: a Nova major-version requirement (e.g. Nova 4 → 5), a PHP/Laravel floor raise, a rename or removal of the tool/field class or its config keys, or changed default behaviour in filtering/pagination of activity entries. None of these is confirmed by the supplied data. Treat the upgrade as an unquantified-risk change until the diff is read.
Key questions.
composer.json constraint set — Nova, Laravel, PHP, and spatie/laravel-activitylog?Stack fit. Assume Laravel + Nova, Composer-managed, with Spatie activitylog already present or planned. The package slots in as a dev-facing observability tool for admins — useful for support triage, compliance-adjacent change history, and debugging "who changed this record." It is not customer-facing and carries no runtime request-path risk.
Migration path. Do not upgrade in place blind. Sequence:
1.1.1 on the current branch to freeze known-good behaviour.1.1.1...2.0.0 diff and the new composer.json before touching code.composer update sashalenz/nova-activitylog --with-dependencies and inspect the lockfile delta.Compatibility. The binding constraint is the Nova major version. If 2.0.0 requires a Nova major you have not adopted, the upgrade is blocked behind a Nova upgrade — a much larger project. Determine this first; it decides whether this is a one-hour or one-quarter item. Secondary constraint: PHP/Laravel floors must align with the rest of the estate.
Sequencing. Resolve the Nova/PHP constraint question → if compatible, upgrade on a branch with a rollback pin → validate tool rendering, filters, and pagination against representative data volume → merge → only then consider adopting any new 2.0.0 capabilities. If the constraints do not align, stay on 1.1.1 and record the package as "version-locked pending Nova upgrade" in the dependency register.
Maintenance. Low code footprint, but the maintenance burden is dependency-coupled: every Nova or Laravel major will gate this package, and a single-maintainer project may lag. Budget a recurring review at each framework upgrade cycle rather than continuous effort. Track it in the dependency register with an explicit owner.
Support. Internal users are Nova admins and support engineers. The support surface is small: "the activity tab is empty / shows the wrong records" — almost always a causer/subject morph-map or log-name configuration issue rather than a package defect. Document the log-name and morph alias configuration once, in the runbook, and this becomes self-service.
Scaling. Read-path only. The scaling concern is the activity_log table, not the package: unbounded growth degrades the Nova tool's list queries and inflates the database. Mitigate with a retention/pruning policy (Spatie supports cleanup) and appropriate indexes on subject_type/subject_id and created_at. Establish a retention window (e.g. 90–365 days depending on audit obligations) before rollout, not after the table crosses millions of rows.
Failure modes.
LogsActivity were never enabled on the subject models — the package cannot compensate for absent source data. Verify coverage per model.activity_log table.Ramp-up. Effectively zero for engineers who know Nova — it is a tool registration plus a config file. The non-obvious learning is Spatie's configuration model (log names, causer resolution, attribute change capture), which is where misconfiguration actually occurs. Allocate a half-day of one engineer's time to read the diff, run the upgrade branch, and write the runbook entry. That is the entire realistic onboarding cost.
How can I help you explore Laravel packages today?