npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

deploteka-app-fleet-legacy

v0.2.1

Published

Drop-in multi-tenant wrapper for LEGACY @shopify/shopify-app-remix v2/v3 apps — the same DeploTeka fleet wire contract as deploteka-app-fleet (imported from it, never copied), fitted to the pre-v4 shopifyApp() surface.

Readme

deploteka-app-fleet-legacy

Runtime authentication adapter for applications onboarded with DeploTeka that run on a legacy @shopify/shopify-app-remix v2 or v3 — the pre-Vite 2023–24 template era. It resolves the dedicated Shopify app credentials for each shop, delegates to the app's own Shopify framework, and keeps a local credential replica so application authentication does not depend on DeploTeka being online.

DeploTeka captures apps as they are. Running an app you shipped in 2023 is not a reason to be told to migrate first — this package gives it the same one-command onboarding a brand-new React Router app gets.

// app/shopify.server.js
import { shopifyAppFleet } from 'deploteka-app-fleet-legacy';

Install it through the official onboarding command, which detects your framework major and picks this package for you:

npx deploteka onboard . --apply

Direct installation is supported for custom integrations:

npm install deploteka-app-fleet-legacy

Relationship to deploteka-app-fleet

This is not a fork. The fleet wire contract (POST /api/fleet/register, GET /api/fleet/installed, contractVersion: 1, the secretFingerprint algorithm) and the whole multi-tenant runtime are imported from deploteka-app-fleet, which this package depends on. There is exactly one implementation of the contract across every DeploTeka runtime, so the modern and legacy adapters cannot drift apart.

It exists as a separate package for one reason: npm allows a single peer range per package name, and this adapter peers on @shopify/shopify-app-remix >=2 <4 where the modern entry point needs >=4 <5.

What is different about v2/v3

Everything the fleet touches is either identical to v4 or passed straight through:

| Area | v2/v3 | Handling | |---|---|---| | authenticate.public | Callable and an object (until the v3_authenticatePublic future flag) | The shared runtime's per-shop proxy supports both call and property forms | | sessionStorage | Required in the config (optional in v4) | Required here too — the fleet needs one shared store anyway | | Auth strategy | Authorization-code grant with /auth routes by default; token exchange only behind unstable_newEmbeddedAuthStrategy | No branch needed: each shop's grant runs against that shop's own injected apiKey/apiSecretKey/appUrl | | Future flags | Older set (v3_*, unstable_newEmbeddedAuthStrategy) | Passed through untouched | | Session model | No refreshToken/refreshTokenExpires columns | The install-proof loader only reads isOnline/accessToken/scope | | restResources, apiVersion, webhooks, hooks, authPathPrefix | Same config keys | Passed through untouched | | authenticate.fulfillmentService | Only exists from v2.5.0 | Exposed unconditionally and dispatched lazily — on 2.4.x it fails exactly as it would without the wrapper |

Published as both ESM and CommonJS: legacy Remix templates build their server with serverModuleFormat: "cjs" and leave node_modules external, so the CommonJS build is what makes the runtime actually loadable at boot.

Documentation: https://deploteka.com