There are good practices like routing and component composition that are not well known. At the same time there are few hard constraints that make it easy for people to make many small mistakes that are not noticeable for a long time. this makes frontend kinda a free for all. we've done a lot of UI framework building but it's kinda like draining an ocean with a bucket, no matter how much you scoop, there is always more to do.