Novo painel de menu móvel lento e travando em dispositivos mais antigos

Olá :waving_hand:

Desde a atualização UX: improve touch, swipe, panning performance on mobile menus by featheredtoast · Pull Request #23775 · discourse/discourse · GitHub, o painel do menu (usuário e barra lateral) está se movendo muito mais devagar do que antes em dispositivos Android móveis mais antigos. Pode ser porque o desempenho da CPU desses dispositivos não é suficiente para torná-lo suave.

No meu dispositivo Huawei P20 Pro.

No entanto, também testei no iPhone X, que é super suave e rápido, então acho que a CPU será o problema. Há alguma chance de melhorar o desempenho em dispositivos mais antigos?

Obrigado :slightly_smiling_face:

6 curtidas

Obrigado @Don, daremos uma olhada!

2 curtidas

Ei Don, obrigado pelo feedback!

Testarei isso em breve; minha suspeita é que dispositivos mais antigos ainda possam precisar da otimização de desempenho (meio improvisada) que reduz o número de itens no menu para 20 para que funcione sem problemas - Investigarei isso em breve.

3 curtidas

@Don - apenas investigando mais para saber o que testar, você está notando isso ao abrir/fechar menus com um toque (dentro e fora do menu), ou deslizando (segurando e gesticulando o deslize)?

2 curtidas

O menu parece suave quando o abro pela primeira vez. Acho que porque os elementos do painel não foram carregados. Quando abro pela primeira vez, o carregador giratório aparece no topo. Acho que este é um bom comportamento e talvez seja legal usar sempre o carregador giratório nas aberturas. :thinking:

As aberturas depois disso são sem animações. O fechamento é aleatório (às vezes suave, às vezes com atraso)

Quando abria e clicava fora, geralmente os botões do menu do painel atrasavam. Mas eles deslizam para fora primeiro :thinking: Talvez isso aconteça porque todo o painel do menu está em reverse-row e quando fecha, a classe é removida antes que deslize completamente para fora e volte para row?

Editar: Não são os botões do painel do menu (aba) que atrasam, são apenas os ícones antes das notificações. Mas geralmente há um atraso nessa linha.

Quando uso um gesto para fechar o menu, parece suave.

2 curtidas

Atualização: Parece que no navegador Firefox o movimento do menu é suave. Testei também no Edge, onde é igual ao Chrome.

Firefox

Pelo que pude observar, a “lentidão” aqui se deve à re-renderização dos cabeçalhos, e não às animações em si.

Uma coisa que introduzi e que pode dar a percepção de nova lentidão é a animação de deslizar para fora (essa animação foi inadvertidamente removida quando refatoramos nosso novo cabeçalho).

Dar algum tempo de setTimeout entre a animação e o trabalho de re-renderização que os menus de widget estão fazendo parece tornar as coisas muito mais fluidas, então não é a animação em si que é lenta, então minha suspeita é que seja o trabalho em torno da re-renderização dos cabeçalhos do site ao abrir/fechar.

Na verdade, estou me perguntando se o tratamento do Firefox para a promessa de fim de animação está disparando depois que a animação é realmente pintada (presumi que fosse esse o caso ao codificar a alteração original), o que pode explicar por que parece mais suave do que o Chrome, enquanto o Chrome permite que o trabalho de recálculo comece após a conclusão dos cálculos da animação, mas antes que o fim da animação seja pintado.


EDIT: Estou adicionando uma pausa usando nosso runloop para adicionar o espaço necessário antes de animar, isso deve fazer com que a animação pareça muito mais suave: UX: call discourseLater on menu animations by featheredtoast · Pull Request #24168 · discourse/discourse · GitHub

3 curtidas

Muito obrigado! Boa observação! :heart_eyes:

2 curtidas