> If "time to ship" is actually important, than why do most companies go to the work of making three separate codebases for their applications - Android, iOS, and web?
Because if you develop for the web and handle the REST/other APIs well, it can be trivial to work on the mobile frontends that connect the interfaces (whether on Android or iOS). It becomes more a matter of plugging the right pipes.
Whereas the backend for desktop apps across systems may be completely different; you may create more work to handle the idiosyncracies of different OSes.
Because if you develop for the web and handle the REST/other APIs well, it can be trivial to work on the mobile frontends that connect the interfaces (whether on Android or iOS). It becomes more a matter of plugging the right pipes.
Whereas the backend for desktop apps across systems may be completely different; you may create more work to handle the idiosyncracies of different OSes.