kyon147/laravel-shopify
A maintained full-featured Laravel package for Shopify app development, with OAuth, webhooks, billing, and support for expiring offline access tokens. Works with Laravel 8+ and installs via Composer.
shopify-app:migrate-expiring-offline-tokens), and a proactive renewal command for dormant shops. This is a compliance-driven roadmap item — if you have an existing install with legacy non-expiring tokens, you now have a discrete, schedulable migration workstream with a one-way (irreversible) cutover. That belongs on the roadmap as its own milestone, not a bug fix.gnikyt/basic-shopify-api for REST/Graph traffic. That is a known strategic liability — a PM should decide now whether to (a) accept it, (b) budget a client-layer abstraction so swapping the HTTP client later is cheap, or (c) fund a fork. The fact that OAuth/token logic is already decoupled from that dependency lowers the risk of the auth half, which is the expensive half.--queue=, --connection=, dedicated worker config) signal that serverless and queued-worker topologies are supported. This informs infrastructure decisions and whether you can run on Vapor without custom cron plumbing — note the package deliberately does not auto-register schedules, so scheduling is your app's responsibility.shops table and per-shop token storage imply multi-tenant). Poor fit for single-merchant storefront-only integrations.Consider it when all of the following hold:
shops/users schema rather than designing one.Look elsewhere or plan to hedge when:
gnikyt/basic-shopify-api, which the README flags as something you may want to replace or fork. Budget for that.To executives: This is an MIT-licensed Laravel package that gives us the standard Shopify app foundation — merchant install/OAuth, per-shop credential storage, webhooks, and billing — off the shelf, instead of us building and maintaining it. It is a maintained fork of the widely used original laravel-shopify package, which was deprecated; the community kept it alive and it is now being actively updated for Shopify's 2026 token requirements. That last point is the headline: Shopify is mandating expiring offline tokens for new public apps from April 2026, and this package already ships the migration tooling, including batch commands safe for serverless. Adopting it converts a compliance deadline into a scheduled, reversible-until-cutover migration rather than an emergency.
To engineering: It handles the parts nobody wants to write twice — OAuth code exchange, session-token exchange, refresh grants, token encryption, per-shop API client construction, and charge flows. You get artisan commands for migrating legacy tokens and proactively renewing near-expiry refresh tokens, plus queue/connection targeting for Vapor-style deployments. Two caveats to plan around: (1) the package intentionally does not register a scheduler, so renewal is our cron to own; (2) token refresh happens at API-client build time, so long-running jobs must either enable the pre-call refresh check or call refreshOfflineAccessTokenIfNeeded() per loop iteration. Also, keep APP_KEY stable — refresh tokens are encrypted with it, and rotation loses them.
Honest risk framing for both audiences: The API client dependency (gnikyt/basic-shopify-api) is the weak link and the maintainer says so. Our mitigation is to keep our Shopify business logic behind a thin internal service layer so the HTTP client is swappable. Maintenance is one primary maintainer working in spare time — acceptable for a package of this scope and maturity, but it argues for pinning versions and reviewing changelogs on upgrade rather than floating. Recommend adoption (buy, don't build), with a funded abstraction seam and a roadmap milestone for the token migration.
How can I help you explore Laravel packages today?