eve/uuid
eve/uuid is a lightweight Laravel package for UUID primary keys. It helps generate RFC-compliant UUIDs, assign them to Eloquent models, and use UUIDs in routes and database columns with minimal configuration. Simple setup and sensible defaults make UUID support easy to add.
Architecture fit
eve/uuid is a thin convenience wrapper over ramsey/uuid, exposing UUID generation helpers plus an Eloquent model trait for auto-assigning primary keys. Architecturally it sits at the persistence boundary and adds no new capability layer: ramsey/uuid is already a transitive dependency of the Laravel framework itself, and Laravel ≥9 ships a first-party HasUuids / HasUniqueStringIds trait covering the same use case. The package's architectural footprint is therefore duplicative rather than additive — it inserts an owned-by-someone-else abstraction between our models and a library we already have.
Integration feasibility
Composer installation is mechanically trivial. The real question is version compatibility: the last release is 2020-11-26, which places it in the Laravel 6/7/8 and ramsey/uuid v3/v4 era. On a modern stack (PHP 8.2+, Laravel 10/11) the constraint graph will likely conflict, forcing a fork, a replace directive, or a constraint override — all of which convert a five-minute install into an owned maintenance commitment. Integration is technically possible but economically irrational.
Technical risk High, and concentrated in abandonment rather than defects:
Key questions
Str::uuid(), ramsey/uuid directly, or Laravel's native HasUuids trait does not?Stack fit
Poor on Laravel ≥9, where native UUID traits make the package redundant. Marginal on legacy Laravel 6–8, where calling ramsey/uuid directly is still simpler than adding an intermediate wrapper. The package occupies a slot our stack has already filled twice over.
Migration path
Because the wrapper emits standard RFC 4122 strings and does not alter the persisted data format, migration is non-destructive and requires no data backfill or dual-write. The path is: replace trait usage with Laravel's native HasUuids (or an in-repo trait), then remove the dependency. Existing UUID column values remain valid; no schema change is implied.
Compatibility
Must be validated against our actual PHP and Laravel targets before any decision. Expect constraint conflicts on current versions. Secondary compatibility checks: ramsey/uuid major version alignment, database column type (char(36) vs binary(16)), and JSON/route binding behavior parity.
Sequencing
Maintenance Effectively unmaintained upstream. Every future Laravel or PHP upgrade becomes our problem to solve, and the package contributes nothing we could not maintain in-repo in a few dozen lines. The maintenance trade is strictly negative: we inherit an external dependency's lifecycle without gaining differentiated functionality.
Support No upstream support channel, no active issue triage, no security advisories. If adopted, internal ownership of a fork becomes mandatory — a cost that dwarfs the original convenience.
Scaling Runtime cost is negligible; UUID generation is not a throughput concern. The real scaling consideration is storage: random UUIDv4 primary keys cause B-tree page splits and index fragmentation on InnoDB at volume. If ordered identifiers matter, the correct answer is UUIDv7 or ULID — and this package does not appear to offer that as a differentiator, which further undercuts its value.
Failure modes
ramsey/uuid defaults.Ramp-up Learning cost is near zero — which is a symptom of low value, not a benefit. The meaningful ramp-up cost is organizational: establishing ownership, a fork policy, and a deprecation plan for a package that should not have been introduced.
TPM recommendation: Do not adopt. If already present, treat as technical debt with a low-effort, low-risk removal path and schedule it alongside the next framework upgrade. Standardize on Laravel's native UUID traits for new work, and evaluate UUIDv7/ULID separately if index locality is a real requirement.
How can I help you explore Laravel packages today?