From e8bb37bd896959e37cf14bb95d1487fe5ca77378 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 26 Nov 2021 20:22:02 +0000 Subject: [PATCH] PERF: Disable ember touchstart listener (#15112) Registering non-passive listeners for the touchstart event can affect scroll performance on mobile devices, and now shows a warning in Chrome. Our current version of Ember unconditionally registers all event listeners, even if they're unused. It also doesn't support passive event listeners. Once we get to Ember 4.0, it lazily registers event listeners, and supports passive listeners via the `{{on` helper. We already disable the ember `mousemove` and `touchmove` events for performance, so it makes sense to do the same for `touchstart`. We are not using `touchstart` anywhere in core, and I cannot find any official/unofficial plugins which use it. If a `touchstart` event is required, plugins/themes can always register their own listeners (preferably on a specific element, rather than the whole `document`) --- .../javascripts/discourse/app/initializers/ember-events.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/app/initializers/ember-events.js b/app/assets/javascripts/discourse/app/initializers/ember-events.js index 4696e812935..6a2e14d344f 100644 --- a/app/assets/javascripts/discourse/app/initializers/ember-events.js +++ b/app/assets/javascripts/discourse/app/initializers/ember-events.js @@ -5,14 +5,13 @@ export default { initialize() { // By default Ember listens to too many events. This tells it the only events - // we're interested in. (it removes mousemove and touchmove) + // we're interested in. (it removes mousemove, touchstart and touchmove) if (initializedOnce) { return; } Ember.EventDispatcher.reopen({ events: { - touchstart: "touchStart", touchend: "touchEnd", touchcancel: "touchCancel", keydown: "keyDown",