diff --git a/packages/wxt/src/core/utils/__tests__/manifest.test.ts b/packages/wxt/src/core/utils/__tests__/manifest.test.ts index a629f26d..42199c82 100644 --- a/packages/wxt/src/core/utils/__tests__/manifest.test.ts +++ b/packages/wxt/src/core/utils/__tests__/manifest.test.ts @@ -445,6 +445,28 @@ describe('Manifest Utils', () => { expect(actual.options_ui).toEqual(expected); }); + + it('should exclude open_in_tab for safari', async () => { + setFakeWxt({ + config: { + manifestVersion: 3, + browser: 'safari', + outDir, + }, + }); + const buildOutput = fakeBuildOutput(); + + const { manifest: actual } = await generateManifest( + [options], + buildOutput, + ); + + expect(actual.options_ui).toEqual({ + chrome_style: true, + page: 'options.html', + }); + expect(actual.options_ui?.open_in_tab).toBeUndefined(); + }); }); describe('background', () => { diff --git a/packages/wxt/src/core/utils/manifest.ts b/packages/wxt/src/core/utils/manifest.ts index fef39fea..6bcfaa15 100644 --- a/packages/wxt/src/core/utils/manifest.ts +++ b/packages/wxt/src/core/utils/manifest.ts @@ -333,7 +333,9 @@ function addEntrypoints( if (options) { const page = getEntrypointBundlePath(options, wxt.config.outDir, '.html'); manifest.options_ui = { - open_in_tab: options.options.openInTab ?? false, + ...(wxt.config.browser !== 'safari' && { + open_in_tab: options.options.openInTab ?? false, + }), // @ts-expect-error: Not typed by @wxt-dev/browser, but supported by Firefox browser_style: wxt.config.browser === 'firefox'