Skip to content

immer v11 freezes non-draftable objects #1192

Description

@Methuselah96

🐛 Bug Report

In immer v10, non-draftable objects were not frozen, now in immer v10 they are

Link to repro

The following code throws an error immer v11, but not v10:

import { produce } from 'immer';

class MutableClass {
  value = 5;
}

const myObject = { someValue: 5, mutableClass: new MutableClass() };
const modifiedObject = produce(myObject, draft => {
  draft.someValue = 6;
});

modifiedObject.mutableClass.value = 6;

To Reproduce

Run the code above

Observed behavior

The code throws an error because modifiedObject.mutableClass has been frozen and is being mutated.

Expected behavior

immer doesn't freeze modifiedObject.mutableClass because it's not a draftable object.

Environment

We only accept bug reports against the latest Immer version.

  • Immer version: 11.0.0
  • I filed this report against the latest version of Immer
  • Occurs with setUseProxies(true)
  • Occurs with setUseProxies(false) (ES5 only)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions