Using any of the dead keys or backspace is very broken on Android, no matter the browser. The dead keys tends to get wedged in some way so every subsequent key gets modified. And backspace only works sometimes.
This only happens with the physical keyboard and only when the focus is on the canvas, not the textarea helper we use to open a virtual keyboard. There seems to be some internal buffer at play here. The number of missing backspace events is the same as the number of character keys pressed before it. E.g. typing "abc" then three presses of backspace will go missing, but the forth works. This seems to happen at a low level as attaching an event listener in capture mode to the document doesn't see any of those missing events either. So it smells like a browser bug. This probably explains the weird dead key behaviour as well. The lack of a real buffer wedges the dead key state, so every key after that gets modified.
Reported to Firefox: https://github.com/mozilla-mobile/fenix/issues/6420 Tried to report it to Chrome, but their issue tracker is currently broken: https://bugs.chromium.org/p/chromium/issues/detail?id=1021003 Not doing anything more right now.
As a workaround the user can press the control bar button to open the keyboard. This moves the focus to the input field instead of the canvas which works better.
It turns out that the chosen virtual keyboard also handles the physical keyboard. And this works just fine with GBoard. It's only SwiftKey that has an issue. Unfortunately SwiftKey does not have a public issue tracker. I've sent them a report via their support form at least. Closing this as we consider this a SwiftKey bug and we cannot track it.