Does this use the text input stack provided by the platforms? Or is it parsing raw keyboard events?

I only ask because if it doesn't use platform text input, that is a non-starter for mobile.

It also would mean having to reimplement platform behavior for text input, like being able to hold Shift on macOS while moving the cursor to change text selection.

This is an important point for me as well. Not sure on other platforms, but on web, it does support composition.

Yes! This is because web browsers use the platform text input stack

Browsers are actually a great example of my favorite approach to cross-platform UI, because they sprinkle platform-native widgets throughout the canvas that they render, controlled by a platform-agnostic programming language. Which reminds me that people were trying to use webrender[1] to build native apps in Rust.

[1] https://github.com/servo/webrender