To me front end and server side are both easy when you're doing your own projects.
However, enterprise front end code that has tens of thousands of lines of code written over the years? What the jobs are really paying for is not so much knowing the tech, but making sure you can adapt to changing environments both in house and the whole Javascript ecosystem.
Large codebases are going to need to be maintained, modified, refactored and add additional features to - and that's not easy. There's a reason why so many companies have a lot of bugs on the front end. Multiple teams can all be working on the same front end projects, sometimes they'll modify other teams' code to make sure it'll fit in with their's.
Everything changes when you step into big feature heavy projects with teams. The scalability problem is very real whether you're on the front end, native or server side.
Again, as a software engineer no matter what part of the app you're working on, the most vital skill will be reading code, not writing it.
Ah, not to mention when they want to convert that entire codebase from one framework to the next to keep up to date. There are probably some companies right now that have a major React codebase that they want to switch over to Vue.
Maybe they want to implement React styled components and get rid of their CSS files, which is another major overhaul. React Hooks are a big new feature in alpha, so people are going to have to re-write all those render prop and higher order component patterns, then get rid of the connection to Redux. Then it's going to be something else or a new pattern somebody else finds out, and people will have to rewrite the codebase again to keep up. So they hire some new engineers to assist and they don’t like dynamically-types codebases, so now integrate typescript. But typescript isn’t as nice as Elm according to some opinions, so now time to port everything over again. Now some engineers start to get tired of this, so they get other jobs and you have new hires that need to be onboarded. Of course this needs to be done while writing new features and fixing bugs. These new features add new state to the application that now your existing components must watch. Sometimes they don’t play well with the current architecture either, so back to refactoring again. But now the next new shiny Javascript pattern emerges.
If you want to see the hassle first hand: Take whatever project you have right now, write it in React. Use Flux for state management. Focus on making it scalable and readable. Then write it with React styled components to get rid of the css files. Then remove Flux and use Redux instead. The remove Redux and use the Context API. Then rewrite the whole thing with Vue and Vuex with additional functionality/feature. Now imagine all of this, but with more people writing on top of your code while keeping in mind the company is looking at the next major framework and/or library to use instead. Are you keeping up with the new ECMAscript standards as well?
Meanwhile on the server side, that team is using Go, which depends very little on external libraries so their environment is much more stable and predictable. Must be nice.
Funny thing is, according to the new Javascript survey the front end end on average makes more salary wise than serverside Javascript now, primarily for the reasons mentioned.