From 5f5b9d89e81fcf4cc8b7451e75d4525e63e53e1b Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 27 Dec 2025 16:22:16 +0000 Subject: [PATCH 1/5] Update default host value from 'localhost' to '127.0.0.1' in CLI and documentation. This change ensures consistency across the application and improves clarity for users regarding the network interface settings. --- packages/app/src/cli/commands/app/dev.ts | 4 ++-- .../dev/processes/setup-dev-processes.test.ts | 12 ++++++------ packages/cli/README.md | 4 ++-- packages/cli/oclif.manifest.json | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/app/src/cli/commands/app/dev.ts b/packages/app/src/cli/commands/app/dev.ts index 72a46c3b07e..148cac7addb 100644 --- a/packages/app/src/cli/commands/app/dev.ts +++ b/packages/app/src/cli/commands/app/dev.ts @@ -88,9 +88,9 @@ If you're using the Ruby app template, then you need to complete the following s exclusive: ['tunnel-url'], }), host: Flags.string({ - description: 'Set which network interface the web server listens on. The default value is localhost.', + description: 'Set which network interface the web server listens on. The default value is 127.0.0.1.', env: 'SHOPIFY_FLAG_HOST', - default: 'localhost', + default: '127.0.0.1', }), 'localhost-port': Flags.integer({ description: 'Port to use for localhost.', diff --git a/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts b/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts index eb1d0dd8ca1..9331b816080 100644 --- a/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts +++ b/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts @@ -95,7 +95,7 @@ describe('setup-dev-processes', () => { commandConfig: new Config({root: ''}), skipDependenciesInstallation: false, tunnel: {mode: 'auto'}, - host: 'localhost', + host: '127.0.0.1', } const network: DevConfig['network'] = { proxyUrl: 'https://example.com/proxy', @@ -289,7 +289,7 @@ describe('setup-dev-processes', () => { cert: 'cert', key: 'key', }, - host: 'localhost', + host: '127.0.0.1', rules: { '/extensions': `http://localhost:${previewExtensionPort}`, '/ping': `http://localhost:${hmrPort}`, @@ -384,7 +384,7 @@ describe('setup-dev-processes', () => { commandConfig: new Config({root: ''}), skipDependenciesInstallation: false, tunnel: {mode: 'auto'}, - host: 'localhost', + host: '127.0.0.1', } const network: DevConfig['network'] = { proxyUrl: 'https://example.com/proxy', @@ -458,7 +458,7 @@ describe('setup-dev-processes', () => { commandConfig: new Config({root: ''}), skipDependenciesInstallation: false, tunnel: {mode: 'auto'}, - host: 'localhost', + host: '127.0.0.1', } const network: DevConfig['network'] = { proxyUrl: 'https://example.com/proxy', @@ -555,7 +555,7 @@ describe('setup-dev-processes', () => { commandConfig: new Config({root: ''}), skipDependenciesInstallation: false, tunnel: {mode: 'auto'}, - host: 'localhost', + host: '127.0.0.1', } const network: DevConfig['network'] = { proxyUrl: 'https://example.com/proxy', @@ -642,7 +642,7 @@ describe('setup-dev-processes', () => { commandConfig: new Config({root: ''}), skipDependenciesInstallation: false, tunnel: {mode: 'auto'}, - host: 'localhost', + host: '127.0.0.1', } const network: DevConfig['network'] = { proxyUrl: 'https://example.com/proxy', diff --git a/packages/cli/README.md b/packages/cli/README.md index b1c62d46e46..79cfada3540 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -224,8 +224,8 @@ FLAGS --checkout-cart-url= Resource URL for checkout UI extension. Format: "/cart/{productVariantID}:{productQuantity}" --client-id= The Client ID of your app. - --host= [default: localhost] Set which network interface the web server listens on. - The default value is localhost. + --host= [default: 127.0.0.1] Set which network interface the web server listens on. + The default value is 127.0.0.1. --localhost-port= Port to use for localhost. --no-color Disable color output. --no-update Skips the Partners Dashboard URL update step. diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index 971f4be6ace..cafbd0884b4 100644 --- a/packages/cli/oclif.manifest.json +++ b/packages/cli/oclif.manifest.json @@ -460,8 +460,8 @@ "type": "option" }, "host": { - "default": "localhost", - "description": "Set which network interface the web server listens on. The default value is localhost.", + "default": "127.0.0.1", + "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", "env": "SHOPIFY_FLAG_HOST", "hasDynamicHelp": false, "multiple": false, From 68d1a0af393f6eefdc6fbad903b31853ac89cec1 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 27 Dec 2025 16:45:01 +0000 Subject: [PATCH 2/5] Add --host flag to shopify app dev command for Docker container development --- .changeset/orange-boxes-unite.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/orange-boxes-unite.md diff --git a/.changeset/orange-boxes-unite.md b/.changeset/orange-boxes-unite.md new file mode 100644 index 00000000000..041a2e84d67 --- /dev/null +++ b/.changeset/orange-boxes-unite.md @@ -0,0 +1,5 @@ +--- +'@shopify/app': patch +--- + +Add --host flag to shopify app dev command for Docker container development From 449b96a6cdd985186e480ae26a89d5ee5856cae5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 27 Dec 2025 16:52:55 +0000 Subject: [PATCH 3/5] Refactor setupDevProcesses to improve readability by formatting parameters in setPortsAndAddProxyProcess call --- .../src/cli/services/dev/processes/setup-dev-processes.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts b/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts index 6c105b94975..c4ca4e44562 100644 --- a/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts +++ b/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts @@ -202,7 +202,12 @@ export async function setupDevProcesses({ ].filter(stripUndefineds) // Add http server proxy & configure ports, for processes that need it - const processesWithProxy = await setPortsAndAddProxyProcess(processes, network.proxyPort, network.reverseProxyCert, commandOptions) + const processesWithProxy = await setPortsAndAddProxyProcess( + processes, + network.proxyPort, + network.reverseProxyCert, + commandOptions, + ) return { processes: processesWithProxy, From 7a399d6503cf732dceb5d46c56020e45f36913e7 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 27 Dec 2025 16:53:08 +0000 Subject: [PATCH 4/5] Add '--host ' option to appdev interface for network configuration --- docs-shopify.dev/commands/interfaces/app-dev.interface.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs-shopify.dev/commands/interfaces/app-dev.interface.ts b/docs-shopify.dev/commands/interfaces/app-dev.interface.ts index c06ef81e1c0..a0f665fc38e 100644 --- a/docs-shopify.dev/commands/interfaces/app-dev.interface.ts +++ b/docs-shopify.dev/commands/interfaces/app-dev.interface.ts @@ -18,6 +18,12 @@ export interface appdev { */ '-c, --config '?: string + /** + * Set which network interface the web server listens on. The default value is 127.0.0.1. + * @environment SHOPIFY_FLAG_HOST + */ + '--host '?: string + /** * Port to use for localhost. * @environment SHOPIFY_FLAG_LOCALHOST_PORT From 1ee8cbdfb64e70698d554cde476f495df2e11d37 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 27 Dec 2025 16:54:27 +0000 Subject: [PATCH 5/5] Refactor test setup for proxy server process in setup-dev-processes test to enhance readability and maintain consistency in configuration formatting. --- .../dev/processes/setup-dev-processes.test.ts | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts b/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts index 9331b816080..35b4197e54a 100644 --- a/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts +++ b/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts @@ -301,7 +301,7 @@ describe('setup-dev-processes', () => { }) test('proxy server process includes host parameter when configured for Docker', async () => { - // Given + // Given const developerPlatformClient: DeveloperPlatformClient = testDeveloperPlatformClient({supportsDevSessions: false}) const storeFqdn = 'store.myshopify.io' const storeId = '123456789' @@ -331,23 +331,25 @@ describe('setup-dev-processes', () => { certPath: 'path', }, } - + // Create simple app without theme extensions to avoid the theme API calls const localApp = testAppWithConfig({ config: {}, app: testAppLinked({ allExtensions: [await testUIExtension({type: 'web_pixel_extension'})], - webs: [{ - directory: 'web', - configuration: { - roles: [WebType.Backend, WebType.Frontend], - commands: {dev: 'npm exec remix dev'}, - webhooks_path: '/webhooks', - hmr_server: { - http_paths: ['/ping'], + webs: [ + { + directory: 'web', + configuration: { + roles: [WebType.Backend, WebType.Frontend], + commands: {dev: 'npm exec remix dev'}, + webhooks_path: '/webhooks', + hmr_server: { + http_paths: ['/ping'], + }, }, }, - }], + ], }), }) vi.spyOn(loader, 'reloadApp').mockResolvedValue(localApp)