But that's nonsense; the answer is bloat. You can run complex graphical OSs in a few 100kb or, god forbid, mbs, that boot in <1s but have everything. It's just a lot of work and they lack customisability modern people (seem to) want. QNX, BEOS, but, to me more impressive, something like SymbOS shows you can build interesting and usable things that work and have tons of features people want. It takes more time and you cannot easily customise them and there is not something like compatibility.
Your phone OS is just bloatware and you and everyone else knows it, no need to make it seem like it couldn't be different rightnow.
Well sure, I don't think anyone is denying that. And there have been absurd documented cases like babel or some other core JS library including a full photo of Guy Fieri for no apparent reason, increasing everyone's node modules by a few MB. Unlikely to be a lone case of these sort of shenanigans either.
But sometimes bloat is also good in a way? Micropython comes to mind. It may be the most laughably absurd way to destroy one's performance on a microcontroller but the abstraction it offers is really nice to work with. The problem is, I suppose, that we're in a recursive spiral of abstraction and each additional layer has to take into account all possible cases, drivers and whatnot for the next one. Hence the bloat. But there is definitely something hilarious about running an OS that runs an OS VM, that runs a container, that then runs another VM to run an interpreted language.
One day we'll be able to chatgpt ideas directly into machine code and get both speed and efficiency, but until then I don't see how one can avoid long dev times without working at a higher level.
Your phone OS is just bloatware and you and everyone else knows it, no need to make it seem like it couldn't be different right now.