I don't know the details of immutable-js but generally an immutable 'deep copy' shouldn't be different than a 'copy' that you'd normally get by e.g. passing the thing by value. Two symbols point to the same root that defines the data structure, the symbols are value-equal, but not id-equal (at the symbol comparison level). The usual concerns about deep copying don't really apply, since if you try to mutate either of them, neither of them will be affected, but a new piece of data will be created that has an id-different path to the root of the structure but everything unmodified out of that path is still id-equal.