{"record":{"id":"98ebc36c25bc25e2","repo":"mobxjs/mobx","slug":"msg","errorCode":null,"errorMessage":"${msg}","messagePattern":"\\$\\{msg\\}","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/mobx-react-lite/src/utils/utils.ts","lineNumber":6,"sourceCode":"const deprecatedMessages: string[] = []\n\nexport function useDeprecated(msg: string) {\n    if (!deprecatedMessages.includes(msg)) {\n        deprecatedMessages.push(msg)\n        console.warn(msg)\n    }\n}\n","sourceCodeStart":1,"sourceCodeEnd":9,"githubUrl":"https://github.com/mobxjs/mobx/blob/01211a698b64ea94de8e5f276ff8235fcf8ddf96/packages/mobx-react-lite/src/utils/utils.ts#L1-L9","documentation":"useDeprecated is a helper that warns once per unique message via console.warn when a deprecated mobx-react-lite API is called. It is not an exception — the message text passed in describes which API is deprecated and what to use instead, and the warning is deduplicated so it appears only the first time.","triggerScenarios":"Calling deprecated mobx-react-lite exports such as useObserver() or observer(..., options) forms that have been superseded (e.g. by observer() without options or useLocalObservable), in a version where useDeprecated is wired to that export.","commonSituations":"Upgrading mobx-react-lite after 6.x where useObserver was replaced by direct observer()/React.mergeRenderless usage; copy-pasting old tutorial code; e2e logs showing one-time deprecation warnings.","solutions":["Follow the message: replace the deprecated call with the suggested modern API (usually observer() or useLocalObservable)","Replace useObserver(fn) with wrapping the component in observer()","Remove stale options arguments to observer() and hoist dependent observables with useLocalObservable","Suppress only temporarily by filtering console.warn, but prefer migrating"],"exampleFix":"// before\nfunction Comp(props) { return useObserver(() => <div>{props.name}</div>) }\n// after\nconst Comp = observer(({ name }) => <div>{name}</div>)","handlingStrategy":"fallback","validationCode":"null","typeGuard":"null","tryCatchPattern":"null","preventionTips":["Track mobx-react-lite changelogs when upgrading","Replace useObserver with observer() wrapping","Migrate options-argument observer calls to useLocalObservable","Treat deprecation warnings as CI failures to force migration"],"tags":["deprecation","mobx-react-lite","console-warning","hooks"],"backgroundTag":"deprecated-api-usage","analyzedSha":"01211a698b64ea94de8e5f276ff8235fcf8ddf96","analyzedAt":"2026-08-28T22:10:08.831Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}