xiidea/easy-audit
Easy Audit adds simple, automatic audit trails to Laravel Eloquent models. It logs create, update, and delete events with old/new values, records the responsible user, and offers configurable tracking for reliable change history.
What the release actually is. 3.0.2 is a single-change compatibility release: it widens the Symfony version constraint to include 7.4 (PR #64). No new features, no API changes, no deprecations, no migration steps. Treat it as a maintenance bump, not a capability change.
Architecture fit — the framing needs correcting first. xiidea/EasyAuditBundle is a Symfony bundle built on Doctrine ORM event listeners, not a Laravel package. There is no service provider, no Eloquent integration, no Laravel auto-discovery. If the target application is Laravel, this is a hard architectural mismatch and the evaluation should stop here — the Laravel-native comparables are owen-it/laravel-auditing or a custom observer/event-based trail. If the target is Symfony + Doctrine, the bundle is architecturally coherent: it hooks Doctrine lifecycle events, writes to dedicated audit tables, and stays out of the domain model's way.
Integration feasibility (Symfony/Doctrine path). Straightforward. Composer install, bundle registration in config/bundles.php, a config block selecting audited entities, and a schema migration to create the audit tables. The 3.0.2 constraint widening means the bundle will not block a Symfony 7.4 upgrade that the rest of the platform is driving toward — that is the entire value of this release.
Technical risk.
Key questions for the team.
EventListener + one audit table sufficient for our needs, making the dependency unnecessary?Stack fit. Only viable on PHP 8.x + Symfony 6.x/7.x + Doctrine ORM. Confirm the wider platform is not mid-migration to API Platform, Doctrine ORM 3, or a different persistence layer before committing, since the bundle's value is tied to Doctrine lifecycle events.
Migration path. For a greenfield or existing Symfony service: (1) install and register the bundle, (2) enumerate the entities requiring audit and configure them explicitly rather than globally — global auditing is the most common cause of table bloat, (3) generate and review the audit schema migration, (4) backfill only if policy requires historical coverage, which is usually cheaper to skip with a documented start date, (5) wire a read path (admin UI or export) so the audit data is actually consumed and not just accumulated.
Compatibility. The 3.0.2 change is additive and non-breaking; existing 3.0.1 installs upgrade with a composer update. Consumers on Symfony ≤ 7.3 are unaffected. The practical effect is that adopting this package no longer pins the platform below Symfony 7.4 — which matters if a framework upgrade is already on the roadmap.
Sequencing. Sequence the bundle upgrade after or in lockstep with the Symfony 7.4 platform upgrade, not before — the bundle is the dependent, not the driver. If the Symfony upgrade is already blocked on this package, 3.0.2 unblocks it and should be scheduled as a small enabler ticket inside that larger effort. Pair it with the retention-job work in the same quarter so audit growth is managed from day one.
Maintenance. Low ongoing code maintenance, but non-zero: the bundle's release cadence is event-driven (framework compatibility, occasional fixes), so plan for a periodic dependency review rather than continuous work. Budget real effort for schema migrations and retention policy, which are ours to own regardless of what the upstream project does.
Support. Community-maintained, no vendor SLA. Acceptable for internal tooling and non-regulated audit trails; questionable as the sole mechanism for a compliance-mandated record. If the audit trail is a regulatory control, either wrap it with independent verification (append-only storage, hash chaining, external export) or choose a commercially supported alternative.
Scaling. Two dimensions. Write volume: audit inserts add latency and I/O to every audited transaction — measure before enabling on high-throughput entities, and consider async or sampled auditing for chatty tables. Storage: audit tables grow monotonically and typically outpace the primary tables; partition by date or offload to cold storage early rather than retrofitting.
Failure modes.
Ramp-up. Genuinely low for a Symfony developer — a day to integrate, an afternoon to understand the config surface. The steeper learning curve is organizational, not technical: agreeing on retention, access control, and what "audited" means for each entity. For a Laravel-only team, ramp-up is not a consideration because adoption should not proceed.
Recommendation. Adopt 3.0.2 only if the stack is Symfony + Doctrine and audit needs are internal-forensic in nature; the release itself is a low-risk enabler for Symfony 7.4. If the stack is Laravel, do not adopt — evaluate owen-it/laravel-auditing instead. Before committing, close out the stack question and the retention/PII questions above; those, not this patch release, determine whether the integration succeeds.
How can I help you explore Laravel packages today?