Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## 3.5.0

### Changed

- New apps use Shopify API version 2026-10, the latest stable release, in
place of 2026-07. It applies to Admin API calls and webhooks from the
functions, to `shopify.app.toml` and to the theme block. Apps you already
generated keep their version until you change it.

## 3.4.0

### Added
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ npx @mksd0398/nitrogen my-app
**[Website](https://mksd0398.github.io/nitrogen/)** · **[Will it be free for my app? Try the cost calculator](https://mksd0398.github.io/nitrogen/#calculator)** · **[Build it with an AI agent](#build-with-an-ai-agent)**

<p align="center">
<img src="https://img.shields.io/badge/Shopify-2026--07-7AB55C?logo=shopify&logoColor=white" />
<img src="https://img.shields.io/badge/Shopify-2026--10-7AB55C?logo=shopify&logoColor=white" />
<img src="https://img.shields.io/badge/Firebase-v2%20Functions-FFCA28?logo=firebase&logoColor=black" />
<img src="https://img.shields.io/badge/Node-24-339933?logo=nodedotjs&logoColor=white" />
<img src="https://img.shields.io/badge/TypeScript-Functions-3178C6?logo=typescript&logoColor=white" />
Expand Down Expand Up @@ -59,7 +59,7 @@ The **Firebase alternative** to `shopify app init`. Instead of Remix + Prisma +
- **Polaris web components + App Bridge** — 6 pages, no React, no build step
- **A complete reference inside your app** — every Polaris component and every App Bridge API, each with a working example to copy
- **Theme App Extension** for storefront UI (works on all Shopify plans)
- **Shopify API 2026-07** — token exchange, OAuth, session tokens, webhooks, GDPR handlers
- **Shopify API 2026-10** — token exchange, OAuth, session tokens, webhooks, GDPR handlers
- **Single- or multi-tenant** — locked to one store, open to many, or several Shopify apps on one backend
- **API keys** for callers outside Shopify — hashed at rest, scoped, per tenant
- **A test suite in every generated project** — `npm test` covers auth, webhooks, routing and wiring
Expand Down Expand Up @@ -262,7 +262,7 @@ app with no traffic costs nothing, and a small app fits inside the free tier.

```
my-app/
├── shopify.app.toml # Shopify app config (API 2026-07)
├── shopify.app.toml # Shopify app config (API 2026-10)
├── firebase.json # Hosting rewrites, headers, functions, Firestore
├── firestore.rules # Deny-all: only Cloud Functions touch the data
│
Expand Down
2 changes: 1 addition & 1 deletion lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -1786,7 +1786,7 @@ function printHelp() {
✔ Firebase v2 Cloud Functions — one per API resource, auto-scaling
✔ Multi-tenant — many shops, and several Shopify apps on one backend
✔ Tested — npm test covers auth, webhooks and routing
✔ Shopify API 2026-07 — OAuth, webhooks, GDPR
✔ Shopify API 2026-10 — OAuth, webhooks, GDPR
✔ Firestore — sessions, settings, app data
✔ TypeScript or JavaScript — your choice
✔ Scales to zero — an idle app costs nothing; a free tier covers small ones
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mksd0398/nitrogen",
"version": "3.4.0",
"version": "3.5.0",
"description": "Scaffold, deploy and install a Shopify app on Firebase in one command. Cloud Functions, Firestore and Hosting; Polaris web components and App Bridge; TypeScript or JavaScript. No framework, no server. Not affiliated with or endorsed by Shopify.",
"keywords": [
"shopify",
Expand Down
2 changes: 1 addition & 1 deletion templates/js/functions/src/shopify.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const { HttpError } = require("./http");
// Shopify API version — update when Shopify releases new versions
// (quarterly: January, April, July, October)
// Docs: https://shopify.dev/docs/api/usage/versioning
const API_VERSION = "2026-07";
const API_VERSION = "2026-10";

/**
* Run an Admin API GraphQL query as the calling tenant and return `data`.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
api_version = "2026-07"
api_version = "2026-10"

[[extensions]]
name = "App Block"
Expand Down
2 changes: 1 addition & 1 deletion templates/shopify.app.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ redirect_urls = [
]

[webhooks]
api_version = "2026-07"
api_version = "2026-10"

# App lifecycle
[[webhooks.subscriptions]]
Expand Down
2 changes: 1 addition & 1 deletion templates/ts/functions/src/shopify.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Context, HttpError } from "./http";
// Shopify API version — update when Shopify releases new versions
// (quarterly: January, April, July, October)
// Docs: https://shopify.dev/docs/api/usage/versioning
export const API_VERSION = "2026-07";
export const API_VERSION = "2026-10";

/**
* Run an Admin API GraphQL query as the calling tenant and return `data`.
Expand Down
Loading