diff --git a/.changeset/famous-points-punch.md b/.changeset/famous-points-punch.md new file mode 100644 index 00000000000..c4912f2c448 --- /dev/null +++ b/.changeset/famous-points-punch.md @@ -0,0 +1,5 @@ +--- +"@remix-run/dev": patch +--- + +Support `nonce` prop on `LiveReload` component in Vite dev diff --git a/integration/vite-dev-test.ts b/integration/vite-dev-test.ts index ebed5d87669..0edf0593afa 100644 --- a/integration/vite-dev-test.ts +++ b/integration/vite-dev-test.ts @@ -56,7 +56,7 @@ test.describe("Vite dev", () => { - + ); @@ -268,6 +268,9 @@ test.describe("Vite dev", () => { await expect(hmrStatus).toHaveText("HMR updated: yes"); await expect(input).toHaveValue("stateful"); + // check LiveReload script has nonce + await expect(page.locator(`script[nonce="1234"]`)).toBeAttached(); + // Ensure no errors after HMR expect(pageErrors).toEqual([]); }); diff --git a/packages/remix-dev/vite/plugin.ts b/packages/remix-dev/vite/plugin.ts index ec93e6428cd..f60161f5153 100644 --- a/packages/remix-dev/vite/plugin.ts +++ b/packages/remix-dev/vite/plugin.ts @@ -956,7 +956,8 @@ export const remixVitePlugin: RemixVitePlugin = (options = {}) => { `export const LiveReload = ${ viteCommand !== "serve" } ? () => null : `, - '() => createElement("script", {', + '({ nonce = undefined }) => createElement("script", {', + " nonce,", " dangerouslySetInnerHTML: { ", " __html: `window.__remixLiveReloadEnabled = true`", " }",