Frontend development is complex because people make it complex. In reality, the way we work, store data, retrieve data, and build things out of that data has been made up of the same pieces for decades, it's only the abstractions we use to manipulate that data into the structures we want that keeps changing.
It's possible to write things simply, and it's possible to over-think things, or over-build them. Think about ship-building. Cruise ships are MASSIVE floating cities, and when you need a floating city they are amazing wonderful feats of engineering. However if all you require is a canoe to cross a river - building a cruise ship would be overly complex and probably not meet your needs very well. People do the same mistake with websites and web applications all the time!
Make sure that you're developing solutions at the right 'scale' for the size of the problem you're solving, and it's always better to bet smaller and find out you're wrong and replace it with something a little bigger than to build it way too big and just get lost in the complexity. It's harder to take something too-big and refactor it to be slimmer than it is to extend something too-small to suit bigger needs.
I think it's a human tendency (self preservation?) to overbuild for our current needs if the resources are available, and when the resources are digital, people get REALLY greedy because the resources are free - but your time isn't free, and that's where too-big solutions quickly start to cost. It's tempting to build entire virtual cities and spend time finessing the sewer systems and electric grid, focus on the details of city planning to build the perfect society when really your needs only require you to build one house. To succeed you have to have a vigilant grasp on project scope.