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

Laravel Cursor Paginator Laravel Package

deepdiver/laravel-cursor-paginator

Cursor-based pagination for Laravel query builder and Eloquent models, offering simple paginators that page through large datasets efficiently without offset queries.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Cursor pagination is a legitimate architectural requirement for any read path that pages deep into large, append-heavy tables — activity feeds, audit logs, exports, notification lists — where OFFSET cost grows linearly with page depth and rows shift under concurrent writes. This package targets that problem by supplying a cursor paginator that plugs into Laravel's query builder. The architectural intent is sound. The problem is timing: Laravel shipped first-party cursorPaginate() in the 8.x line, which makes this package's core capability redundant on every currently supported framework version. Adopting it means taking on a third-party abstraction for something the framework now owns.

Integration feasibility. Mechanically trivial — a Composer dependency with service-provider registration, no infrastructure requirements, no schema changes. Feasibility is not gated by integration mechanics but by maintenance posture: the repository is archived, so "can we install it" and "should we depend on it" have different answers.

Technical risk — HIGH. The signals are uniformly negative: archived, zero stars, zero dependents, no evidence of production use anywhere. There is no upstream security response process, no CI signal we can inspect, and unverified compatibility with current PHP and Laravel releases. The failure modes specific to cursor pagination are exactly the ones a maintained project would have hardened: cursor opacity and tamper-resistance (is the cursor signed, or just base64-encoded row values?), deterministic tie-breaking when the sort key is non-unique, multi-column sort encoding, and stability of cursor format across schema changes. With no dependents, we would be the only known consumer — meaning we would discover these edges ourselves, in production.

Key questions for the team.

  1. What Laravel and PHP versions are we pinned to, and is an upgrade to Laravel 8+ actually blocked?
  2. Does the package encode cursors opaquely and verifiably, or does it leak/trust raw column values?
  3. How does it handle ties on non-unique sort columns, and composite/multi-column ordering?
  4. What is the exit cost — how tightly would call sites bind to its paginator class and response shape?
  5. Is the requirement genuinely deep-page pagination, or would keyset-style filtering plus a bounded page window solve it without any dependency?

Integration Approach

Stack fit. Fit is conditional and narrow: this package is only defensible on a Laravel version that predates native cursor pagination and cannot be upgraded in the program's timeframe. On Laravel 8+ it is strictly dominated by the framework's own implementation, which is maintained, documented, security-reviewed, and already in the dependency tree.

Migration path. The target state is framework-native cursorPaginate() on the endpoints that need it. That is a behavioral change, not a drop-in swap: the cursor token format differs, the JSON response envelope differs, and clients that persist or replay cursors will break. Treat it as an API version bump — introduce the native cursor response behind a new version or feature flag, run both shapes in parallel, and retire the old one on a published timeline.

Compatibility. Unverified and unverifiable at acceptable confidence: archived projects carry no compatibility matrix, no CI, and no release cadence against new PHP minors. Assume it does not support current PHP and plan accordingly; do not let a green local install stand in for a compatibility assessment.

Sequencing.

  1. Confirm the framework version constraint and whether upgrade is genuinely blocked — this single answer decides the rest.
  2. Prototype native cursor pagination on the two or three highest-depth read paths; benchmark against current OFFSET behavior at realistic page depths.
  3. If native works, ship it behind a versioned response and deprecate the package before it ever enters the dependency tree.
  4. If legacy-locked, fork and vendor rather than depend on the archived upstream: bring the code in-house, add tests for cursor encoding, tie-breaking, and sort-key changes, and assign an owner.
  5. Only if the above both fail, evaluate the package as a short-lived bridge with a written decommission date.

Operational Impact

Maintenance. Zero upstream. Archived means no patches, no PHP/Laravel compatibility work, no security advisories. Any consumption of this package is effectively an internal fork from day one — budget accordingly rather than treating it as a free dependency.

Support. No community, no issue triage, no maintainer to escalate to. Support reduces to whichever engineer on our team reads the source. That is a bus-factor of one, on a component sitting in the request path of user-facing reads.

Scaling. The scaling properties belong to the technique, not the package: cursor pagination gives stable per-page cost regardless of depth and avoids the offset scan, which is precisely what we want on large tables. This is an argument for cursor pagination as a pattern and a weak argument for this specific implementation — we can obtain the same scaling from the framework.

Failure modes.

  • Non-deterministic ordering producing silently duplicated or skipped rows — the classic and most damaging cursor bug, and the hardest to notice in QA.
  • Cursor format breakage on schema or sort-order change, surfacing as client-side 4xx/5xx after a deploy.
  • Tampered or replayed cursors if encoding is not signed.
  • No security patch path for any vulnerability found in the package or its transitive assumptions.
  • Abandonment already realized: there is no future in which this repository improves.

Ramp-up. Low for anyone fluent in Laravel pagination — the API surface is small and familiar. The cost is not learning the package but debugging it: opaque cursor defects are expensive to reproduce and there is no upstream knowledge base to lean on. Net: cheap to start, expensive to own.

TPM recommendation. Do not adopt. The capability is correct, the vehicle is not. Pursue framework-native cursor pagination; where the framework version blocks that, vendor the pattern in-house with tests and ownership rather than take a dependency on an archived, unadopted package for a problem the platform already solves.

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin