mahbubhelal/record-api-request
A Laravel package that records every API request your app handles or sends, capturing method, URL, headers, payload, response, and timing. Useful for debugging, auditing, and monitoring traffic, with simple configuration and database storage out of the box.
The v1.0.0 release notes are just "Initial release," so there is nothing in the changelog to anchor a review against. Treat the package's own repository as the source of truth and read it before installing.
Minimum steps to get a signal on day one:
composer require vendor/package in a throwaway Laravel app, not your main one first.composer.json constraints (PHP version, illuminate/* ranges) — this is the fastest way to know whether it will survive your next Laravel upgrade.php artisan about lists discovered providers); otherwise register it manually in bootstrap/providers.php or config/app.php.php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" — check for config, migrations, views, and assets tags.php artisan config:cache and php artisan route:cache immediately after publishing. A package that breaks under cached config will break in production, and you want to find that now, not at deploy.Where to look first, in order: the README's "quick start," the config file (it documents the intended surface area better than most READMEs), the service provider's register()/boot() methods for container bindings and singletons, and any facade class.
First use case: pick one concrete, low-risk path — a single read/format/transform operation — and exercise it from php artisan tinker before wiring it into a controller. That validates container resolution, config loading, and the happy path in about five minutes.
Wrap, don't sprinkle. Inject the package's service into your own thin adapter rather than calling its facade from controllers. Facades are the usual culprit when a package's major version forces a wide refactor; a single adapter confines that to one file.
Bind at the boundary. If the package exposes an interface, re-bind it in your own AppServiceProvider (or a dedicated provider) so tests can swap in a fake without touching package internals. If it only ships concrete classes, subclass or wrap them — anything you can't substitute is something you can't test cheaply.
Config as the switch. Publish the config file and drive behavior from config/package.php plus env vars, not from method-level arguments scattered across the app. On a fresh 1.0.0, assume the config keys are the most stable part of the API and the method signatures are the least.
Stage the rollout. Ship it behind one feature: a single console command, a queued job, an API resource. Keep the previous implementation reachable via config for one release cycle. For a first release with no changelog history, that rollback path is your only real safety net.
Testing. Add one integration test that hits the package's real path (with RefreshDatabase if it publishes migrations) and one unit test against a stubbed adapter. That pair catches both "the binding changed" and "our usage changed."
Pin and track. "vendor/package": "1.0.*" rather than ^1.0 until you've seen how they version. Watch the tag diff on 1.0.1 — the first patch after an initial release usually reveals whether they treat anything as breaking.
vendor/. Publish migrations and config, then own them. If a published migration needs changing, write a new one.php artisan about and composer why vendor/package are your first two commands when something resolves to the wrong instance.config/, it will work locally and fail under config:cache. Test it cached, always.queue:restart after deploy and confirm it behaves under Octane. Singletons that accumulate state are a classic 1.0.0 bug.config/logging.php so its output is separable from your app's. Failing that, wrap calls in a small try/catch that logs the package's version alongside the exception.register() accepts overrides via config before you start subclassing.How can I help you explore Laravel packages today?