Ok, he vuelto a revisar esto hoy y logré reproducirlo después de cambiar el teclado virtual de mi teléfono a Gboard. Gboard a veces dispara los eventos keydown y keyup dos veces por una sola pulsación de tecla y si eso sucede con la última tecla que presionas antes de seleccionar un emoji del autocompletado, obtendrás un error.
No estoy seguro de qué causa que Gboard dispare estos eventos dos veces, pero parece depender de lo que hayas escrito y de tu configuración de Gboard.
Los eventos dobles causan un error debido a la forma en que está diseñada nuestra biblioteca de autocompletado. La biblioteca escucha los eventos keydown y keyup, y en keydown borra las sugerencias de autocompletado y en keyup ofrece nuevas sugerencias basadas en el nuevo término de autocompletado.
Sin embargo, hay una pequeña protección/optimización para evitar que la biblioteca realice trabajo duplicado cuando el término no ha cambiado desde las sugerencias anteriores, y aquí es donde ocurre el problema. El primer par de eventos keydown y keyup borra las sugerencias antiguas y ofrece nuevas como se esperaba, pero el segundo par erróneo borrará las sugerencias nuevamente en keydown pero no ofrecerá nuevas en keyup porque el término de autocompletado no ha cambiado.
La única “solución” menos improvisada que se me ocurre es eliminar la protección/optimización para que la biblioteca siempre ofrezca nuevas sugerencias en keyup, pero no estoy seguro de si esto es deseable o vale la pena.
Sé que queremos reescribir nuestra biblioteca de autocompletado en algún momento (es uno de los códigos más antiguos de la base de código y necesita desesperadamente una reescritura), así que tal vez este error podría esperar hasta que lleguemos a la reescritura.