diff --git a/packages/observable/src/observe.ts b/packages/observable/src/observe.ts index a240aa24..af5c8713 100644 --- a/packages/observable/src/observe.ts +++ b/packages/observable/src/observe.ts @@ -27,6 +27,11 @@ export function observeObj(obj: T, onSet?: (tx: ITransaction) => v return new Proxy(obj, { // TODO: fix `symbol` type get(target, p: string | number, receiver) { + // preserving Proxy invariant + const desc = Reflect.getOwnPropertyDescriptor(target, p); + if (desc && !desc.configurable && !desc.writable) { + return Reflect.get(target, p, receiver); + } const atom = createAtomIfNotExists(p); return calculate(atom, () => Reflect.get(target, p, receiver), observe);