> I personally struggle with embracing immutability. Maybe that's because I'm more of a performance guy. Even though I really want to make my code more maintainable, and thus I started reading a lot more about FP in recent times.
Honestly performance is a non-concern for me. I worked on a React app that ran on IE9 without any major performance issues and almost no code tuning. It's not even worth thinking about. However, avoiding immutability for the sake of maintainability and developer experience is something I would never give up.
To properly embrace immutable.js and not have performance issues, you need to fully embrace it and it's API and use it as the basis for all of the models in your app. We did a half-baked approach which uses immutables in the data store (so we can leverage quick prop checks) but also convert those into normal JS objects in the business domain. This makes our use of it noticeably slow.
Immer [0] is a much better alternative IMO.. you get all the benefits of immutability without having to use a radically different API than normal. And the performance is roughly the same as immutable. And using it with Redux is natural [1], removing the need to do a bunch of nested object copies
That seems to be a common attitude with front-end devs these days, to the detriment of web users. The performance impact of React, Angular, any other heavy frontend SPA framework is immense. Plus the extra weight required to get back to feature-parity with frameworkless (url rewriting, scroll reworking, etc). There are some complicated web apps like GMail where an SPA makes sense (although it's still super slow and heavy), but I've been on so many corporate teams where there's a big push to move a traditional site to React/Angualar/etc and it's never worth it. Development productivity is not worth sacrificing usability, and often developer productivity doesn't actually improve anyway. But I always seem to be fighting an uphill battle in this regard. I'm in the process of realigning my career away from full-stack dev nowadays because the state of frontend dev is so horrendous, I want no part of it anymore.
I honestly don't know what you're talking about. What performance impact? As I mentioned above I've never encountered a major performance problem in a React application, even on very old browsers.
Regarding your other concerns I suspect you and I work on very different types of projects.
Honestly performance is a non-concern for me. I worked on a React app that ran on IE9 without any major performance issues and almost no code tuning. It's not even worth thinking about. However, avoiding immutability for the sake of maintainability and developer experience is something I would never give up.