vormkracht10/flysystem-uploadcare
A Flysystem adapter that lets Laravel apps use Uploadcare as a storage disk. Register it as a disk and use the familiar Storage facade to upload, retrieve, and delete files through Uploadcare's CDN-backed file handling service with minimal configuration.
What v0.6.0 actually is: a compatibility release, not a feature release. It widens illuminate/support to admit ^13.0, relaxes dev-tool constraints (Pest ^4.0, PHPUnit ^12.0), and adds Laravel 13 (Testbench 11) / PHP 8.4 to CI. No API, config, or driver-behavior changes are advertised, so the upgrade from v0.5.0 reads as additive and low risk.
Architecture fit: vormkracht10/flysystem-uploadcare is a Flysystem adapter exposed as a Laravel filesystem disk. It sits behind the Storage facade, so it is architecturally cheap: application code calls Storage::disk('uploadcare')->put(...), url(), delete(), and the adapter translates to Uploadcare's file/group API. That means it composes with existing Laravel upload pipelines, validation, and queues without touching domain code — provided the app has not built direct Uploadcare SDK calls elsewhere. The trade-off is that everything Uploadcare-specific (groups, transformations, CDN URLs, webhooks, virus scanning) is partly outside the Flysystem contract; expect to drop to the Uploadcare PHP SDK for advanced operations.
Integration feasibility: high for a standard Laravel app — one Composer dependency, one disk entry in config/filesystems.php, two env vars (public key, private key). The real feasibility question is dependency resolution: the widened Laravel constraint is only useful if it composes cleanly with the app's locked illuminate/* and symfony/* versions. The Pest/PHPUnit bumps are dev-only and should not affect production installs, but confirm they live in require-dev and not require.
Technical risk:
^13.0 says nothing about the lower bound. Confirm whether Laravel 10/11/12 remain supported; dropping them would be a breaking change for anyone still on 11/12.php constraint so you know whether your runtime matrix is covered.Key questions for the maintainer / spike:
illuminate/support constraint a widening (^10|^11|^12|^13) or a replacement?Stack fit: strong if you are on Laravel 12 and evaluating Laravel 13, or already planning the 13 upgrade — v0.6.0 is the enabling release that unblocks the framework bump. Weak-to-neutral if you are on Laravel 10/11 with no upgrade pressure; there is no functional reason to move from v0.5.0 in that case.
Migration path:
v0.5.0) in composer.json and record the working disk config.composer require vormkracht10/flysystem-uploadcare:^0.6 and inspect the resolved diff — specifically whether any illuminate/*, symfony/*, or Flysystem versions moved as a side effect.Compatibility checks before merge:
composer why-not on the new constraint set to confirm no transitive conflicts.Sequencing: treat this as an infrastructure ticket, not a feature ticket. Recommended order: (a) validate the package upgrade on the current Laravel version first — it should be a no-op; (b) upgrade Laravel to 13 in a separate change; (c) re-run Uploadcare integration tests. Doing (a) and (b) in one PR makes it impossible to attribute a regression.
Maintenance burden: low in steady state — the adapter is thin and the surface area is small. The burden is version-tracking, not code. Budget a recurring review each Laravel minor to confirm the constraint has been widened; this release is evidence that gap can be a release cycle or two.
Support posture: community-only. No vendor SLA behind the adapter; Uploadcare supports its own API and SDK, not this wrapper. For a business-critical upload path, plan for the option to fork — the codebase is small enough that forking is a realistic contingency rather than an empty threat.
Scaling: favorable. Uploadcare serves delivery from its CDN, so read traffic does not touch your infrastructure. Write throughput is bounded by Uploadcare API rate limits and your API key's plan tier, not by your app servers. Uploads should go through queued jobs to avoid tying up web workers on third-party latency; large files are better handled with Uploadcare's direct-upload / signed-upload mechanism than by proxying bytes through PHP.
Failure modes to design for:
config:cache staleness after a config change; standard Laravel footgun, but it presents as an Uploadcare auth error and misleads triage.Ramp-up: a Laravel developer is productive in under a day for CRUD file operations. Uploadcare's own concepts — file groups, transformations, webhooks, signed uploads — add roughly another day of genuine learning, and that knowledge lives in the application, not in this package. Document the disk config, the env var contract, and the fallback-to-SDK escape hatch in the repo's operational notes; the next person to touch this will need all three.
How can I help you explore Laravel packages today?