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

Ab Laravel Package

jenssegers/ab

Jenssegers/AB is a lightweight A/B testing package for Laravel that lets you define experiments, split traffic between variants, and track which version performs best. Simple to configure and easy to integrate into existing applications for data-driven decisions.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy the experimentation layer — narrowly. This package is a candidate dependency for one concrete mechanism: show variant A or B to a visitor, remember which one they saw, and record a conversion. It does not touch the expensive half of experimentation (significance testing, sample-size planning, guardrail metrics, dashboards), so adopting it shortens only the cheap part of the roadmap. The PM decision it informs is real but bounded: do we write our own assignment layer or take a pre-built one?
  • Whether to commit to an experimentation cadence at all. Adopting it is a statement of intent to run a recurring stream of tests on copy, layout, onboarding, and feature exposure — not a one-off launch gimmick. If growth experimentation is a roadmap pillar, this is a cheap way to prove the workflow before funding tooling. If it isn't, the dependency is shelfware and should be declined on that basis alone. The most valuable output of a trial is often the answer to "does this team actually run experiments and act on the results?"
  • Decoupling deploy from release. Experiment/variant gating is a stepping stone toward feature flags: ship dark, ramp exposure, kill a variant without a redeploy. That is a release-process decision the PM can own independently of any single experiment's result — and it is frequently worth more than the A/B tests themselves.
  • Risk budget for a pre-1.0 dependency sitting in a measurement path. Maturity signals are weak: v0.2.0 (0.x, breaking changes permitted on minor bumps), zero dependents in the wild, and a release history whose only visible entry is a framework-compatibility line. Acceptable for a prototype; not acceptable for a number the company will cite in a board deck.
  • A forced go/no-go on the legacy-framework question. The package's ceiling is Laravel 5, which is end-of-life. Adopting it implicitly argues for extending Laravel 5's life. A PM should force that trade-off into the open rather than let a testing tool quietly become a migration blocker.
  • How much to trust the results. Sticky assignment means a broken cookie/session layer silently contaminates the dataset — visitors flip variants, conversion rates drift, and a roadmap call gets made on garbage. The honest posture at this maturity is "directional signals on low-stakes surfaces only," and that should be written down before the first experiment ships.

When to Consider This Package

Consider it only when all of the following hold:

  • The application is genuinely pinned to Laravel 5.x on a deliberate, time-boxed basis — not "we'll get around to upgrading."
  • The experiment surface is low blast radius: marketing copy, layout, button wording, an internal tool, or a prototype feature. A wrong answer costs a week, not a quarter.
  • You will wrap it behind your own ExperimentService interface (variant(), track(), active()) so assignment and goal tracking are one adapter swap away from Laravel Pennant, Unleash, LaunchDarkly, or an in-house implementation.
  • You can pin the exact 0.x version, vendor or fork if needed, and accept that nobody guarantees backwards compatibility.
  • You already have an analytics destination. The package fires exposure/conversion events; the stats, dashboards, and significance testing are yours to build.
  • Scope is one team, a handful of concurrent experiments, and no audience targeting, RBAC, approval workflow, or audit-trail requirements.

Look elsewhere when any of the following apply:

  • You are on Laravel 6+ or a current LTS. The only evidence of framework support tops out at Laravel 5; assuming forward compatibility is an unsupported bet. Use Laravel Pennant (first-party feature flags) or a maintained experimentation service.
  • The experiment touches pricing, checkout, auth, entitlements, or anything with revenue or compliance exposure. Pre-1.0 plus no security-response commitment is not a defensible posture there.
  • You need statistical rigor — sequential testing, CUPED, guardrails, sample-ratio-mismatch alerts. This is a bucketing library, not an experimentation platform; do not let the name "A/B testing" set stakeholder expectations.
  • Privacy matters. Assignment typically relies on cookies or local storage; under GDPR/CCPA that intersects consent, and this package gives you no consent story.
  • Multiple teams need self-serve experiments, shared metric definitions, and a warehouse-native assignment log. That is a platform, not a package.
  • Maintenance health is a hard requirement. Zero dependents and a changelog that only lists framework bumps are a signal, not a footnote.

How to Pitch It (Stakeholders)

For executives (one paragraph): We're evaluating a small open-source Laravel component that lets us show different versions of a page or feature to different visitors and measure which performs better. It solves the cheap half of experimentation — deciding who sees what, and remembering it — and none of the expensive half, which is the analytics and statistical confidence we'd still have to build or buy. The project is early-stage (pre-1.0, no meaningful adoption) and its newest release only adds support for an older version of Laravel, so my recommendation is a bounded trial: prototype or internal scope only, version-pinned, wrapped so it can be replaced in days. The upside is a few weeks of engineering avoided and a fast answer on whether experimentation cadence is worth funding. The downside is contained to the trial — provided we don't let it justify staying on an end-of-life framework. I'll come back with a build-vs-buy recommendation backed by two or three real experiments before anything touches a revenue surface.

For engineering leads (the operative detail): Treat v0.2.0 as a compatibility claim, not a capability one — the changelog says "Laravel 5 support" and nothing else, so verify the actual constraint in composer.json and the PHP floor before we scope anything. Because it's 0.x, a minor bump can legally break us: pin the exact version and add a dependency-review gate. Put it behind an adapter with a contract test covering "same visitor, same variant" so a swap is mechanical. The two things I want validated in the spike are the storage and consistency behaviour behind sticky assignment (cookie vs. session vs. database, its TTL, and what happens on cache flush, cookie expiry, or a new device) and the exact shape of the goal-tracking events — once per visitor, once per session, or once per event, and over what attribution window — because that is where the analytics integration cost actually lives. Also confirm the behavior when an experiment is paused, renamed, or deleted mid-flight, that bot traffic is excluded, and that determinism doesn't depend on mutable inputs like variant order or config edits. And note the implied baseline: a package that only just reached Laravel 5 carries dated assumptions around service providers, config publishing, and facades. If the spike works, the follow-up question is not "do we keep this package" but "do we still want to own this capability ourselves," and I expect the answer to favour Laravel Pennant or a thin in-house flag layer once we know the real requirements.

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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
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