It is brittle because XAML itself is a compiled language without the ability to step through or debug well, which means runtime errors in the object tree usually causes the entire app to crash with very abstract error messages.
it is complex because the language is supposed to be an object tree building mechanism and thus needs to be quite generic.
It is verbose because of the underlying abstracted data model. e.g dependency properties etc.
Compared to HTML, where the 'evolutionary' pressure to create a workable compromise is much higher.
I used to think XAML could be better if architected well, but the missing ecosystem and usage around it made it so, that HTML was and still is massively more productive.