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

State Laravel Package

karriere/state

A Laravel state machine for Eloquent models. Define states and transitions, guard changes, fire events, and keep a history of every transition—ideal for orders, payments, approvals, and other workflow-driven records.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: Laravel-native fit for ephemeral, per-user or per-session state such as multi-step flows, onboarding wizards, checkout progress, or short-lived UI state. It is not a system of record and should not be used for durable, auditable, cross-service, or business-critical domain state. Best fit is a monolith or simple Laravel service already using cache/session abstractions — and, as of v3.3.0, specifically a service on Laravel 11+ and PHP 8.2+. The architectural fit is unchanged; the supported envelope has narrowed.

Integration feasibility: Still low effort for greenfield work: Composer install, Laravel package discovery, optional config publish, and use through the package API. Feasibility for existing services is now materially harder. v3.3.0 drops PHP 8.1, illuminate/support v10, illuminate/session v10, and psr/cache v1/v2. Any Laravel 10 application — or any application pinned to PHP 8.1 — cannot adopt this release without first upgrading the framework runtime. Composer will hard-block on dependency resolution, so this surfaces early rather than at runtime, which is the good news. A thin internal wrapper remains mandatory to isolate application code from these version constraints.

Technical risk: Two risks now dominate. First, licensing is still unresolved: the release notes contain no licensing change, so NOASSERTION continues to require legal review before production use, especially if forking or redistribution may be needed. Second, the package has demonstrated a willingness to drop framework majors in a minor version bump (3.2.x → 3.3.0). Under strict SemVer this is a breaking change that would normally warrant a major. Practically, it means a routine composer update can strand a Laravel 10 service or force an unplanned framework upgrade. Combined with the unchanged adoption profile — minimal stars, no dependents, single-maintainer signal — this raises the stewardship risk. Cache/session volatility, TTL eviction, multi-instance consistency, concurrency, and PII leakage all remain open design concerns. The PHP 8.5 addition is a positive signal that the maintainer is tracking the runtime roadmap, but it also signals the package now tracks only the leading edge of the support matrix.

Key questions: What license actually applies, and does the maintainer intend to publish one? Is the Laravel 10 / PHP 8.1 drop permanent, or will a 3.2.x LTS-style branch receive security fixes? Is the versioning policy intentionally "framework majors only" going forward, and will future framework-major drops land in patch/minor releases? Which cache/session drivers are tested against the new psr/cache v3 requirement? What are the TTL, eviction, and serialization semantics under v3? Is state isolated per user/tenant/session? Does it support encryption or sensitive-data handling? How are concurrent updates handled? Is there an upgrade and security-response policy? What is the exit strategy if the package is abandoned?

Integration Approach

Stack fit: Use only in Laravel services on Laravel 11 or 12, PHP 8.2–8.5, that already depend on cache/session for transient workflow state. Avoid introducing it where database-backed workflow state, event sourcing, or cross-service coordination is required. Confirm compatibility with Redis, database, file, or cookie-backed sessions depending on deployment, and re-validate driver behavior now that psr/cache v3 is the floor.

Migration path: Wrap the package behind an internal StateStore interface or service so application code does not call the package directly. Pilot on one non-critical flow, map existing session/cache keys, and add contract tests for TTL, key isolation, and failure behavior. For anyone currently on 3.2.x with Laravel 10 or PHP 8.1: do not attempt this upgrade in place. Either stay pinned to the last 3.2.x release while a framework upgrade is scheduled, or sequence the Laravel 11/12 and PHP 8.2+ upgrades first and treat the package bump as a follow-on change. Do not dual-write to production state stores unless a rollback path is defined.

Compatibility: Record an explicit matrix: PHP 8.2–8.5; illuminate/support and illuminate/session v11–v12; psr/cache ^3. Validate against the exact cache driver, session driver, queue worker, and Octane/Swoole configuration in use. Check serialization behavior for stored values under psr/cache v3 and confirm the package does not assume request-bound session lifecycle in long-running workers. Pin a tested version and note that minor releases may contain breaking constraint changes — use composer constraint ranges that exclude unintended minors if the flow is sensitive.

Sequencing: First complete license and security review, and get an explicit answer on the versioning policy. Then confirm the target service is already on Laravel 11+ and PHP 8.2+; if not, schedule the framework upgrade as a separate, earlier workstream. Run a staging proof of concept on one low-risk flow, build the internal wrapper, tests, and observability, then roll out behind a feature flag. Monitor state loss and cache errors before expanding. Maintain an exit plan to replace the package with first-party cache/session code, and keep a pinned 3.2.x fallback available if a rollback is needed.

Operational Impact

Maintenance: Low code footprint but elevated stewardship risk due to low adoption and unresolved licensing. The v3.3.0 constraint drops mean dependency maintenance is no longer passive — pin the version with a deliberate constraint strategy, subscribe to releases, and assign an internal owner. Budget for a forced upgrade roughly in step with Laravel major releases. If the license permits, keep a fork-ready fallback; if not, avoid deep coupling.

Support: Still community-only with no SLA. Internal teams own runbooks, dependency upgrades, and incident response. Document the package's role and ensure on-call engineers know how to inspect and clear state safely. Add a specific runbook entry for "package upgrade blocked by framework version" — this is now a realistic failure of the dependency, not just the runtime.

Scaling: Scaling is mostly inherited from Laravel's cache/session backend. Shared Redis or database stores scale better than file sessions; multi-region deployments need latency and consistency consideration. Keep stored payloads small, set explicit TTLs, and avoid using the package for high-volume or long-lived state. Verify that the psr/cache v3 upgrade did not change eviction or serialization behavior at your expected payload sizes.

Failure modes: Cache outage or eviction causes state loss and user-flow resets. Session expiry interrupts multi-step journeys. Key collisions, stale state, concurrent updates, serialization changes, and package incompatibility can corrupt or strand workflows. New in this release: a transitive dependency resolution failure during deploy can block a release entirely, and an unattended composer update can silently pull a version that no longer supports the runtime. Sensitive state may leak if session/cache stores are not encrypted or properly isolated. Instrument cache errors, state-miss rates, and flow abandonment, and alert on dependency-resolution failures in CI.

Ramp-up: Developer ramp-up remains low for Laravel teams — hours to one day — but the upgrade path now assumes Laravel 11+ fluency and familiarity with psr/cache v3 semantics. Product and operations ramp-up should focus on state lifecycle semantics, TTL policy, privacy classification, rollback procedures, and the versioning policy so that future minor releases are triaged correctly. Because adoption is minimal and versioning is aggressive, budget more time for due diligence and upgrade planning than for coding.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource