Skip to content

No New Instance In Use Memo

Error
small-rules/no-new-instance-in-use-memo

Disallow configured constructor calls (default: new Instance) inside React useMemo callbacks.

Diagnostic Messages

noNewInUseMemo
Avoid creating '{{constructorName}}' with `new` inside useMemo. Create it outside the memo callback or use an effect/ref pattern.

Configuration

This rule accepts one options object after the severity.

constructorsOptional

Constructor identifiers that should be disallowed inside useMemo callbacks.

environmentOptional

The React environment: 'roblox-ts' uses @rbxts/react, 'standard' uses react.

maxHelperTraceDepthOptional

Maximum depth for tracing local helper function calls from useMemo callbacks. 0 disables helper traversal.

{
"jsPlugins": [
"@pobammer-ts/small-rules"
],
"rules": {
"small-rules/no-new-instance-in-use-memo": [
"error",
{
"constructors": [
"Instance"
],
"environment": "roblox-ts",
"maxHelperTraceDepth": 4
}
]
}
}

Examples

New instance inside memo
import { useMemo } from "@rbxts/react";
const model = useMemo(() => {
return new Instance("Model");
}, []);
Non-React memo function
function useMemo(factory) {
return factory();
}
const model = useMemo(() => new Instance("Model"), []);