The problem is that in the majority of cases you need a backend anyway but now instead of serving HTML from it directly you need yet another layer and a different language.
Sometimes it's justified, sometimes it's completely overkill and you waste a lot of time. On a project I've been on I've seen days being wasted to build a basic account management form (think username, password, personal details, etc) in React for no reason, despite the same being achievable with our backend (Django) in a couple hours.