Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Uuid Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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 —

  1. What is the actual requirement: UUID primary keys on Eloquent models, UUIDs as public-facing identifiers, or UUIDs generated in a legacy Symfony 2 service being migrated?
  2. Is there an existing Laravel or PHP version constraint we must respect (8.1/8.2/8.3, Laravel 9/10/11)?
  3. If the driver is a Symfony-to-Laravel migration, is this dependency already in composer.json and blocking the upgrade?
  4. Do we need time-sortable identifiers (index performance) or is randomness acceptable?
  5. Is there any vendor or compliance requirement mandating this specific package? (Assumed no.)

Integration Approach

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:

  • Identifier generation: Illuminate\Support\Str::uuid() or Str::orderedUuid() (Laravel 9+). For standalone use outside a model, ramsey/uuid is the maintained, widely-adopted library.
  • Model keys: apply the HasUuids trait (Laravel 9+) or HasUniqueStringIds, which handles key generation, keyType = 'string', and incrementing = false automatically.
  • Schema: $table->uuid('id')->primary() in migrations; avoid DB-side UUID() defaults for portability.
  • If sortable IDs are required: use 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 —

  1. Confirm the requirement and rule out a hidden dependency (grep composer.json/composer.lock for uuid-bundle).
  2. If present, remove it and run composer update to surface any true coupling.
  3. Introduce ramsey/uuid (if not already transitive) or use Laravel's native helpers.
  4. Update models and migrations; backfill any existing rows in a separate, reversible migration.
  5. Document the deviation from the original package and add a test asserting UUID format/version on generated keys.

Operational Impact

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 —

  • Composer resolution failure at install (most likely, and the safest outcome).
  • With --ignore-platform-reqs: container compilation or autoload failure at boot, or Class 'Kherge\Bundle\UuidBundle\...' not found when Laravel tries to load it.
  • Deprecated PHP 5.x/7.x syntax triggering fatal errors on PHP 8.
  • Silent divergence: teams assume UUID format guarantees (version, variant, ordering) that the abandoned underlying library may not provide.
  • Unpatchable transitive CVE with no upgrade path.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console