Weave Code
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

Flow Laravel Package

darkwood/flow

Flow is a PHP 8.5+ package for building asynchronous pipelines with a functional style. Define steps with generators, pass typed data through each stage, and await execution. Includes examples and docs, with a focus on assembling code as “flows”.

View on GitHub
Deep Wiki
Context7

💧Flow

Frequently asked questions about Flow
Can I use Flow in Laravel 10.x (PHP 8.2/8.3) without upgrading PHP?
No, Flow requires PHP 8.5+. For Laravel 10.x, you’d need a custom runtime (e.g., Docker with PHP 8.5) or wait for Laravel 11+ to adopt PHP 8.5. Test compatibility thoroughly if using a hybrid setup, as some features (like Fibers) may behave differently.
How does Flow compare to Laravel Queues for async tasks?
Flow is in-memory and coroutine-based, while Laravel Queues use persistent jobs with retries and monitoring. Use Flow for lightweight, high-performance pipelines (e.g., data transformations) and Queues for background jobs needing reliability. Flow lacks built-in retry logic or Horizon integration.
Will Flow work with Laravel’s service container and dependency injection?
Not natively. Flow’s generator-based steps bypass Laravel’s container, so you’ll need to manually resolve dependencies or wrap Flow in a service provider. Avoid mixing Flow pipelines with Laravel’s middleware or injected services unless explicitly bridged.
Which Flow driver (Amp/ReactPHP/Swoole) is best for Laravel?
Amp or ReactPHP are safer for Laravel due to maturity, while Swoole offers higher concurrency but requires PHP-FPM/Swoole setup. Amp is ideal for HTTP/API workflows (e.g., web scraping), while ReactPHP works well for I/O-bound tasks. Always test driver stability in your Laravel environment.
How do I integrate Flow with Laravel Events or Broadcasting?
Use Laravel’s event listeners to trigger Flow pipelines from events (e.g., `job:failed`). For Broadcasting, emit events within Flow steps and handle them via Laravel’s broadcast drivers. Avoid blocking Flow’s async execution with synchronous Laravel services.
Does Flow support database transactions?
No, Flow doesn’t integrate with Laravel’s `DB::transaction`. Handle transactions manually around Flow steps or use database drivers that support rollbacks. For complex workflows, consider wrapping Flow in a Laravel transaction scope.
How do I debug Flow pipelines in Laravel?
Flow’s coroutine stack traces differ from Laravel’s. Use `dd()` sparingly—it may freeze coroutines. Leverage Xdebug with async-aware configurations or log intermediate data with `printf`/`error_log`. For production, monitor coroutine latency via custom logging or Sentry.
Can Flow replace Laravel’s Collections or Pipes for data processing?
No, Flow is for async pipelines, while Collections/Pipes are synchronous. Use Flow for long-running, stateful transformations (e.g., ETL) and Collections for in-memory, synchronous operations. Flow’s typed generators complement Collections but aren’t drop-in replacements.
What’s the performance impact of Flow in Laravel?
Flow introduces memory overhead from coroutines (Fibers) and driver dependencies. Benchmark against synchronous code—Flow excels in I/O-bound tasks but may underperform for CPU-heavy work. Profile with tools like Blackfire to compare against Laravel Queues or traditional loops.
Are there alternatives to Flow for async pipelines in Laravel?
Yes: Use Laravel Queues for job-based async, Amp/ReactPHP for low-level async, or Symfony Messenger for event-driven workflows. For functional pipelines, consider `spatie/async` or custom generator-based solutions. Flow’s unique value is its typed, visual assembly—but weigh its PHP 8.5 requirement and Laravel integration challenges.
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.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky