deploteka ← Back to home

Guides

Practical, honestly-answered guides on running one Shopify app across many client stores: distribution options, custom vs public apps, and the January 2026 legacy custom-app deprecation.

Shopify Is Deprecating Legacy Custom Apps (Jan 2026): What Vendors Need to Do

Since Jan 1, 2026, new custom apps can't be created in the Shopify admin. What still works, what breaks for multi-store vendors, and the migration paths.

Updated July 18, 2026

How to Install a Shopify App on Multiple Stores: The Real Options

You can't install one Shopify custom app across different merchants' stores. Here are the four real options — and when each one actually works.

Updated July 18, 2026

Shopify Custom Apps Explained: Custom vs Custom-Distribution vs Public

The three kinds of Shopify apps — legacy custom, custom-distribution, and public — differ by who can install them, not what they can do. A plain-English guide.

Updated July 18, 2026

Wire the DeploTeka fleet contract into any Shopify app (any stack, any version)

The DeploTeka fleet contract is two HTTP routes and a per-shop credential lookup — implementable in any language or framework, any version. The exact wire shapes plus working reference code.

Updated August 11, 2026

Run one Express app as a fleet of dedicated Shopify apps (10–30 minutes)

A @shopify/shopify-app-express app binds one client_id at construction. The DeploTeka Express adapter dispatches every middleware to the requesting shop’s own dedicated app instead — one install, two edits, no rewrite.

Updated August 12, 2026

Run one Laravel app as a fleet of dedicated Shopify apps (10–30 minutes)

kyon147/laravel-shopify already ships a per-shop credential hook: config_api_callback. The DeploTeka Laravel adapter implements it, adds the two fleet routes, and turns one deployment into a fleet of dedicated Shopify apps — no rewrite, no upgrade.

Updated August 12, 2026

Run one Rails app as a fleet of dedicated Shopify apps

The shopify_app gem reads its credentials from ShopifyAPI::Context, a process-global singleton — so one Rails app can only speak for one Shopify app. Here is the per-shop credential recipe that changes that, the three places it has to be injected, and why the obvious around_action is not thread-safe.

Updated August 13, 2026

Run one Python Shopify app as a fleet of dedicated apps (Flask or FastAPI)

shopify.Session.api_key and .secret are class attributes, so one Python process speaks for exactly one Shopify app. Two endpoints, one table and a per-shop lookup change that. Complete Flask and FastAPI implementations, with the byte-exactness details both frameworks get wrong by default.

Updated August 13, 2026

The 40-line fleet capture: webhook-only Shopify apps

A Shopify app with no embedded UI has almost nothing to change to run as a fleet of dedicated apps: no OAuth to rewire, no App Bridge, no session tokens. Two endpoints, one table, and a per-shop secret in the HMAC check — with the exact code, and an honest list of when this is not enough.

Updated August 13, 2026

Fleet contract for extension-only Shopify apps: the one-file shim

A theme app extension or web pixel app has no backend to change — which makes the fleet contract a hosting question, not an integration one. What the shim has to answer, what it must never become, and where to run it for nothing.

Updated August 13, 2026