diff --git a/.changeset/early-hounds-float.md b/.changeset/early-hounds-float.md new file mode 100644 index 0000000000..0a708c59e4 --- /dev/null +++ b/.changeset/early-hounds-float.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure onMount correctly fires when new expressions are used diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js index 6b393ae9b9..bcb2400932 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js @@ -11,5 +11,7 @@ export function NewExpression(node, context) { w.perf_avoid_inline_class(node); } + context.state.analysis.needs_context = true; + context.next(); } diff --git a/packages/svelte/tests/runtime-legacy/samples/onmount-external/_config.js b/packages/svelte/tests/runtime-legacy/samples/onmount-external/_config.js new file mode 100644 index 0000000000..6cf976bd48 --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/onmount-external/_config.js @@ -0,0 +1,7 @@ +import { test } from '../../test'; + +export default test({ + async test({ assert, logs }) { + assert.deepEqual(logs, ['mounted']); + } +}); diff --git a/packages/svelte/tests/runtime-legacy/samples/onmount-external/main.svelte b/packages/svelte/tests/runtime-legacy/samples/onmount-external/main.svelte new file mode 100644 index 0000000000..e2e7dad8dc --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/onmount-external/main.svelte @@ -0,0 +1,13 @@ + + +