Skip to content

Commit f26ff7f

Browse files
committed
Add 'error-overlay' flag to theme dev command to toggle error overlay rendering
1 parent b2f0ae1 commit f26ff7f

File tree

8 files changed

+32
-3
lines changed

8 files changed

+32
-3
lines changed

packages/theme/src/cli/commands/theme/dev.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {Flags} from '@oclif/core'
99
import {globalFlags} from '@shopify/cli-kit/node/cli'
1010
import {Theme} from '@shopify/cli-kit/node/themes/types'
1111
import {ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session'
12-
import type {LiveReload} from '../../utilities/theme-environment/types.js'
12+
import type {ErrorOverlayMode, LiveReload} from '../../utilities/theme-environment/types.js'
1313

1414
export default class Dev extends ThemeCommand {
1515
static summary =
@@ -54,6 +54,15 @@ You can run this command only in a directory that matches the [default Shopify t
5454
options: ['hot-reload', 'full-page', 'off'],
5555
env: 'SHOPIFY_FLAG_LIVE_RELOAD',
5656
}),
57+
'error-overlay': Flags.string({
58+
description: `Controls the visibility of the error overlay when an theme asset upload fails:
59+
- silent Prevents the error overlay from appearing.
60+
- default Displays the error overlay.
61+
`,
62+
options: ['silent', 'default'],
63+
default: 'default',
64+
env: 'SHOPIFY_FLAG_ERROR_OVERLAY',
65+
}),
5766
poll: Flags.boolean({
5867
hidden: true,
5968
description: 'Force polling to detect file changes.',
@@ -147,6 +156,7 @@ You can run this command only in a directory that matches the [default Shopify t
147156
host: flags.host,
148157
port: flags.port,
149158
'live-reload': flags['live-reload'] as LiveReload,
159+
'error-overlay': flags['error-overlay'] as ErrorOverlayMode,
150160
force: flags.force,
151161
open: flags.open,
152162
'theme-editor-sync': flags['theme-editor-sync'],

packages/theme/src/cli/services/dev.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ describe('dev', () => {
5050
noDelete: false,
5151
ignore: [],
5252
only: [],
53+
'error-overlay': 'default',
5354
}
5455

5556
const session: DevServerSession = {
@@ -101,6 +102,7 @@ describe('dev', () => {
101102
ignore: [],
102103
noDelete: false,
103104
only: [],
105+
errorOverlay: 'default',
104106
},
105107
})
106108
})

packages/theme/src/cli/services/dev.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {hasRequiredThemeDirectories, mountThemeFileSystem} from '../utilities/theme-fs.js'
22
import {ensureDirectoryConfirmed} from '../utilities/theme-ui.js'
33
import {setupDevServer} from '../utilities/theme-environment/theme-environment.js'
4-
import {DevServerContext, LiveReload} from '../utilities/theme-environment/types.js'
4+
import {DevServerContext, ErrorOverlayMode, LiveReload} from '../utilities/theme-environment/types.js'
55
import {isStorefrontPasswordProtected} from '../utilities/theme-environment/storefront-session.js'
66
import {ensureValidPassword} from '../utilities/theme-environment/storefront-password-prompt.js'
77
import {emptyThemeExtFileSystem} from '../utilities/theme-fs-empty.js'
@@ -31,6 +31,7 @@ export interface DevOptions {
3131
force: boolean
3232
'theme-editor-sync': boolean
3333
'live-reload': LiveReload
34+
'error-overlay': ErrorOverlayMode
3435
noDelete: boolean
3536
ignore: string[]
3637
only: string[]
@@ -90,6 +91,7 @@ export async function dev(options: DevOptions) {
9091
noDelete: options.noDelete,
9192
ignore: options.ignore,
9293
only: options.only,
94+
errorOverlay: options['error-overlay'],
9395
},
9496
}
9597

packages/theme/src/cli/utilities/theme-environment/hot-reload/server.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ function createTestContext(options?: {files?: [string, string][]}) {
330330
liveReload: 'hot-reload',
331331
open: false,
332332
themeEditorSync: false,
333+
errorOverlay: 'default',
333334
},
334335
}
335336

packages/theme/src/cli/utilities/theme-environment/html.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export function getHtmlHandler(theme: Theme, ctx: DevServerContext) {
3232

3333
assertThemeId(response, html, String(theme.id))
3434

35-
if (ctx.localThemeFileSystem.uploadErrors.size > 0) {
35+
if (ctx.options.errorOverlay !== 'silent' && ctx.localThemeFileSystem.uploadErrors.size > 0) {
3636
html = getErrorPage({
3737
title: 'Failed to Upload Theme Files',
3838
header: 'Upload Errors',

packages/theme/src/cli/utilities/theme-environment/theme-environment.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ describe('setupDevServer', () => {
9696
liveReload: 'hot-reload',
9797
open: false,
9898
themeEditorSync: false,
99+
errorOverlay: 'default',
99100
},
100101
}
101102

packages/theme/src/cli/utilities/theme-environment/types.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ export interface DevServerSession extends AdminSession {
4949
*/
5050
export type LiveReload = 'hot-reload' | 'full-page' | 'off'
5151

52+
/**
53+
* Controls the visibility of the error overlay when an asset upload fails. Options: ['silent', 'default']
54+
* - silent: Prevents the error overlay from appearing.
55+
* - default: Displays the error overlay.
56+
*/
57+
export type ErrorOverlayMode = 'silent' | 'default'
58+
5259
/**
5360
* Maintains the state of local and remote assets in theme development server.
5461
*/
@@ -117,6 +124,11 @@ export interface DevServerContext {
117124
* Automatically open the theme preview in the default browser.
118125
*/
119126
open: boolean
127+
128+
/**
129+
* Controls the visibility of the error overlay when an asset upload fails.
130+
*/
131+
errorOverlay: ErrorOverlayMode
120132
}
121133
}
122134

packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ async function contextDevServerContext(
9090
port: port.toString(),
9191
liveReload: 'hot-reload',
9292
open: false,
93+
errorOverlay: 'default',
9394
},
9495
}
9596
}

0 commit comments

Comments
 (0)