Immutability is used in JavaScript and especially React because it's a core computer science concept with real-world benefits, not because it's "sexy" or a fad.<p>Arguably the largest benefit in React-land is being able to pass around objects and do equality checks via reference. If I mutate an object and pass it as a prop down the tree, the consumer components won't know that it's been updated because React does shallow comparison by default (===). Meaning that wherever you have props in your code where you mutate an object, you have to write a function to determine equality, which leads to your code becoming bloated and unreadable, not to mention the massive loss in performance.<p>Mutability also harms our ability to test for expected outputs from given inputs. Mutations can cause side-effects that cause other mutations which can be difficult to see or predict. This means code cannot be accurately tested, and it becomes much more difficult to find bugs and near impossible to get a macro-level view of your application logic. In this sense, mutability can make your application /more/ complex and difficult to maintain and extend.<p>Edit: Please read the other responses in that SO thread. They contain correct information while most of yours is misinformation/speculation with an authoritative tone.