# Новая панель мобильного меню работает медленно и с задержками на старых устройствах

**URL:** https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204
**Category:** UX
**Tags:** mobile, completed
**Created:** [24.Октябрь.2023 01:37:46 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204 "2023-10-24T01:37:46Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [24.Октябрь.2023 01:37:46 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204/1 "2023-10-24T01:37:46Z")

</div>

Привет 👋

После обновления [UX: improve touch, swipe, panning performance on mobile menus by featheredtoast · Pull Request #23775 · discourse/discourse · GitHub](https://github.com/discourse/discourse/pull/23775) панель меню (пользовательская и боковая) стала двигаться гораздо медленнее, чем раньше, на старых мобильных устройствах под управлением Android. Возможно, это связано с тем, что производительности процессора этих устройств недостаточно для плавной анимации.

На моём устройстве Huawei P20 Pro.

Однако я также протестировал это на iPhone X, где всё работает очень плавно и быстро, поэтому, думаю, проблема именно в процессоре. Есть ли шанс улучшить производительность на старых устройствах?

Спасибо 🙂

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [24.Октябрь.2023 05:34:28 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204/2 "2023-10-24T05:34:28Z")

</div>

Спасибо, @Don, мы посмотрим!

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [24.Октябрь.2023 06:34:34 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204/4 "2023-10-24T06:34:34Z")

</div>

Привет, Дон, спасибо за обратную связь!

Я скоро протестирую это; я подозреваю, что на старых устройствах, возможно, всё ещё нужна (немного «костыльная») оптимизация производительности, ограничивающая количество элементов в меню до 20, чтобы интерфейс ощущался плавным. Разберусь с этим в ближайшее время.

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [25.Октябрь.2023 18:38:19 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204/7 "2023-10-25T18:38:19Z")

</div>

@Don — просто уточняю, чтобы понять, что именно тестировать: вы замечаете это при открытии/закрытии меню нажатием (на меню и вне меню) или свайпом (удержание и жест свайпа)?

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [26.Октябрь.2023 02:52:25 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204/8 "2023-10-26T02:52:25Z")

</div>

Меню кажется плавным при первом открытии. Думаю, это потому, что элементы панели еще не загружены. При первом открытии сверху появляется спиннер-загрузчик. Мне кажется, это хорошее поведение, и, возможно, стоит всегда использовать спиннер-загрузчик при открытии. 🤔

Последующие открытия происходят без анимации. Закрытие работает нестабильно (иногда плавно, иногда с задержками).

~~Когда меню открыто и я кликаю вне его, кнопки меню обычно подтормаживают. Но они сначала выезжают 🤔 Возможно, это происходит потому, что вся панель меню использует `reverse-row`, и при закрытии класс удаляется до того, как панель полностью выедет, после чего возвращается к `row`?~~

Редактирование: Это не кнопки панели меню (вкладки), а просто иконки перед уведомлениями. Но задержки обычно возникают именно на этой строке.

При закрытии меню жестом оно кажется плавным.

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [30.Октябрь.2023 04:20:03 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204/9 "2023-10-30T04:20:03Z")

</div>

Обновление: Похоже, в браузере Firefox перемещение меню происходит плавно. Я также протестировал это в Edge, где результат такой же, как в Chrome.

Firefox

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [30.Октябрь.2023 21:14:02 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204/10 "2023-10-30T21:14:02Z")

</div>

Судя по всему, «заикание» здесь вызвано повторным рендерингом заголовков, а не самими анимациями.

Одна вещь, которую я добавил и которая может создавать ощущение новой медлительности, — это анимация выезда (эта анимация была случайно удалена при рефакторинге нашего нового заголовка).

Небольшая задержка (setTimeout) между анимацией и работой, которую выполняют виджеты меню, кажется, значительно улучшает плавность. То есть сама анимация не медленная; я подозреваю, что проблема в работе, связанной с повторным рендерингом заголовков сайта при открытии/закрытии.

Меня на самом деле интересует, не связано ли это с тем, что в Firefox промис окончания анимации срабатывает только после того, как анимация полностью _отрисована_ (я предполагал, что это так при написании исходного изменения). Это может объяснить, почему всё выглядит плавнее, чем в Chrome, тогда как в Chrome пересчёт может начаться после завершения вычислений анимации, но до её отрисовки.

* * *

EDIT: Я добавляю паузу с помощью нашего runloop, чтобы создать необходимое пространство перед запуском анимации. Это должно сделать анимацию гораздо более плавной: [UX: call discourseLater on menu animations by featheredtoast · Pull Request #24168 · discourse/discourse · GitHub](https://github.com/discourse/discourse/pull/24168)

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [31.Октябрь.2023 03:53:16 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204/11 "2023-10-31T03:53:16Z")

</div>

Ура, огромное спасибо! Отличное замечание! 😍

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [31.Октябрь.2023 03:54:47 UTC](https://meta.discourse.org/t/new-mobile-menu-panel-moving-slow-and-laggy-on-older-devices/283204/12 "2023-10-31T03:54:47Z")

</div>


