Ok, analisei isso novamente hoje e consegui reproduzir o problema depois de mudar o teclado virtual do meu telefone para o Gboard. O Gboard às vezes dispara eventos keydown e keyup duas vezes para uma única pressionada de tecla e, se isso acontecer para a última tecla que você pressiona antes de selecionar um emoji da autocompletar, você terá um travamento.
Não tenho certeza do que causa o Gboard a disparar esses eventos duas vezes, mas parece depender do que você digitou e das suas configurações do Gboard.
Os eventos duplos causam um travamento devido à forma como nossa biblioteca de autocompletar é projetada. Assim, a biblioteca escuta os eventos keydown e keyup, e no keydown ela limpa as sugestões de autocompletar e no keyup ela oferece novas sugestões com base no novo termo de autocompletar.
No entanto, há uma pequena proteção/otimização para proteger a biblioteca de fazer trabalho duplicado quando o termo não mudou desde as sugestões anteriores, e é aqui que o problema ocorre. O primeiro par de eventos keydown e keyup limpa as sugestões antigas e oferece novas como esperado, mas o segundo par errôneo limpará as sugestões novamente no keydown, mas não oferecerá novas no keyup porque o termo de autocompletar não mudou.
A única “correção” menos improvisada que consigo pensar é remover a proteção/otimização para que a biblioteca sempre ofereça novas sugestões no keyup, mas não tenho certeza se isso é desejado ou se vale a pena.
Eu sei que queremos reescrever nossa biblioteca de autocompletar em algum momento (é um dos códigos mais antigos na base de código e desesperadamente precisa de uma reescrita), então talvez esse bug possa esperar até chegarmos à reescrita?