In my case, the main pain points were third-party packages, more than React 16 itself. For react you only had prop-types and createClass to change everywhere. The migration of react-router in particular was awful, the new react-router is so different from the old one they should have created another repository for the new version.
Completely agree. The new react router is a massive step back in the same code base. Rewriting apps in the new version is a massive pain.
We had a lot of pain doing this rewrite ourselves, but I must say it was worth it in the end.
Unfortunately, this is major version 4, so who is to say that the repo maintainers don't find an even better way to do it in six months, prompting a version 5 and so on...