shopify-upgrade-guard 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -10
- package/action.yml +2 -0
- package/data/versions.json +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/action.js +1 -1
- package/src/git.js +80 -2
- package/src/graphql.js +128 -2
- package/src/output.js +2 -2
- package/src/rules.js +47 -1
- package/src/scan.js +51 -8
- package/src/version-data.js +2 -2
- package/src/version.js +1 -1
- package/src/versions.js +11 -3
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Shopify Upgrade Guard is an offline, evidence-backed CLI and GitHub Action for S
|
|
|
16
16
|
|
|
17
17
|
Maintained by RexCode Digital Ltd.
|
|
18
18
|
|
|
19
|
-
Part of the **RexCode Shopify developer tools** suite. Requires Node.js 20 or later for the CLI. [Releases](https://github.com/RexCode-Digital/shopify-upgrade-guard/releases) · [npm](https://www.npmjs.com/package/shopify-upgrade-guard) · [Marketplace](https://github.com/marketplace/actions/shopify-upgrade-guard)
|
|
19
|
+
Part of the **RexCode Shopify developer tools** suite. Requires Node.js 20 or later for the CLI. The parser remains on GraphQL 16 because GraphQL 17.0.2 requires Node.js 22 or later, which would drop the supported Node.js 20 runtime. [Releases](https://github.com/RexCode-Digital/shopify-upgrade-guard/releases) · [npm](https://www.npmjs.com/package/shopify-upgrade-guard) · [Marketplace](https://github.com/marketplace/actions/shopify-upgrade-guard)
|
|
20
20
|
|
|
21
21
|
## Quick start
|
|
22
22
|
|
|
@@ -39,7 +39,7 @@ Upgrade Guard separates **current debt** from **target-version blockers**, so te
|
|
|
39
39
|
|
|
40
40
|
- **Target-aware** — evaluate findings against the Shopify version you actually plan to adopt.
|
|
41
41
|
- **Evidence-backed** — Shopify-specific rules link to official Shopify documentation or changelog evidence.
|
|
42
|
-
- **PR-aware** —
|
|
42
|
+
- **PR-aware** — compare independent base and head tree scans, including renamed files, to distinguish new, existing, and resolved findings.
|
|
43
43
|
- **Baseline-friendly** — adopt the tool without forcing a big-bang cleanup of historical findings.
|
|
44
44
|
- **CI-ready** — human, JSON, and SARIF output plus a GitHub Action.
|
|
45
45
|
- **Offline by default** — ordinary scans require no network access, Shopify token, or store access.
|
|
@@ -67,7 +67,7 @@ jobs:
|
|
|
67
67
|
fetch-depth: 0
|
|
68
68
|
persist-credentials: false
|
|
69
69
|
|
|
70
|
-
- uses: RexCode-Digital/shopify-upgrade-guard@
|
|
70
|
+
- uses: RexCode-Digital/shopify-upgrade-guard@b0a6816f95d783f703bf031c9920004fbb865bc1 # v0.2.6
|
|
71
71
|
with:
|
|
72
72
|
target: 2026-10
|
|
73
73
|
fail-on: warning
|
|
@@ -88,13 +88,15 @@ Use the immutable patch release tag or a reviewed full commit SHA. Existing mino
|
|
|
88
88
|
|
|
89
89
|
### Action outputs
|
|
90
90
|
|
|
91
|
-
`outcome`, `finding-count`, `new-finding-count`, `error-count`, `current-versions`, and `result-json`.
|
|
91
|
+
`outcome`, `finding-count`, `new-finding-count`, `resolved-finding-count`, `error-count`, `current-versions`, and `result-json`.
|
|
92
92
|
|
|
93
93
|
The Action is bundled and runs on the current GitHub `node24` JavaScript Action runtime.
|
|
94
94
|
|
|
95
|
+
The example above pins v0.2.6, which does not expose `resolved-finding-count`. The independent base/head comparison and resolved-finding behaviour described below are part of the unreleased changes here; they are not available from the current npm package or Action.
|
|
96
|
+
|
|
95
97
|
## What it catches today
|
|
96
98
|
|
|
97
|
-
The rule pack is intentionally focused.
|
|
99
|
+
The rule pack is intentionally focused. Literal GraphQL checks parse supported documents and ignore malformed or dynamic queries; rule-specific context limits findings to Shopify API constructs that can be identified deterministically.
|
|
98
100
|
|
|
99
101
|
| Rule | Detects | Evidence |
|
|
100
102
|
| --- | --- | --- |
|
|
@@ -107,6 +109,12 @@ The rule pack is intentionally focused. Existing lexical checks report review si
|
|
|
107
109
|
| `UG-POS-001` | Removed POS `session.currentSession.staffMemberId` usage | [Shopify changelog](https://shopify.dev/changelog/removed-session-currentsession-staffmemberid-from-pos-ui-extensions-2026-10) |
|
|
108
110
|
| `UG-ADMIN-001` | Legacy Admin GraphQL `priceRule` usage | [2026-10 release notes](https://shopify.dev/release-notes/2026-10) |
|
|
109
111
|
| `UG-ADMIN-002` | Literal GraphQL root `automaticDiscounts` removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/automaticdiscounts-query-is-removed-in-api-version-2027-01) |
|
|
112
|
+
| `UG-ADMIN-003` | GraphQL `metafieldInteger` collection conditions and types removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/metafieldinteger-collection-condition-removed-in-api-version-2027-01) |
|
|
113
|
+
| `UG-ADMIN-004` | `ProductVariant.barcode` read deprecated in 2026-10; it still works and no removal date is announced | [Official deprecation](https://shopify.dev/changelog/posts/product-variant-barcode-is-being-replaced-by-barcodes) |
|
|
114
|
+
| `UG-ADMIN-006` | Literal `marketCurrencySettingsUpdate` Admin mutation removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/removing-marketcurrencysettingsupdate-mutation) |
|
|
115
|
+
| `UG-ADMIN-007` | `PRIVATE` / `PUBLIC_READ` literals passed as metaobject definition admin access removed in 2027-01 | [Official deprecation](https://shopify.dev/changelog/posts/removing-deprecated-private-and-public-read-enums-on-metaobject-definitions) |
|
|
116
|
+
| `UG-SEGMENT-001` | Legacy function/date syntax inside literal segment GraphQL query arguments | [Official syntax update](https://shopify.dev/changelog/posts/updated-function-syntax-on-the-segment-query-language) |
|
|
117
|
+
| `UG-ADMIN-005` | Source handling for removed inventory error `ITEM_NOT_STOCKED_AT_LOCATION` | [Official removal](https://shopify.dev/changelog/posts/removal-of-itemnotstockedatlocation-error) |
|
|
110
118
|
| `UG-SCRIPT-001` | Cross-version Script Tag write restrictions; REST resource references require method review | [Script Tag deprecation](https://shopify.dev/changelog/online-store-script-tags-deprecation) |
|
|
111
119
|
|
|
112
120
|
Supported inventory surfaces include Admin REST, Admin GraphQL, Checkout UI extensions, Customer Account UI extensions, POS UI extensions, Functions, Shopify app TOML, and recognized Shopify client configuration.
|
|
@@ -150,9 +158,11 @@ npx shopify-upgrade-guard baseline check
|
|
|
150
158
|
|
|
151
159
|
Baselined findings remain reviewable while new fingerprints stay actionable.
|
|
152
160
|
|
|
153
|
-
`--fail-on-new` requires a valid Git base comparison. Fetch full history and provide `--base-ref`, or use the pull-request Action. Missing refs/history exit 2 instead of passing an incomplete comparison.
|
|
161
|
+
`--fail-on-new` requires a valid Git base comparison. Upgrade Guard scans the base commit and head tree independently, then matches findings by rule, file identity, and evidence; recognized file renames keep existing debt stable. JSON includes `resolvedFindings`, and human output reports their count. Fetch full history and provide `--base-ref`, or use the pull-request Action. Missing refs/history exit 2 instead of passing an incomplete comparison.
|
|
162
|
+
|
|
163
|
+
The bundled snapshot, verified 14 October 2026, lists `2026-10` as the latest stable API and `2027-01` as a release candidate for development testing. Version status uses Shopify's exact `accessibleUntil` timestamp: `2025-10` remains accessible until 16 October 2026 at 15:00 UTC, then becomes unsupported. Future version names do not imply verified rule coverage.
|
|
154
164
|
|
|
155
|
-
The
|
|
165
|
+
The 2027-01 tax payload change converts IDs in tax calculation requests and tax summary webhook payloads to Global IDs. Upgrade Guard cannot reliably tell whether arbitrary runtime parsing assumes numeric IDs, so tax app handlers need review against Shopify's [official migration note](https://shopify.dev/changelog/posts/tax-webhook-summary-and-calculation-requests-now-use-global-ids).
|
|
156
166
|
|
|
157
167
|
## Configuration
|
|
158
168
|
|
|
@@ -193,6 +203,8 @@ Building or maintaining Shopify apps?
|
|
|
193
203
|
- **[Shopify Scope Guard](https://github.com/RexCode-Digital/shopify-scope-guard)** — Audit whether declared Shopify permissions are supported by offline code evidence.
|
|
194
204
|
- **[Shopify App Review Guard](https://github.com/RexCode-Digital/shopify-app-review-guard)** — Run deterministic preflight checks for Shopify App Store and production readiness.
|
|
195
205
|
|
|
206
|
+
See the [coordinated workflow example](https://github.com/RexCode-Digital/shopify-app-changeguard/blob/main/docs/ecosystem-workflow.md) to run all four published Actions in one pull-request workflow.
|
|
207
|
+
|
|
196
208
|
GitHub Marketplace: [Shopify Upgrade Guard](https://github.com/marketplace/actions/shopify-upgrade-guard)
|
|
197
209
|
|
|
198
210
|
All four tools run offline and require no Shopify credentials.
|
|
@@ -213,7 +225,7 @@ Start with [the contribution guide](CONTRIBUTING.md) or browse the [open issues]
|
|
|
213
225
|
|
|
214
226
|
## Roadmap
|
|
215
227
|
|
|
216
|
-
Current priorities include additional verified Shopify breaking-change coverage,
|
|
228
|
+
Current priorities include additional verified Shopify breaking-change coverage, high-confidence Functions/Customer Account/POS/GraphQL rules, and maintainable GraphQL deprecation evidence when Shopify provides a versioned source with clear redistribution rights. See the [metadata decision](docs/graphql-deprecation-metadata.md).
|
|
217
229
|
|
|
218
230
|
See [ROADMAP.md](ROADMAP.md).
|
|
219
231
|
|
|
@@ -223,10 +235,10 @@ MIT — see [LICENSE](LICENSE).
|
|
|
223
235
|
|
|
224
236
|
## Immutable SHA usage
|
|
225
237
|
|
|
226
|
-
The Action example pins the reviewed v0.2.
|
|
238
|
+
The Action example pins the reviewed v0.2.6 release commit. Verify the release reference with:
|
|
227
239
|
|
|
228
240
|
```bash
|
|
229
|
-
|
|
241
|
+
git fetch --tags origin && git rev-parse 'v0.2.6^{commit}'
|
|
230
242
|
```
|
|
231
243
|
|
|
232
244
|
Published patch tags and existing minor aliases are retained. Future releases do not move minor aliases; use an immutable patch tag or a reviewed full commit SHA.
|
package/action.yml
CHANGED
|
@@ -29,6 +29,8 @@ runs:
|
|
|
29
29
|
outputs:
|
|
30
30
|
new-finding-count:
|
|
31
31
|
description: Number of findings classified as NEW
|
|
32
|
+
resolved-finding-count:
|
|
33
|
+
description: Number of findings resolved against the Git base tree
|
|
32
34
|
outcome:
|
|
33
35
|
description: Whether the configured failure policy passed
|
|
34
36
|
finding-count:
|
package/data/versions.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"verifiedAt": "2026-10-
|
|
2
|
+
"verifiedAt": "2026-10-14",
|
|
3
3
|
"source": "https://shopify.dev/docs/api/usage/versioning",
|
|
4
4
|
"versions": [
|
|
5
5
|
{
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"version": "2025-10",
|
|
25
25
|
"releaseDate": "2025-10-01",
|
|
26
26
|
"accessibleUntil": "2026-10-16T15:00:00Z",
|
|
27
|
-
"status": "
|
|
27
|
+
"status": "stable"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"version": "2026-01",
|