PHPackages                             webpatser/fledge-framework - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. webpatser/fledge-framework

ActiveLibrary[Framework](/categories/framework)

webpatser/fledge-framework
==========================

The Fledge Framework — PHP 8.5 optimized Laravel.

v13.18.0.3(5d ago)0183—0%[1 PRs](https://github.com/webpatser/fledge-framework/pulls)MITPHPPHP ^8.5CI passing

Since Apr 5Pushed 1w agoCompare

[ Source](https://github.com/webpatser/fledge-framework)[ Packagist](https://packagist.org/packages/webpatser/fledge-framework)[ Docs](https://github.com/webpatser/fledge-framework)[ RSS](/packages/webpatser-fledge-framework/feed)WikiDiscussions fledge-13 Synced today

READMEChangelogDependencies (376)Versions (1292)Used By (0)

Fledge
======

[](#fledge)

**Laravel 13, optimized for PHP 8.5**

Named after Fledge from C.S. Lewis's Narnia, a horse transformed by Aslan into something faster and more capable. Laravel's name also comes from Narnia (Cair Paravel). Fledge transforms Laravel for PHP 8.5.

What is Fledge?
---------------

[](#what-is-fledge)

Fledge is a drop-in replacement for Laravel's `illuminate/framework` that requires PHP 8.5 and uses its native features for better performance. Same `Illuminate\` namespace, same API, full ecosystem compatibility.

Laravel 13 supports PHP 8.3+ and ships polyfills so it can run on older versions. Fledge removes those polyfills and version checks, and replaces `league/uri` with PHP 8.5's native URI extension. That swap is the single biggest performance win.

**127 files changed** on top of Laravel 13.17.0. The full framework test suite passes under CI's `--fail-on-deprecation`, including against symfony 8.1.

Why?
----

[](#why)

Laravel supports PHP 8.3+ because that's the right call for the ecosystem. But if you're already on PHP 8.5, you're paying for compatibility you don't need:

- **11,000 lines of `league/uri` PHP code** replaced by compiled C in the PHP runtime
- **Symfony polyfills** for `array_first()`, `array_last()`, `array_all()`, `array_any()`, functions that ship natively in PHP 8.5
- **`version_compare` guards** that branch on every request to check if you're on 8.4+

Fledge strips all of that.

Performance
-----------

[](#performance)

A default Laravel skeleton (single homepage route, PHP-FPM with persistent connections) renders ~17% faster on Fledge than on stock Laravel 13.7.0 with the same PHP 8.5 build and the same Redis backend:

MetricLaravel 13FledgeDifferenceHomepage render (median)30 ms25 ms**17% faster**This is one workload on one machine. Your numbers will differ depending on where your application's time actually goes: DB calls, external HTTP, template compile, queue dispatch. To reproduce the micro-benchmarks (URI, polyfills, cache throughput) on your own stack:

```
php artisan fledge:bench --scenario=uri --iterations=10000
php artisan fledge:bench --scenario=polyfills
php artisan fledge:bench --scenario=redis     # uses your configured cache driver
```

JSON output is available with `--format=json` for CI integration.

### Where the gain comes from

[](#where-the-gain-comes-from)

Two compounding wins drive most of the speedup:

1. **Native `Uri\Rfc3986\Uri` replacing `league/uri`.** PHP 8.5 ships URI parsing as a compiled C extension. `Request::uri()`, the `url()` helper, redirects, and route generation all touch URIs on every request, so the savings stack across the request lifecycle:

    Operationleague/uriPHP 8.5 nativeParse URI0.047 ms0.0005 msModify URI0.24 ms0.0004 msRoughly 100x faster for URI operations alone.
2. **Non-blocking Redis I/O via `fledge-fiber`.** This one is more nuanced and worth being precise about. On a single sequential `Cache::get()` against a local Redis, fledge-fiber is actually **slower** than Predis (measured at ~32 µs vs ~21 µs per call on this machine). That's the cost of setting up a Fiber, registering a Revolt wakeup, and suspending: pure overhead when you have nothing else to do.

    Where fledge-fiber pays off is when something else *can* run in the meantime:

    - **Concurrent Redis calls inside `Concurrency::driver('fiber')->run()`** overlap on socket I/O. Three parallel `Cache::get()` calls finish in ~32 µs total instead of ~63 µs sequential.
    - **Network RTT to a remote Redis** (1-5 ms typical) makes all clients I/O-bound. Predis blocks the whole worker on that RTT. fledge-fiber suspends and lets other Fibers progress.
    - **Mixed I/O paths** (Redis + DB + HTTP in one request) can overlap when each driver supports Fiber suspension. Sequential blocking clients can't.

    So the honest framing: fledge-fiber **doesn't make a single Redis call faster, it stops a Redis call from blocking everything else**. On low-latency local Redis with no concurrency, you're paying overhead for a feature you're not using. On real-world request paths with multiple I/O touches or remote backends, the suspension wins out.

Smaller wins (removed `symfony/polyfill-php84` and `polyfill-php85`, dropped `version_compare` guards, native `array_all`/`array_any`, pipe operator in `Pipeline::then()`, persistent cURL share) trim a few additional milliseconds off bootstrap and hot paths.

### About the polyfill removal

[](#about-the-polyfill-removal)

Fledge drops `symfony/polyfill-php84` and `polyfill-php85`, plus the `version_compare` guards that branch on every request to decide whether to call native or polyfilled functions. On a single HTTP request the per-call difference between native `array_any()` and a handwritten `foreach` is in the noise (run `php artisan fledge:bench --scenario=polyfills` and you'll see the variants land within measurement jitter). It's not a "Y% faster" headline.

The real win is structural:

- Fewer `function_exists()` and `version_compare()` branches scattered through hot paths
- Less code on disk, less to autoload, smaller opcache footprint
- No PHP 8.0/8.1/8.2/8.3/8.4 compatibility branches at all, the version is fixed at 8.5+

That matters most on long-running processes (queue workers, octane, long-lived schedulers) where bootstrap cost amortizes and tighter hot paths add up over millions of calls. On a typical web request it is a small win that disappears into other variability.

### Fiber-Based Concurrency

[](#fiber-based-concurrency)

Fledge adds a `FiberDriver` to the Concurrency facade, powered by the [Revolt](https://revolt.run) event loop and [fledge-fiber](https://github.com/webpatser/fledge-fiber). Unlike the `ProcessDriver` (which spawns child processes) or the `SyncDriver` (sequential), the `FiberDriver` provides real cooperative async I/O within a single process:

```
use Illuminate\Support\Facades\Concurrency;

// 3 HTTP requests run concurrently, total time ≈ slowest request
$results = Concurrency::driver('fiber')->run([
    fn () => $httpClient->request(new Request('https://api1.example.com'))->getBody()->buffer(),
    fn () => $httpClient->request(new Request('https://api2.example.com'))->getBody()->buffer(),
    fn () => $httpClient->request(new Request('https://api3.example.com'))->getBody()->buffer(),
]);
```

No background process needed; the Revolt event loop runs inline within the `run()` call. Tasks using fledge-fiber async drivers (HTTP, MySQL, Redis) genuinely interleave on I/O suspension. Shared memory, no serialization overhead, works in both web requests and CLI.

Also available as a standalone package for Laravel 11/12/13: [`webpatser/laravel-fiber`](https://github.com/webpatser/laravel-fiber)

### Non-Blocking Redis (fledge-fiber driver)

[](#non-blocking-redis-fledge-fiber-driver)

Fledge ships with `fledge-fiber` as the **default Redis driver**. Every Redis call (cache reads, locks, queue operations, rate limiting) goes through a Fiber-suspending socket layer instead of a blocking one.

**This is not "faster Redis", it is "non-blocking Redis".** Those are different things, and the difference matters:

Workloadfledge-fiberPredis (blocking)WinnerSingle sequential `Cache::get()`, local Redis~32 µs~21 µsPredis (less overhead per call)3 concurrent `Cache::get()` via `Concurrency::run()`~32 µs total~63 µs sequentialfledge-fiberSingle call to remote Redis (1-5 ms RTT)RTT boundRTT bound, **blocks worker**fledge-fiber (worker stays free)Mixed Redis + DB + HTTP in one requestoverlapped via Fibersstrictly serialfledge-fiberNumbers from `php artisan fledge:bench --scenario=redis` against a local Valkey, 10k iterations, 1k warmup. Reproduce on your own stack with `REDIS_CLIENT=fledge` and `REDIS_CLIENT=predis`.

```
// Every Cache::get() and Redis::get() routes through fledge-fiber by default.
// No code changes needed; the driver is transparent.
Cache::get('key');        // suspends the current Fiber on socket I/O
Redis::set('key', 'val'); // same

// Inside Concurrency::run(), multiple Redis calls parallelize automatically:
Concurrency::driver('fiber')->run([
    fn () => Cache::get('user:1'),
    fn () => Cache::get('user:2'),
    fn () => Cache::get('user:3'),
]); // all 3 reads overlap on socket I/O
```

Pick fledge-fiber when your request paths touch Redis multiple times, when Redis is on another host, or when you mix Redis with other I/O. Pick `phpredis` (or stay on Predis) when you only ever do single sequential calls against a local Redis and the per-call overhead matters more than the suspension benefit.

To fall back to the synchronous phpredis C extension:

```
REDIS_CLIENT=phpredis
```

The cache layer also includes Fiber-aware internals:

- **Lock blocking** suspends the Fiber instead of `usleep()`, letting other Fibers run
- **Failover reads** try all stores concurrently, returning the first success
- **Cluster operations** (`many()`/`putMany()`) run concurrent reads/writes via Fibers
- **Tag operations** flush chunks and write entries concurrently

Ecosystem
---------

[](#ecosystem)

Fledge is one piece of a small set of related packages:

```
webpatser/fledge                  Laravel app skeleton (composer create-project target)
  └─ webpatser/fledge-framework   This repo: Laravel 13 fork, PHP 8.5 optimized
      └─ webpatser/fledge-fiber   Single async runtime: Redis, MySQL/MariaDB/PostgreSQL,
                                  HTTP client/server, DNS, Fiber primitives, Revolt loop

Optional companions:
  webpatser/torque                Fiber-based queue worker, Horizon alternative
  webpatser/laravel-fiber         Same FiberDriver as a standalone package for
                                  Laravel 11/12/13 (no PHP 8.5 requirement)

```

The `FiberDriver` shipped in `Illuminate\Concurrency\FiberDriver` is a thin wrapper around `fledge-fiber`'s `async()` and `await()` primitives. Earlier preview builds split the async runtime across `fledge-fiber-database`, `fledge-fiber-redis`, and `fledge-fiber-http`; those are now consolidated into a single `fledge-fiber` package.

Caveats
-------

[](#caveats)

Worth knowing before going to production:

- **Redis Cluster** is supported by `fledge-fiber` from `v13.7.0.1` onward via Laravel's standard `clusters.*` config, with full API parity against `PhpRedisClusterConnection` / `PredisClusterConnection` (`isCluster()`, `scan()` with `node` option, `keys()` fan-out, `flushdb` fan-out). Multi-key commands must share a hash tag (`{tag}.key`), `SELECT` to a non-zero database is rejected, and MULTI/EXEC is pinned to a single slot. Sentinel and standalone Redis work too.
- **PHP 8.5 hosting** was released in November 2025. Managed-host availability is still rolling out across Forge, Vapor, Ploi, and Laravel Cloud, check your provider before committing.
- **`fledge-fiber` is a hardened fork**, not raw amphp. The async runtime started from amphp/revolt but has been consolidated, namespaced under `Fledge\Async\` and `Fledge\Fiber\`, and tuned for the Fledge use case. If you're auditing dependencies, treat it as first-party Webpatser code.
- **Active branch is `fledge-13`**, not `main`. PRs and clones aimed at framework development should target that branch.
- **Versioning uses 4 segments** (`v13.X.Y.N`). The first three match upstream Laravel exactly, the fourth is Fledge's own patch counter. See [Versioning](#versioning) below.

What Changed
------------

[](#what-changed)

ChangeFilesImpactNative `Uri\Rfc3986\Uri` replacing `league/uri`3~100x faster URI opsRFC 3986 normalization layer (IDN, unicode, brackets)1Compatibility bridgeRemove `symfony/polyfill-php84` and `polyfill-php85`7Cleaner autoloadingBump PHP to `^8.5`37Drop compatibility codeRemove `version_compare` PHP 8.4 guards3No runtime branching`array_all`/`array_any` in `Arr::hasAll`/`hasAny`1Faster array checks`array_any` in `Handler::shouldntReport`1Replace `Arr::first` null check`array_any` in `FormRequest::isKnownField`1Replace foreach early-returnPipe operator in `Pipeline::then()`1Cleaner code`#[\NoDiscard]` on Pipeline, Cache, Container, Validation4Developer safetyPersistent cURL share manager3Connection pooling`json_validate()` fast path1Skip decode on invalid JSONFiber-based concurrency driver (Revolt + fledge-fiber)2Real async I/O in `Concurrency` facadefledge-fiber as default Redis driver5Non-blocking Redis I/O for all operationsFiber-aware cache layer (locks, failover, tags)8Concurrent cache ops inside FibersFiber-safe queue worker signal handling (Revolt)1Horizon/queue workers work with fiber driversRedis required dependency for cache package1Redis is a first-class citizen### The RFC 3986 Problem (and How Fledge Solves It)

[](#the-rfc-3986-problem-and-how-fledge-solves-it)

PHP 8.5's native URI parser is strictly RFC 3986 compliant, stricter than `league/uri`. It rejects:

- Internationalized domain names like `bébé.be`
- Unicode in paths like `/日本語/page`
- Unencoded brackets in query strings like `?filter[status]=active`

[An attempt to add native URI support to Laravel](https://github.com/laravel/framework/pull/58132) stalled because of this strictness gap.

Fledge solves it with a normalization layer (`Uri::normalizeForRfc3986()`) that transparently converts these inputs before passing them to the native parser:

You writeFledge normalizes to`https://bébé.be``https://xn--bb-bjab.be` (punycode)`https://example.com/日本語``https://example.com/%E6%97%A5...` (percent-encoded)`?filter[status]=active``?filter%5Bstatus%5D=active` (encoded brackets)This makes Fledge a true drop-in replacement: your existing URLs keep working.

Installation
------------

[](#installation)

### In an existing Laravel 13 project

[](#in-an-existing-laravel-13-project)

`webpatser/fledge-framework` is on Packagist, so no extra repository config is needed. Require it directly with `-W` (so `with-all-dependencies` resolves the replace correctly):

```
composer require "webpatser/fledge-framework:^13.7" -W
```

This installs Fledge and removes `vendor/laravel/framework` from your tree (the `replace` block in Fledge's `composer.json` declares it provides `laravel/framework` and every `illuminate/*` split package). Your application code does not change, the `Illuminate\` namespace continues to work.

To switch back to upstream Laravel:

```
composer remove webpatser/fledge-framework
composer require "laravel/framework:^13.0" -W
```

**Verify your install** with the bundled script:

```
bash vendor/webpatser/fledge-framework/bin/verify-fledge-install.sh
```

It exits 0 with `OK running Fledge framework v13.X.Y.N` if you are on Fledge, or 1 with a switch hint if you are still on stock Laravel.

### Why `composer require laravel/framework` does NOT pull in Fledge

[](#why-composer-require-laravelframework-does-not-pull-in-fledge)

You might expect `composer require "laravel/framework:^13.3"` to pick up Fledge once the repository is registered. **It does not, even with the VCS repository configured.** Composer's resolver only honors `replace` declarations during transitive dependency resolution, not for top-level requires. A direct `require laravel/framework:...` always installs the upstream `laravel/framework` package, and Fledge stays unused on disk if you also `require` it.

That is why the canonical install line targets `webpatser/fledge-framework` directly. If you see `vendor/laravel/framework` in your tree after switching, you are running stock Laravel; the verify script above will catch that.

### Constraint compatibility

[](#constraint-compatibility)

All standard Composer constraint patterns resolve to the latest Fledge tag (`v13.17.0.2` as of 2026-06-24):

ConstraintResolves toNotes`^13.3`v13.17.0.2Recommended, accepts any 13.x release`^13.17`v13.17.0.2Pins to current minor`~13.17.0`v13.17.0.2Pins to 13.17.x patches and Fledge revisions`13.17.*`v13.17.0.2Wildcard, identical resolution`^13.17.0.1`v13.17.0.2Pin to a specific Fledge revision`~13.17.0.1`v13.17.0.2Same, accepts higher Fledge patches`>=13.0`v13.17.0.2Open-ended`dev-fledge-13`(does not resolve cleanly)Dev branches need a `branch-alias` to satisfy `^13.0` constraints from other Laravel packagesUse `^13.7` in production. The 4-segment `v13.X.Y.N` versioning is fully Composer-compatible: the resolver treats the fourth segment as a regular patch component.

### From scratch (framework development)

[](#from-scratch-framework-development)

To work on the Fledge framework itself (not consume it as a dependency):

```
# Clone the framework fork directly
git clone -b fledge-13 https://github.com/webpatser/fledge-framework
cd fledge-framework
composer install
vendor/bin/phpunit
```

Active development happens on the `fledge-13` branch, not `main`. Released tags follow the `v13.X.Y.N` pattern where the first three segments match upstream Laravel and `N` is Fledge's own patch counter.

### From scratch (full app skeleton)

[](#from-scratch-full-app-skeleton)

To start a new Laravel app with Fledge baked in, use the [skeleton](https://github.com/webpatser/fledge). The skeleton is currently distributed via Git, not Packagist, so clone it directly:

```
git clone https://github.com/webpatser/fledge my-app
cd my-app
composer install
cp .env.example .env
php artisan key:generate
php artisan serve
```

(Once the skeleton is published to Packagist, `composer create-project webpatser/fledge my-app` will replace the clone step. Watch [the skeleton repo](https://github.com/webpatser/fledge) for status.)

Compatibility
-------------

[](#compatibility)

- Same `Illuminate\` namespace, all Laravel packages work unchanged
- Same API, no code changes needed in your application
- Full framework test suite passing under `--fail-on-deprecation`, including against symfony 8.1 (Fledge carries the header-bag-constructor fix ahead of upstream Laravel)

Requirements
------------

[](#requirements)

- **PHP 8.5+**
- **intl extension** (for IDN domain support)
- Composer 2.x

How This Project Works
----------------------

[](#how-this-project-works)

Fledge tracks Laravel's `13.x` branch. When Laravel releases a new version:

1. Fetch the latest upstream tag
2. Merge into the `fledge-13` branch
3. Resolve any conflicts in the ~50 modified files
4. Run the full test suite
5. Tag a matching Fledge release

The goal is automated sync for clean merges (~70% of releases), with manual intervention only when upstream touches the same files Fledge modifies.

### Versioning

[](#versioning)

Fledge uses a **fourth version segment** to track its own releases on top of Laravel's version:

LaravelFledgeMeaning`v13.3.0``v13.3.0.1`First Fledge release based on Laravel 13.3.0`v13.3.0``v13.3.0.2`Fledge-only fix on top of 13.3.0`v13.4.0``v13.4.0.1`Fledge synced to Laravel 13.4.0`v13.4.0``v13.4.0.2`PHP 8.5 optimizations on top of 13.4.0The first three segments always match the upstream Laravel version. The fourth is Fledge's own patch counter, starting at `.1` for each new Laravel release.

In your `composer.json`, `"laravel/framework": "^13.3"` will pull in the latest Fledge release.

### Project Structure

[](#project-structure)

```
packages/framework/     # The Fledge framework (forked illuminate/framework)
  ├── src/Illuminate/   # Modified Laravel source with PHP 8.5 optimizations
  └── tests/            # Unmodified Laravel test suite (tests are the contract)

```

**Rule: tests are never modified.** If a test fails after a Fledge change, the change is wrong, not the test.

Known PHP 8.5 Test Failures
---------------------------

[](#known-php-85-test-failures)

These 4 test failures exist on **vanilla Laravel 13 running on PHP 8.5**, they are not caused by Fledge:

TestRoot Cause`RedisConnectionTest::testItScansForKeys`Predis cursor format incompatibility`RedisConnectionTest::testItHscansForKeys`Predis cursor format incompatibility`RedisConnectionTest::testItZscansForKeys`Predis cursor format incompatibility`RedisConnectionTest::testItSscansForKeys`Predis cursor format incompatibilityCredits
-------

[](#credits)

**All credit goes to [Taylor Otwell](https://github.com/taylorotwell) and the [Laravel](https://laravel.com) team.** This project is built entirely on their work. Fledge is not a fork intended to compete with Laravel; it's an optimization layer for teams already running PHP 8.5.

License
-------

[](#license)

MIT, same as Laravel.

###  Health Score

53

—

FairBetter than 96% of packages

Maintenance98

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity71

Established project with proven stability

 Bus Factor1

Top contributor holds 62% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

1290

Last Release

5d ago

Major Versions

v12.60.0 → v13.11.12026-05-19

v12.60.1 → v13.11.1.12026-05-20

v11.53.1 → v12.60.22026-05-20

v12.60.2 → v13.11.2.12026-05-21

v11.54.0 → v13.12.0.12026-05-30

PHP version history (17 changes)v4.0.0-BETA2PHP &gt;=5.3.0

v4.0.0-BETA4PHP &gt;=5.3.7

v4.2.0-BETA1PHP &gt;=5.4.0

v5.1.0PHP &gt;=5.5.9

v5.3.0-RC1PHP &gt;=5.6.4

v5.5.0PHP &gt;=7.0

v5.6.0PHP ^7.1.3

v6.0.0PHP ^7.2

v7.0.0PHP ^7.2.5

v8.0.0PHP ^7.3

v6.20.0PHP ^7.2.5|^8.0

v8.12.0PHP ^7.3|^8.0

v9.0.0-beta.1PHP ^8.0.2

v10.0.0PHP ^8.1

v11.0.0PHP ^8.2

v13.0.0PHP ^8.3

v13.3.0.1PHP ^8.5

### Community

Maintainers

![](https://www.gravatar.com/avatar/e442a1d15a5b64438f3b471acfded80951afb1bed23641cfd80c5254099eab9d?d=identicon)[webpatser](/maintainers/webpatser)

---

Top Contributors

[![taylorotwell](https://avatars.githubusercontent.com/u/463230?v=4)](https://github.com/taylorotwell "taylorotwell (17322 commits)")[![GrahamCampbell](https://avatars.githubusercontent.com/u/2829600?v=4)](https://github.com/GrahamCampbell "GrahamCampbell (2238 commits)")[![driesvints](https://avatars.githubusercontent.com/u/594614?v=4)](https://github.com/driesvints "driesvints (1495 commits)")[![TBlindaruk](https://avatars.githubusercontent.com/u/12684601?v=4)](https://github.com/TBlindaruk "TBlindaruk (859 commits)")[![themsaid](https://avatars.githubusercontent.com/u/4332182?v=4)](https://github.com/themsaid "themsaid (857 commits)")[![lucasmichot](https://avatars.githubusercontent.com/u/513603?v=4)](https://github.com/lucasmichot "lucasmichot (719 commits)")[![crynobone](https://avatars.githubusercontent.com/u/172966?v=4)](https://github.com/crynobone "crynobone (578 commits)")[![StyleCIBot](https://avatars.githubusercontent.com/u/11048387?v=4)](https://github.com/StyleCIBot "StyleCIBot (380 commits)")[![JosephSilber](https://avatars.githubusercontent.com/u/1403741?v=4)](https://github.com/JosephSilber "JosephSilber (366 commits)")[![tillkruss](https://avatars.githubusercontent.com/u/665029?v=4)](https://github.com/tillkruss "tillkruss (354 commits)")[![nunomaduro](https://avatars.githubusercontent.com/u/5457236?v=4)](https://github.com/nunomaduro "nunomaduro (297 commits)")[![browner12](https://avatars.githubusercontent.com/u/5232313?v=4)](https://github.com/browner12 "browner12 (230 commits)")[![timacdonald](https://avatars.githubusercontent.com/u/24803032?v=4)](https://github.com/timacdonald "timacdonald (214 commits)")[![staudenmeir](https://avatars.githubusercontent.com/u/1853169?v=4)](https://github.com/staudenmeir "staudenmeir (191 commits)")[![imanghafoori1](https://avatars.githubusercontent.com/u/6961695?v=4)](https://github.com/imanghafoori1 "imanghafoori1 (178 commits)")[![cosmastech](https://avatars.githubusercontent.com/u/42181698?v=4)](https://github.com/cosmastech "cosmastech (170 commits)")[![vlakoff](https://avatars.githubusercontent.com/u/544424?v=4)](https://github.com/vlakoff "vlakoff (167 commits)")[![jackbayliss](https://avatars.githubusercontent.com/u/13621738?v=4)](https://github.com/jackbayliss "jackbayliss (135 commits)")[![KennedyTedesco](https://avatars.githubusercontent.com/u/999232?v=4)](https://github.com/KennedyTedesco "KennedyTedesco (115 commits)")[![mnabialek](https://avatars.githubusercontent.com/u/7656807?v=4)](https://github.com/mnabialek "mnabialek (114 commits)")

---

Tags

amphpasyncfiberfledgelaravelphp85asyncframeworklaravelphp85fiberfledge

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/webpatser-fledge-framework/health.svg)

```
[![Health](https://phpackages.com/badges/webpatser-fledge-framework/health.svg)](https://phpackages.com/packages/webpatser-fledge-framework)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k543.8M20.2k](/packages/laravel-framework)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M579](/packages/shopware-core)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9421.6k62](/packages/open-dxp-opendxp)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6942.5M421](/packages/drupal-core-recommended)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
