Skip to content

Latest commit

 

History

History
109 lines (76 loc) · 4.23 KB

File metadata and controls

109 lines (76 loc) · 4.23 KB

@yan-ad/shopify-app-tanstack

License: MIT npm version npm downloads

This is a community-maintained project inspired by Shopify's app tooling, rebuilt for TanStack Router.

It is not an official Shopify package.

This package is built for the Vite ecosystem, making it easy to build Shopify apps with TanStack Router while keeping familiar Shopify app primitives.

ESM-only package

This package publishes modern ESM output only (.mjs) and "type": "module" metadata.

  • Use import syntax in Node and bundlers.
  • require('@yan-ad/shopify-app-tanstack') is not supported.

Migration guide

The full migration guide now lives in this repository Wiki: Migration Guide

Warning

If your current project started from a Remix template (for example shopify-app-template-remix), read this official guide first: https://github.com/Shopify/shopify-app-template-react-router/wiki/Upgrading-from-Remix

Package and release info

This repository uses changelogen to generate and maintain CHANGELOG.md from Conventional Commits.

Common commands:

  • bun run changelog (update CHANGELOG.md from commits)
  • bun run changelog:bump (bump version and update CHANGELOG.md)
  • bun run release (build, bump, changelog, commit, and tag)

Resources

Getting started:

Shopify:

Testing your app

This package exports a helper method through @yan-ad/shopify-app-tanstack/test-helpers to simplify testing: testConfig(). This method can be used to pass dummy configuration properties to shopifyApp().

If your testing framework supports setting environment variables, we recommend using an environment variable, for example "SHOPIFY_TESTING" to replace your default config with the config returned from testConfig().

// my-app/app/shopify.server.ts
import { testConfig } from "@yan-ad/shopify-app-tanstack/test-helpers";
...
const config = {
  ...
};

if (process.env.SHOPIFY_TESTING) {
  Object.assign(config, testConfig());
}

const shopify = shopifyApp(config);
...

testConfig() accepts a config object as an optional parameter. The config values provided override the default config values returned by testConfig(). This is especially useful for integration testing and end-to-end testing to ensure shopifyApp() reads the sessions from the development database.

// my-app/app/shopify.server.ts
import { testConfig } from "@yan-ad/shopify-app-tanstack/test-helpers";
...
const sessionStorage = new PrismaSessionStorage(prisma);
const config = {
  ...
  sessionStorage,
  ...
};

if (process.env.SHOPIFY_TESTING) {
  Object.assign(config, testConfig());
}

if (process.env.SHOPIFY_TESTING === "e2e") {
  Object.assign(config, testConfig({ sessionStorage }));
}
...

Gotchas / Troubleshooting

For common issues, open or search issues in this repository: https://github.com/yanuaraditia/shopify-app-tanstack/issues