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
13 changes: 13 additions & 0 deletions .changeset/thin-webs-notice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
'@shopify/plugin-did-you-mean': major
'@shopify/plugin-cloudflare': major
'@shopify/create-app': major
'@shopify/cli-kit': major
'@shopify/store': major
'@shopify/theme': major
'@shopify/app': major
'@shopify/cli': major
'@shopify/e2e': major
---

Drop support for Node 20
12 changes: 6 additions & 6 deletions .github/workflows/tests-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ env:
BUNDLE_WITHOUT: 'test:development'
GH_TOKEN: ${{ secrets.SHOPIFY_GH_READ_CONTENT_TOKEN }}
GH_TOKEN_SHOP: ${{ secrets.SHOP_GH_READ_CONTENT_TOKEN }}
DEFAULT_NODE_VERSION: '24.1.0'
DEFAULT_NODE_VERSION: '26.1.0'

jobs:
main:
Expand All @@ -32,7 +32,7 @@ jobs:
strategy:
matrix:
os: [ 'ubuntu-latest', 'windows-latest', 'macos-latest' ]
node: [ '20.14.0', '22.2.0', '24.1.0' ]
node: [ '22.12.0', '24.1.0', '26.1.0' ]
steps:
- uses: actions/checkout@v3
name: Checkout [${{ github.ref_name }}]
Expand All @@ -44,16 +44,16 @@ jobs:
node-version: ${{ matrix.node }}
- name: Build
run: pnpm nx run-many --all --skip-nx-cache --target=build --output-style=stream
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == '24.1.0' }}
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == '26.1.0' }}
- name: Lint
run: pnpm nx run-many --all --skip-nx-cache --target=lint --output-style=stream
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == '24.1.0' }}
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == '26.1.0' }}
- name: Type-check
run: pnpm nx run-many --all --skip-nx-cache --target=type-check --output-style=stream
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == '24.1.0' }}
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == '26.1.0' }}
- name: Bundle
run: pnpm nx run-many --all --skip-nx-cache --target=bundle --output-style=stream
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == '24.1.0' }}
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == '26.1.0' }}
- name: Unit tests
run: pnpm vitest run ${{ env.POOL_OPTIONS }}
env:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/tests-manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ on:
node-version:
description: 'Node version'
required: true
default: '24.1.0'
default: '26.1.0'
type: choice
options:
- 20.14.0
- 22.2.0
- 22.12.0
- 24.1.0
- 26.1.0
os:
description: 'Operating system'
required: true
Expand All @@ -41,7 +41,7 @@ env:
SHOPIFY_FLAG_CLIENT_ID: ${{ secrets.SHOPIFY_FLAG_CLIENT_ID }}
GH_TOKEN: ${{ secrets.SHOPIFY_GH_READ_CONTENT_TOKEN }}
GH_TOKEN_SHOP: ${{ secrets.SHOP_GH_READ_CONTENT_TOKEN }}
DEFAULT_NODE_VERSION: '24.1.0'
DEFAULT_NODE_VERSION: '26.1.0'
DEFAULT_OS: 'ubuntu-latest'

jobs:
Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/tests-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ env:
BUNDLE_WITHOUT: 'test:development'
GH_TOKEN: ${{ secrets.SHOPIFY_GH_READ_CONTENT_TOKEN }}
GH_TOKEN_SHOP: ${{ secrets.SHOP_GH_READ_CONTENT_TOKEN }}
DEFAULT_NODE_VERSION: '24.1.0'
DEFAULT_NODE_VERSION: '26.1.0'

jobs:
type-check:
Expand Down Expand Up @@ -156,38 +156,38 @@ jobs:
strategy:
matrix:
os: [ 'ubuntu-latest', 'windows-latest', 'macos-latest' ]
node: [ '20.14.0', '22.2.0', '24.1.0' ]
node: [ '22.12.0', '24.1.0', '26.1.0' ]
shard: [ '' ]
include:
# Add sharding for Windows jobs to reduce wall-clock time
- os: windows-latest
node: '20.14.0'
node: '22.12.0'
shard: '1/2'
- os: windows-latest
node: '20.14.0'
node: '22.12.0'
shard: '2/2'
- os: windows-latest
node: '22.2.0'
node: '24.1.0'
shard: '1/2'
- os: windows-latest
node: '22.2.0'
node: '24.1.0'
shard: '2/2'
- os: windows-latest
node: '24.1.0'
node: '26.1.0'
shard: '1/2'
- os: windows-latest
node: '24.1.0'
node: '26.1.0'
shard: '2/2'
exclude:
# Exclude the non-sharded Windows entries (replaced by sharded ones above)
- os: windows-latest
node: '20.14.0'
node: '22.12.0'
shard: ''
- os: windows-latest
node: '22.2.0'
node: '24.1.0'
shard: ''
- os: windows-latest
node: '24.1.0'
node: '26.1.0'
shard: ''
steps:
- uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-graphql-deps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
- name: Setup deps
uses: ./.github/actions/setup-cli-deps
with:
node-version: '24.1.0'
node-version: '26.1.0'
- name: Get schemas for codegen
env:
GH_TOKEN: ${{ secrets.SHOPIFY_GH_READ_CONTENT_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: cli

up:
- node:
version: 24.1.0
version: 26.1.0
package_manager: pnpm@10.11.1
- packages:
- jq
Expand Down
4 changes: 2 additions & 2 deletions docs-shopify.dev/generated/generated_static_pages.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"type": "Generic",
"anchorLink": "requirements",
"title": "Requirements",
"sectionContent": "\n- [Node.js](https://nodejs.org/en/download/): 20.10 or higher\n- A Node.js package manager: [npm](https://www.npmjs.com/get-npm), [Yarn 1.x](https://classic.yarnpkg.com/lang/en/docs/install), or [pnpm](https://pnpm.io/installation).\n- [Git](https://git-scm.com/downloads): 2.28.0 or higher\n"
"sectionContent": "\n- [Node.js](https://nodejs.org/en/download/): 22.12 or higher\n- A Node.js package manager: [npm](https://www.npmjs.com/get-npm), [Yarn 1.x](https://classic.yarnpkg.com/lang/en/docs/install), or [pnpm](https://pnpm.io/installation).\n- [Git](https://git-scm.com/downloads): 2.28.0 or higher\n"
},
{
"type": "Generic",
Expand Down Expand Up @@ -118,4 +118,4 @@
}
]
}
]
]
2 changes: 1 addition & 1 deletion docs-shopify.dev/static/cli.doc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const data: LandingTemplateSchema = {
anchorLink: 'requirements',
title: 'Requirements',
sectionContent: `
- [Node.js](https://nodejs.org/en/download/): 20.10 or higher
- [Node.js](https://nodejs.org/en/download/): 22.12 or higher
- A Node.js package manager: [npm](https://www.npmjs.com/get-npm), [Yarn 1.x](https://classic.yarnpkg.com/lang/en/docs/install), or [pnpm](https://pnpm.io/installation).
- [Git](https://git-scm.com/downloads): 2.28.0 or higher
`,
Expand Down
2 changes: 1 addition & 1 deletion packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@
"@vitest/coverage-istanbul": "^3.1.4"
},
"engines": {
"node": ">=20.10.0"
"node": ">=22.12.0"
},
"os": [
"darwin",
Expand Down
2 changes: 1 addition & 1 deletion packages/cli-kit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@
"typedoc": "^0.28.17"
},
"engines": {
"node": ">=20.10.0"
"node": ">=22.12.0"
},
"os": [
"darwin",
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
"esbuild-plugin-copy": "^2.1.1"
},
"engines": {
"node": ">=20.10.0"
"node": ">=22.12.0"
},
"os": [
"darwin",
Expand Down
2 changes: 1 addition & 1 deletion packages/create-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
"@vitest/coverage-istanbul": "^3.1.4"
},
"engines": {
"node": ">=20.10.0"
"node": ">=22.12.0"
},
"os": [
"darwin",
Expand Down
2 changes: 1 addition & 1 deletion packages/e2e/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,6 @@
"tsx": "^4.21.0"
},
"engines": {
"node": ">=20.10.0"
"node": ">=22.12.0"
}
}
2 changes: 1 addition & 1 deletion packages/plugin-cloudflare/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"@vitest/coverage-istanbul": "^3.1.4"
},
"engines": {
"node": ">=20.10.0"
"node": ">=22.12.0"
},
"os": [
"darwin",
Expand Down
2 changes: 1 addition & 1 deletion packages/plugin-did-you-mean/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"@vitest/coverage-istanbul": "^3.1.4"
},
"engines": {
"node": ">=20.10.0"
"node": ">=22.12.0"
},
"os": [
"darwin",
Expand Down
2 changes: 1 addition & 1 deletion packages/store/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"@vitest/coverage-istanbul": "^3.1.4"
},
"engines": {
"node": ">=20.10.0"
"node": ">=22.12.0"
},
"os": [
"darwin",
Expand Down
2 changes: 1 addition & 1 deletion packages/theme/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"node-stream-zip": "^1.15.0"
},
"engines": {
"node": ">=20.10.0"
"node": ">=22.12.0"
},
"os": [
"darwin",
Expand Down
15 changes: 10 additions & 5 deletions packages/theme/src/cli/utilities/repl/repl.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {DevServerSession} from '../theme-environment/types.js'
import {describe, expect, test, vi} from 'vitest'
import {outputInfo} from '@shopify/cli-kit/node/output'

import {createInterface} from 'readline'
import {Interface} from 'readline'

vi.mock('@shopify/cli-kit/node/output')
vi.mock('./evaluator.js')
Expand All @@ -21,10 +21,15 @@ describe('handleInput', () => {
}
const themeId = '123'
const url = '/'
const rl = createInterface({
input: process.stdin,
output: process.stdout,
})
// Use a stub Interface instead of a real readline created from process.stdin.
// In Node 26, readline.createInterface on a non-TTY stdin that is already
// at EOF (as in Vitest workers) immediately closes the Interface, and
// calling `prompt()` on a closed Interface throws `Error: readline was
// closed` (it was a silent no-op in Node 22/24).
const rl = {
prompt: vi.fn(),
close: vi.fn(),
} as unknown as Interface

test('should call outputInfo if input has {{ delimiter', async () => {
// Given
Expand Down
Loading