# Contributor handoff — mobxjs/mobx

> Canonical page: https://codevetter.com/unpack/mobx/agent-handoff

# Contributor handoff — mobxjs/mobx

Scanned commit 60be47cab0926d12f22449ec6c809fb5ec6601c4 (2026-09-30). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Begin with the owning package and trace its public API into state ownership before editing. Tests and CI were inspected, not executed, and this report is a bounded inventory rather than exhaustive coverage. Future execution should follow the task's authorization and account for build scripts, codemod tests, and documentation generation that write files.
- Read the root and owning-package manifests before selecting commands: workspace aliases are provided, CONTRIBUTING specifies Node 24, and small bug fixes are expected to include a regression test. — [package.json#L20-L39](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/package.json#L20-L39) [CONTRIBUTING.md#L30-L43](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/CONTRIBUTING.md#L30-L43)
- For core edits, first read mobx.ts, internal.ts, and the relevant api/core/types implementation; preserve the documented export-order sensitivity rather than treating internal.ts as an interchangeable barrel. — [packages/mobx/src/mobx.ts#L9-L15](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx/src/mobx.ts#L9-L15) [packages/mobx/src/internal.ts#L1-L7](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx/src/internal.ts#L1-L7)
- Protect initialization invariants: initObservable disables tracking, permits initialization writes in development, batches execution, and restores context; makeAutoObservable caches prototype keys and assumes one initialization without subclassing. — [packages/mobx/src/types/type-utils.ts#L106-L124](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx/src/types/type-utils.ts#L106-L124) [packages/mobx/src/api/makeObservable.ts#L44-L69](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx/src/api/makeObservable.ts#L44-L69)
- For React lifecycle work, retain the module-scoped administration factory and read useObserver together with finalization and retention/Suspense fixtures; they explain stable subscriptions, render-tree reachability, and pre-subscription recovery. — [packages/mobx-react-lite/src/useObserver.ts#L33-L66](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx-react-lite/src/useObserver.ts#L33-L66) [packages/mobx-react-lite/src/utils/UniversalFinalizationRegistry.ts#L66-L95](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx-react-lite/src/utils/UniversalFinalizationRegistry.ts#L66-L95) [packages/mobx-react-lite/__tests__/useObserverRetention.test.tsx#L16-L50](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx-react-lite/__tests__/useObserverRetention.test.tsx#L16-L50) [packages/mobx-react-lite/__tests__/suspenseCleanup.test.tsx#L107-L127](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx-react-lite/__tests__/suspenseCleanup.test.tsx#L107-L127)
- Tests and CI were inspected, not executed. If execution is later authorized, start with a relevant file through the owning package's test script; core test discovery is restricted to base tests, while React and ESLint use distinct project configurations. — [packages/mobx/package.json#L79-L90](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx/package.json#L79-L90) [packages/mobx/jest.config.js#L3-L5](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx/jest.config.js#L3-L5) [packages/mobx-react-lite/jest.config.js#L3-L6](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx-react-lite/jest.config.js#L3-L6) [packages/eslint-plugin-mobx/package.json#L45-L50](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/eslint-plugin-mobx/package.json#L45-L50)
- Do not equate root build:check with type checking: it delegates the build:check name with --if-present, while all four inspected library/plugin manifests expose test:types and test:check instead; CI separately invokes build:test. — [package.json#L21-L23](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/package.json#L21-L23) [packages/mobx/package.json#L88-L90](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx/package.json#L88-L90) [packages/mobx-react-lite/package.json#L84-L85](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx-react-lite/package.json#L84-L85) [packages/eslint-plugin-mobx/package.json#L49-L50](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/eslint-plugin-mobx/package.json#L49-L50)
- Inspect scripts before running them: Rollup empties dist, check-size rebuilds publish artifacts unless --no-build is supplied, docs hooks evaluate source and write Markdown, and codemod CLI fixtures write files and launch subprocesses. — [scripts/create-rollup-config.mjs#L287-L288](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/scripts/create-rollup-config.mjs#L287-L288) [scripts/size/index.js#L8-L14](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/scripts/size/index.js#L8-L14) [website/scripts/generate-error-docs.js#L16-L24](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/website/scripts/generate-error-docs.js#L16-L24) [packages/mobx-undecorate/__tests__/cli.spec.tsx#L15-L18](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/packages/mobx-undecorate/__tests__/cli.spec.tsx#L15-L18)
- Use the MobX 7 migration guide to resolve stale API expectations, and preserve repository style: four-space indentation, double quotes, no semicolons or trailing commas, with strict TypeScript checks but noImplicitAny/noImplicitThis disabled. — [docs/migrating-from-6-to-7.md#L22-L47](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/docs/migrating-from-6-to-7.md#L22-L47) [.prettierrc#L2-L8](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/.prettierrc#L2-L8) [tsconfig.json#L12-L21](https://github.com/mobxjs/mobx/blob/60be47cab0926d12f22449ec6c809fb5ec6601c4/tsconfig.json#L12-L21)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
