kherge/uuid-bundle
kherge/uuid-bundle is a Symfony bundle that integrates UUID generation into your application, providing services and configuration for producing unique identifiers for entities, records, and other data without writing boilerplate code.
Architecture fit — Poor, and arguably non-existent for a Laravel codebase. kherge/uuid-bundle is a Symfony 2 bundle, not a framework-agnostic PHP library. Its integration surface is Symfony-specific: bundle registration in AppKernel, service container definitions (XML/YAML), and dependency on symfony/symfony 2.x components. Laravel has no bundle-loading mechanism — it uses service providers, facades, and its own container. There is no path to "install and use" this in Laravel; at best the underlying UUID generation library (likely ramsey/uuid or kherge/uuid) is the only salvageable concept, and that is available directly.
Integration feasibility — Low. Adopting this would mean forking the repository, stripping the Symfony DI wiring, rewriting it as a Laravel service provider, updating Composer constraints from Symfony 2.x/PHP 5.x to a modern Laravel 10/11 + PHP 8.1+ matrix, and adding a test suite. That is net-new development work to reimplement functionality Laravel ships natively (Str::uuid(), Str::orderedUuid(), the HasUuids / HasUniqueStringIds Eloquent traits). The effort-to-value ratio is not defensible.
Technical risk — High. The repository is archived, Symfony 2 reached end-of-life in January 2019, and the package has 2 stars and 0 dependents, meaning no community validation, no downstream bug reports, and no security response capability. Attempting to force installation with --ignore-platform-reqs trades a clean Composer failure for a runtime fatal error. Any CVE in the pinned transitive dependencies becomes permanently unpatchable.
Key questions —
composer.json and blocking the upgrade?Stack fit — Effectively zero for Laravel. The correct integration is no integration: treat the package as a signal that a UUID requirement exists, and satisfy that requirement with first-party tooling.
Migration path — Replace, do not integrate:
Illuminate\Support\Str::uuid() or Str::orderedUuid() (Laravel 9+). For standalone use outside a model, ramsey/uuid is the maintained, widely-adopted library.HasUuids trait (Laravel 9+) or HasUniqueStringIds, which handles key generation, keyType = 'string', and incrementing = false automatically.$table->uuid('id')->primary() in migrations; avoid DB-side UUID() defaults for portability.Str::orderedUuid() or migrate to ULIDs via HasUlids — this is the decision point most teams actually get wrong.Compatibility — Composer will refuse to resolve this package against a modern Laravel stack: Symfony 2.x constraints conflict with symfony/* ^6 required by Laravel 10/11, and PHP constraints conflict with 8.1+. There is no version of this package that is compatible with a currently supported Laravel release.
Sequencing —
composer.json/composer.lock for uuid-bundle).composer update to surface any true coupling.ramsey/uuid (if not already transitive) or use Laravel's native helpers.Maintenance — Zero upstream maintenance. Archived status means no bug fixes, no PHP version bumps, no dependency updates. Any adoption transfers full ownership of the code to our team indefinitely, including security triage.
Support — None. No maintainer, no issue tracker activity, no vendor relationship. Internal on-call would be the sole escalation path for a package we did not write and which has effectively no public documentation beyond the README.
Scaling — The package itself is not a scaling concern, but the design pattern it encourages is: random UUIDv4 primary keys on InnoDB cause B-tree page splits and index fragmentation at volume. If this came up because of a high-write table, the correct answer is ordered UUIDs or ULIDs, not a Symfony 2 bundle.
Failure modes —
--ignore-platform-reqs: container compilation or autoload failure at boot, or Class 'Kherge\Bundle\UuidBundle\...' not found when Laravel tries to load it.Ramp-up — For the package itself: near-zero institutional knowledge exists and none is worth building. For the replacement: an engineer familiar with Eloquent can ship native UUID support in well under a day, including tests. The recommendation is to close this evaluation as reject — superseded by first-party Laravel functionality, and redirect any residual effort toward the ordered-vs-random identifier decision, which is the only genuinely consequential question in scope.
How can I help you explore Laravel packages today?