I've moved this site from the Perch CMS to Next.js. This is partly because of Perch's uncertain future and partly because I wanted something more modern to work with. I quickly tired of dealing with Perch's PHP stack (which I don't know well at all, since I don't use it professionally), so I've been looking for node.js alternatives on & off for years.
Next.js was intriguing first of all because it's React based, but also because it offers a really nice range of options from static to dynamic pages. It seemed worth trying out, and I really liked it after some early experiments.
Right now I've started with a fully static Next.js site. I'll see how this goes. I'm considering migrating to a headless CMS for content management if I get tired of the static generation loop again; directus.io is my leading candidate (except for a bug that broke its SQLite support for now).
One strong aspect of our React/Redux-based architecture has been the separation of concerns. When some code turns ugly, the damage is often contained in one small area.