Isn’t this supposed to be a job for the window manager?
For example, my virtualbox install has some mouse pointer bugs on wayland, and I can’t run waydroid on X. These things are weird to me. Shouldn’t window managers abstract all that for the software we run?
As an addition to other responses, think that most apps (specially smaller ones) are developed using some framework or set of libraries that might or might not support those protocols.
So let’s pretend that I have an app buit using Electron and that framework does not support Wayland. There’s nothing I can do on the app side until Electron supports Wayland in this fake example.
So it actually takes time for the libraries to support the new protocol and then app developers to update their apps to support it aswell.
That’s why you see that the Wayland migration is incremental and not all at once.