Weave 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

Laravel Shopify Laravel Package

portside-labs/laravel-shopify

Laravel Shopify by Portside Labs is a lightweight integration for building Shopify apps with Laravel. It streamlines API client setup, OAuth authentication, webhook routing, and configuration so you can connect your app to Shopify stores with less boilerplate and focus on business logic.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is a Laravel-flavored orchestration layer over Shopify's CLI, not a runtime library. It ships Artisan commands (shopify:install, shopify:dev, shopify:deploy, shopify:doctor) plus a composer create-project skeleton, and treats shopify.app.toml as a first-class, environment-scoped artifact.
  • Fits teams already standardized on Laravel + a Node toolchain on developer machines and in CI. It assumes the Shopify CLI, npm, and a tunnel are available wherever shopify:dev runs — that is a real stack dependency for a PHP package.
  • The environment-to-config mapping (SHOPIFY_APP_CONFIG, shopify.app.dev.toml in local, shopify.app.toml for production, named configs always respected) is a coherent, conventional model that mirrors Laravel's own env-file conventions.

Integration feasibility

  • Low-friction for greenfield: two commands to a running app on a dev store is a genuinely strong onboarding story and materially shortens time-to-first-webhook.
  • For brownfield apps, integration is a config migration, not a code migration: existing apps must copy shopify.app.toml to shopify.app.dev.toml (or re-run shopify:install). Anything with bespoke config management (custom scripts, Dev Dashboard-authored config, monorepo CI) will need reconciliation.
  • shopify:deploy is the most valuable addition for enterprise adoption: it names the configuration explicitly, refuses unlinked or tunnel/localhost/*.test/example.com URLs in production, runs shopify:doctor, and supports --no-interaction for CI (auto-adding --allow-updates). That is the shape of a deployable, auditable release step.

Technical risk

  • CLI coupling (high). The release notes explicitly state shopify app dev "rewrites the configuration from the Dev Dashboard and drops the kit's webhooks and settings." The package's countermeasure — re-subscribing to default webhooks "whenever the configuration has lost them" — is a compensating control against undocumented upstream behavior. Every Shopify CLI release can silently change this contract, and the failure mode is lost webhooks, which is invisible until an uninstall or compliance event is missed.
  • Webhook source-of-truth ambiguity (high). Re-subscribing to app/uninstalled, app/scopes_update, and the three compliance topics keeps an app review-compliant, but it means two writers (kit and Dev Dashboard) to one configuration. Unclear who wins, and whether removed webhooks get resurrected.
  • npm install on every shopify:dev (medium). Slow, network-dependent, and non-deterministic unless a lockfile is committed and npm ci semantics are enforced. Repeatedly cited developer-friction source.
  • Pre-1.0 churn (medium). v0.5.0 contains an upgrade-affecting change to local dev defaults. Expect more; pin versions and read release notes.
  • Production guardrails are heuristics (low–medium). String checks for tunnel/localhost/.test/example.com are reasonable but bypassable by a custom domain pointing at a tunnel.

Key questions

  • Which Shopify CLI versions are supported and tested against? Is there a compatibility matrix or CI job that exercises the CLI?
  • Does the package own webhook declarations, or does it defer to the Dev Dashboard? What happens when a developer intentionally removes a default webhook?
  • What is the 1.0 stabilization plan, and what is the deprecation policy for config-file conventions between now and then?
  • Is shopify:dev intended for local only, or is it sanctioned for shared/staging environments?
  • Who is the target user — solo builders shipping a first app, or teams running multiple named configurations through CI?

Integration Approach

Stack fit

  • Requires PHP/Laravel (per the skeleton), Node + npm, and the Shopify CLI on any machine that runs shopify:dev or shopify:deploy. CI needs the CLI, Node, and Shopify auth credentials; it does not need PHP to deploy config, but does need it to run Artisan.
  • Secrets posture is sane: .env carries APP_URL and SHOPIFY_APP_CONFIG; shopify.app.dev.toml is gitignored so per-developer dev settings don't leak into the repo, while shopify.app.toml remains the committed production artifact.

Migration path

  1. Pin the package version and record the current Shopify CLI version in the repo.
  2. Existing apps: copy shopify.app.toml → shopify.app.dev.toml, or run php artisan shopify:install once to link the development app to it. Diff the resulting TOML against the committed production file to confirm webhooks and settings survived.
  3. Audit production shopify.app.toml for tunnel/localhost URLs before the first shopify:deploy, since the command refuses them.

Compatibility

  • Named configurations (--config=staging, --production, Artisan --env=production reading .env.production) map cleanly onto a typical dev → staging → prod promotion model. Confirm the mapping between Laravel environments and Shopify configurations is one-to-one in your setup; the release notes imply --env governs the env file, not the Shopify config.
  • Teams already driving shopify app deploy in CI can swap in shopify:deploy incrementally — it passes through --message, --app-version, --no-release, --allow-updates, --allow-deletes, and --skip-checks.

Sequencing

  1. Pilot on one app with a single developer; run install → dev → deploy end-to-end.
  2. Move CI to shopify:deploy --no-interaction behind a manual approval gate; keep --skip-checks out of production paths.
  3. Onboard the team to the two-command flow; make shopify:doctor output a required artifact in PRs touching Shopify config.
  4. Only then adopt named configurations for staging.

Operational Impact

Maintenance

  • The package carries upstream risk by design: it patches around Shopify CLI config rewriting. Budget for a recurring "verify after CLI upgrade" task, and pin the CLI version in dev and CI images.
  • Two config files plus a gitignored dev file means occasional drift between what a developer sees locally and what ships. Treat TOML diffs as reviewable code.

Support

  • The biggest support load will be environment setup: missing CLI, stale Node, tunnel failures, and the dev/prod config split. The rewritten README (including the billing walkthrough: Shopify App Pricing, Partner API client, each .env value) should absorb most of it.
  • shopify:doctor no longer fails on missing billing settings unless a route uses the subscribed middleware. That reduces false-alarm noise but shifts billing misconfiguration discovery later — into runtime. Document it as a known gap.

Scaling

  • Scales well along the team axis: each developer gets an isolated shopify.app.dev.toml, and named configurations cover staging. The design assumes one dev store per developer or a shared dev store — clarify which, since concurrent webhook re-subscription against a shared app is a plausible collision.
  • npm install per shopify:dev invocation becomes a growing tax with team size and dependency count; consider npm ci or a skipped-install flag.

Failure modes

  • Silent webhook loss when the CLI rewrites config and the re-subscription heuristic doesn't fire (e.g. config authored outside the package's expectations). Manifests as missed uninstalls and compliance events.
  • shopify:deploy refusing to run on an unlinked config or a non-production URL — correct, but will surprise teams mid-incident. Ensure an escape hatch is documented.
  • --no-interaction implicitly adding --allow-updates means CI can silently accept upstream-driven config changes; that is convenient and worth an explicit policy decision.
  • Tunnel URL mutation breaking APP_URL and redirect URIs in a running environment.

Ramp-up

  • Very low for new developers: two commands to a live dev store, with hints telling them which command applies changes where.
  • Expect a short but real learning curve for whoever owns the TOML files and CI pipeline — that person needs to understand the environment/config matrix, the CLI's rewriting behavior, and the guardrails. Call it half a day for a Laravel developer, plus a review of the deploy path before first production release.
  • For a TPM: this is a credible accelerator for a first Shopify app and a reasonable CI deploy wrapper, but it should not be adopted without version pinning, a webhook-verification smoke test, and an owner for CLI-upgrade follow-through.
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.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel