To better understand the tradeoffs and which library to decide on for your specific use case, please have a look at the read and write operations benchmarks. This should serve as a general idea. Please run your own tests before making the final call.
I have used the benchmarks created by ImmutableAssign authors. The code automatically compares numerous libraries and approaches to solve immutability in JavaScript.
First, let's look at pure JavaScript with just simple mutable structures. We do not care about any benefits, just use them as is for a benchmark:
Nearly-new MacBook Pro 15'' (2018) with no background tasks | MacBook Pro 15'' (2016) with a few background tasks running |
Mutable objects and arrays ... |