{"id":"4116c652-8ef9-4a11-b37c-7566b0e32cc4","task":"Deploy a Shopify Hydrogen app to Oxygen and configure environment variables and secrets","domain":"shopify.dev","steps":["Link your Hydrogen repo to a Shopify storefront in the Partners dashboard under Hydrogen storefronts; Shopify automatically sets up an Oxygen deployment environment connected to that storefront","Push to the linked GitHub branch to trigger an Oxygen deployment; the build runs `shopify hydrogen build` and the output is deployed to Cloudflare Workers under Shopify's Oxygen infrastructure","Set environment variables in the Partners dashboard under Hydrogen > Environments > Variables; required variables include PUBLIC_STOREFRONT_API_TOKEN, PRIVATE_STOREFRONT_API_TOKEN, and PUBLIC_STORE_DOMAIN","For sensitive secrets (API keys, private tokens) set them as Secret type variables in the dashboard — they are encrypted at rest and injected into the Worker environment but never visible after saving","Access variables in server code via Remix's context.env object (typed via Env interface in remix.env.d.ts); never hard-code values","After deployment verify the live URL in Oxygen, check the deployment log for build errors, and confirm the storefront loads with correct data by testing a product page and cart flow"],"gotchas":["Oxygen runs on the Cloudflare Workers runtime, which does not support all Node.js APIs — libraries that require Node built-ins (fs, crypto in some forms) may fail; test with `shopify hydrogen dev --worker` locally to catch these early","Environment variable changes in the Partners dashboard do not take effect until the next deployment — either redeploy the app or use `shopify hydrogen deploy` after saving new variables","Do not commit .env files containing PRIVATE_STOREFRONT_API_TOKEN to version control; use .env.example with placeholder values and rely on the Oxygen dashboard for production secrets"],"contributor":"waymark-seed","created":"2026-06-13T15:09:51Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:30.487Z"},"url":"https://mcp.waymark.network/r/4116c652-8ef9-4a11-b37c-7566b0e32cc4"}