+ I listen for events specified in the eventListeners object
+
diff --git a/packages/@lwc/integration-karma/test-hydration/directives/lwc-on/x/main/main.js b/packages/@lwc/integration-karma/test-hydration/directives/lwc-on/x/main/main.js
new file mode 100644
index 0000000000..4464d2fd7b
--- /dev/null
+++ b/packages/@lwc/integration-karma/test-hydration/directives/lwc-on/x/main/main.js
@@ -0,0 +1,25 @@
+import { LightningElement, api } from 'lwc';
+
+export default class Main extends LightningElement {
+ _clickedHandlerCounter = 0;
+ _fooHandlerCounter = 0;
+
+ @api
+ get timesClickedHandlerIsExecuted() {
+ return this._clickedHandlerCounter;
+ }
+
+ @api
+ get timesFooHandlerIsExecuted() {
+ return this._fooHandlerCounter;
+ }
+
+ eventListeners = {
+ click: function () {
+ this._clickedHandlerCounter++;
+ },
+ foo: function () {
+ this._fooHandlerCounter++;
+ },
+ };
+}
diff --git a/packages/@lwc/ssr-compiler/src/__tests__/fixtures.spec.ts b/packages/@lwc/ssr-compiler/src/__tests__/fixtures.spec.ts
index 82be0af3c0..8c39d7ba7c 100644
--- a/packages/@lwc/ssr-compiler/src/__tests__/fixtures.spec.ts
+++ b/packages/@lwc/ssr-compiler/src/__tests__/fixtures.spec.ts
@@ -65,6 +65,7 @@ async function compileFixture({ entry, dirname }: { entry: string; dirname: stri
targetSSR: true,
ssrMode: SSR_MODE,
enableDynamicComponents: true,
+ enableLwcOn: true,
// TODO [#3331]: remove usage of lwc:dynamic in 246
experimentalDynamicDirective: true,
modules: [{ dir: modulesDir }],
diff --git a/packages/@lwc/ssr-compiler/src/compile-template/index.ts b/packages/@lwc/ssr-compiler/src/compile-template/index.ts
index 74cc04092a..47b827528d 100644
--- a/packages/@lwc/ssr-compiler/src/compile-template/index.ts
+++ b/packages/@lwc/ssr-compiler/src/compile-template/index.ts
@@ -89,6 +89,7 @@ export default function compileTemplate(
experimentalComputedMemberExpression: options.experimentalComputedMemberExpression,
experimentalComplexExpressions: options.experimentalComplexExpressions,
enableDynamicComponents: options.enableDynamicComponents,
+ enableLwcOn: options.enableLwcOn,
preserveHtmlComments: options.preserveHtmlComments,
enableStaticContentOptimization: options.enableStaticContentOptimization,
instrumentation: options.instrumentation,