From edcf40e84fe5f5f778b174900d08c4d38b20f29d Mon Sep 17 00:00:00 2001 From: Rick Hanlon Date: Mon, 22 Sep 2025 09:49:24 -0400 Subject: [PATCH] Add RC badge to RC-only lint rules --- src/components/Layout/Sidebar/SidebarLink.tsx | 8 ++- src/components/MDX/ExpandableCallout.tsx | 10 +++ src/components/MDX/MDXComponents.tsx | 5 ++ src/components/PageHeading.tsx | 8 ++- .../eslint-plugin-react-hooks/index.md | 20 +++++- .../lints/component-hook-factories.md | 9 +++ .../eslint-plugin-react-hooks/lints/config.md | 9 +++ .../lints/error-boundaries.md | 9 +++ .../eslint-plugin-react-hooks/lints/gating.md | 9 +++ .../lints/globals.md | 9 +++ .../lints/immutability.md | 9 +++ .../lints/incompatible-library.md | 9 +++ .../lints/preserve-manual-memoization.md | 9 +++ .../eslint-plugin-react-hooks/lints/purity.md | 9 +++ .../eslint-plugin-react-hooks/lints/refs.md | 9 +++ .../lints/set-state-in-effect.md | 9 +++ .../lints/set-state-in-render.md | 9 +++ .../lints/static-components.md | 9 +++ .../lints/unsupported-syntax.md | 9 +++ .../lints/use-memo.md | 9 +++ src/content/reference/react/cache.md | 1 - src/sidebarReference.json | 63 ++++++++++++------- 22 files changed, 221 insertions(+), 29 deletions(-) diff --git a/src/components/Layout/Sidebar/SidebarLink.tsx b/src/components/Layout/Sidebar/SidebarLink.tsx index 5c01fefc3b4..9650e95fa8f 100644 --- a/src/components/Layout/Sidebar/SidebarLink.tsx +++ b/src/components/Layout/Sidebar/SidebarLink.tsx @@ -24,7 +24,7 @@ interface SidebarLinkProps { selected?: boolean; title: string; level: number; - version?: 'canary' | 'major' | 'experimental'; + version?: 'canary' | 'major' | 'experimental' | 'rc'; icon?: React.ReactNode; isExpanded?: boolean; hideArrow?: boolean; @@ -102,6 +102,12 @@ export function SidebarLink({ className="ms-1 text-gray-30 dark:text-gray-60 inline-block w-3.5 h-3.5 align-[-3px]" /> )} + {version === 'rc' && ( + + )} {isExpanded != null && !hideArrow && ( diff --git a/src/components/MDX/ExpandableCallout.tsx b/src/components/MDX/ExpandableCallout.tsx index ba93d3e270b..5b7491e1107 100644 --- a/src/components/MDX/ExpandableCallout.tsx +++ b/src/components/MDX/ExpandableCallout.tsx @@ -24,6 +24,7 @@ type CalloutVariants = | 'wip' | 'canary' | 'experimental' + | 'rc' | 'major' | 'rsc'; @@ -50,6 +51,15 @@ const variantMap = { overlayGradient: 'linear-gradient(rgba(245, 249, 248, 0), rgba(245, 249, 248, 1)', }, + rc: { + title: 'RC', + Icon: IconCanary, + containerClasses: + 'bg-gray-5 dark:bg-gray-60 dark:bg-opacity-20 text-primary dark:text-primary-dark text-lg', + textColor: 'text-gray-60 dark:text-gray-30', + overlayGradient: + 'linear-gradient(rgba(245, 249, 248, 0), rgba(245, 249, 248, 1)', + }, canary: { title: 'Canary', Icon: IconCanary, diff --git a/src/components/MDX/MDXComponents.tsx b/src/components/MDX/MDXComponents.tsx index 7a258370ce1..a32dad27174 100644 --- a/src/components/MDX/MDXComponents.tsx +++ b/src/components/MDX/MDXComponents.tsx @@ -106,6 +106,10 @@ const Canary = ({children}: {children: React.ReactNode}) => ( {children} ); +const RC = ({children}: {children: React.ReactNode}) => ( + {children} +); + const Experimental = ({children}: {children: React.ReactNode}) => ( {children} ); @@ -533,6 +537,7 @@ export const MDXComponents = { Math, MathI, Note, + RC, Canary, Experimental, ExperimentalBadge, diff --git a/src/components/PageHeading.tsx b/src/components/PageHeading.tsx index 76054275008..ee92f5e5559 100644 --- a/src/components/PageHeading.tsx +++ b/src/components/PageHeading.tsx @@ -19,7 +19,7 @@ import {IconExperimental} from './Icon/IconExperimental'; interface PageHeadingProps { title: string; - version?: 'experimental' | 'canary'; + version?: 'experimental' | 'canary' | 'rc'; experimental?: boolean; status?: string; description?: string; @@ -46,6 +46,12 @@ function PageHeading({ className="ms-4 mt-1 text-gray-50 dark:text-gray-40 inline-block w-6 h-6 align-[-1px]" /> )} + {version === 'rc' && ( + + )} {version === 'experimental' && ( @@ -8,6 +9,14 @@ title: eslint-plugin-react-hooks + + +These docs include rules available in the RC version of `eslint-plugin-react-hooks`. + +You can try them by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + This plugin helps you catch violations of React's rules at build time, ensuring your components and hooks follow React's rules for correctness and performance. The lints cover both fundamental React patterns (exhaustive-deps and rules-of-hooks) and issues flagged by React Compiler. React Compiler diagnostics are automatically surfaced by this ESLint plugin, and can be used even if your app hasn't adopted the compiler yet. @@ -18,10 +27,16 @@ What this means for linting, is that you don’t need to fix all violations imme ## Available Lints {/*available-lints*/} -* [`component-hook-factories`](/reference/eslint-plugin-react-hooks/lints/component-hook-factories) - Validates against higher order functions defining nested components or hooks +These rules are available in the stable version of `eslint-plugin-react-hooks`: + +* [`exhaustive-deps`](/reference/eslint-plugin-react-hooks/lints/exhaustive-deps) - Validates that dependency arrays for React hooks contain all necessary dependencies +* [`rules-of-hooks`](/reference/eslint-plugin-react-hooks/lints/rules-of-hooks) - Validates that components and hooks follow the Rules of Hooks + +These rules are available in the RC version of `eslint-plugin-react-hooks`: + +* [`component-hook-factories`](/reference/eslint-plugin-react-hooks/lints/component-hook-factories) - Validates higher order functions defining nested components or hooks * [`config`](/reference/eslint-plugin-react-hooks/lints/config) - Validates the compiler configuration options * [`error-boundaries`](/reference/eslint-plugin-react-hooks/lints/error-boundaries) - Validates usage of Error Boundaries instead of try/catch for child errors -* [`exhaustive-deps`](/reference/eslint-plugin-react-hooks/lints/exhaustive-deps) - Validates that dependency arrays for React hooks contain all necessary dependencies * [`gating`](/reference/eslint-plugin-react-hooks/lints/gating) - Validates configuration of gating mode * [`globals`](/reference/eslint-plugin-react-hooks/lints/globals) - Validates against assignment/mutation of globals during render * [`immutability`](/reference/eslint-plugin-react-hooks/lints/immutability) - Validates against mutating props, state, and other immutable values @@ -29,7 +44,6 @@ What this means for linting, is that you don’t need to fix all violations imme * [`preserve-manual-memoization`](/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization) - Validates that existing manual memoization is preserved by the compiler * [`purity`](/reference/eslint-plugin-react-hooks/lints/purity) - Validates that components/hooks are pure by checking known-impure functions * [`refs`](/reference/eslint-plugin-react-hooks/lints/refs) - Validates correct usage of refs, not reading/writing during render -* [`rules-of-hooks`](/reference/eslint-plugin-react-hooks/lints/rules-of-hooks) - Validates that components and hooks follow the Rules of Hooks * [`set-state-in-effect`](/reference/eslint-plugin-react-hooks/lints/set-state-in-effect) - Validates against calling setState synchronously in an effect * [`set-state-in-render`](/reference/eslint-plugin-react-hooks/lints/set-state-in-render) - Validates against setting state during render * [`static-components`](/reference/eslint-plugin-react-hooks/lints/static-components) - Validates that components are static, not recreated every render diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/component-hook-factories.md b/src/content/reference/eslint-plugin-react-hooks/lints/component-hook-factories.md index 537903abdd0..44d23d758f1 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/component-hook-factories.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/component-hook-factories.md @@ -1,5 +1,6 @@ --- title: component-hook-factories +version: rc --- @@ -8,6 +9,14 @@ Validates against higher order functions defining nested components or hooks. Co + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} Defining components or hooks inside other functions creates new instances on every call. React treats each as a completely different component, destroying and recreating the entire component tree, losing all state, and causing performance problems. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/config.md b/src/content/reference/eslint-plugin-react-hooks/lints/config.md index 719e08412e5..f7e099752b5 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/config.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/config.md @@ -1,5 +1,6 @@ --- title: config +version: rc --- @@ -8,6 +9,14 @@ Validates the compiler [configuration options](/reference/react-compiler/configu + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} React Compiler accepts various [configuration options](/reference/react-compiler/configuration) to control its behavior. This rule validates that your configuration uses correct option names and value types, preventing silent failures from typos or incorrect settings. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/error-boundaries.md b/src/content/reference/eslint-plugin-react-hooks/lints/error-boundaries.md index 830098e5be3..bd013f5325e 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/error-boundaries.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/error-boundaries.md @@ -1,5 +1,6 @@ --- title: error-boundaries +version: rc --- @@ -8,6 +9,14 @@ Validates usage of Error Boundaries instead of try/catch for errors in child com + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} Try/catch blocks can't catch errors that happen during React's rendering process. Errors thrown in rendering methods or hooks bubble up through the component tree. Only [Error Boundaries](/reference/react/Component#catching-rendering-errors-with-an-error-boundary) can catch these errors. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/gating.md b/src/content/reference/eslint-plugin-react-hooks/lints/gating.md index 3bd662a86e1..fdbbadf0efc 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/gating.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/gating.md @@ -1,5 +1,6 @@ --- title: gating +version: rc --- @@ -8,6 +9,14 @@ Validates configuration of [gating mode](/reference/react-compiler/gating). + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} Gating mode lets you gradually adopt React Compiler by marking specific components for optimization. This rule ensures your gating configuration is valid so the compiler knows which components to process. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/globals.md b/src/content/reference/eslint-plugin-react-hooks/lints/globals.md index fe0cbe0080f..b9a20d4dbc7 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/globals.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/globals.md @@ -1,5 +1,6 @@ --- title: globals +version: rc --- @@ -8,6 +9,14 @@ Validates against assignment/mutation of globals during render, part of ensuring + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} Global variables exist outside React's control. When you modify them during render, you break React's assumption that rendering is pure. This can cause components to behave differently in development vs production, break Fast Refresh, and make your app impossible to optimize with features like React Compiler. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/immutability.md b/src/content/reference/eslint-plugin-react-hooks/lints/immutability.md index 2314cde0649..9376271ebd9 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/immutability.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/immutability.md @@ -1,5 +1,6 @@ --- title: immutability +version: rc --- @@ -8,6 +9,14 @@ Validates against mutating props, state, and other values that [are immutable](/ + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} A component’s props and state are immutable snapshots. Never mutate them directly. Instead, pass new props down, and use the setter function from `useState`. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/incompatible-library.md b/src/content/reference/eslint-plugin-react-hooks/lints/incompatible-library.md index e057e1978d9..aa587750328 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/incompatible-library.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/incompatible-library.md @@ -1,5 +1,6 @@ --- title: incompatible-library +version: rc --- @@ -8,6 +9,14 @@ Validates against usage of libraries which are incompatible with memoization (ma + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + These libraries were designed before React's memoization rules were fully documented. They made the correct choices at the time to optimize for ergonomic ways to keep components just the right amount of reactive as app state changes. While these legacy patterns worked, we have since discovered that it's incompatible with React's programming model. We will continue working with library authors to migrate these libraries to use patterns that follow the Rules of React. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization.md b/src/content/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization.md index 93b582b1e16..2f296ac56b1 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization.md @@ -1,5 +1,6 @@ --- title: preserve-manual-memoization +version: rc --- @@ -8,6 +9,14 @@ Validates that existing manual memoization is preserved by the compiler. React C + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} React Compiler preserves your existing `useMemo`, `useCallback`, and `React.memo` calls. If you've manually memoized something, the compiler assumes you had a good reason and won't remove it. However, incomplete dependencies prevent the compiler from understanding your code's data flow and applying further optimizations. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/purity.md b/src/content/reference/eslint-plugin-react-hooks/lints/purity.md index af8aacc612d..14c870fb53b 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/purity.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/purity.md @@ -1,5 +1,6 @@ --- title: purity +version: rc --- @@ -8,6 +9,14 @@ Validates that [components/hooks are pure](/reference/rules/components-and-hooks + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} React components must be pure functions - given the same props, they should always return the same JSX. When components use functions like `Math.random()` or `Date.now()` during render, they produce different output each time, breaking React's assumptions and causing bugs like hydration mismatches, incorrect memoization, and unpredictable behavior. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/refs.md b/src/content/reference/eslint-plugin-react-hooks/lints/refs.md index 3108fdd89da..78776ba5724 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/refs.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/refs.md @@ -1,5 +1,6 @@ --- title: refs +version: rc --- @@ -8,6 +9,14 @@ Validates correct usage of refs, not reading/writing during render. See the "pit + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} Refs hold values that aren't used for rendering. Unlike state, changing a ref doesn't trigger a re-render. Reading or writing `ref.current` during render breaks React's expectations. Refs might not be initialized when you try to read them, and their values can be stale or inconsistent. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/set-state-in-effect.md b/src/content/reference/eslint-plugin-react-hooks/lints/set-state-in-effect.md index 8c6a7cb475a..df285fedfe8 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/set-state-in-effect.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/set-state-in-effect.md @@ -1,5 +1,6 @@ --- title: set-state-in-effect +version: rc --- @@ -8,6 +9,14 @@ Validates against calling setState synchronously in an effect, which can lead to + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} Setting state immediately inside an effect forces React to restart the entire render cycle. When you update state in an effect, React must re-render your component, apply changes to the DOM, and then run effects again. This creates an extra render pass that could have been avoided by transforming data directly during render or deriving state from props. Transform data at the top level of your component instead. This code will naturally re-run when props or state change without triggering additional render cycles. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/set-state-in-render.md b/src/content/reference/eslint-plugin-react-hooks/lints/set-state-in-render.md index 61852990a73..c8cfa22a027 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/set-state-in-render.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/set-state-in-render.md @@ -1,5 +1,6 @@ --- title: set-state-in-render +version: rc --- @@ -8,6 +9,14 @@ Validates against setting state during render, which can trigger additional rend + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} Calling `setState` during render triggers another render before the current one finishes. This creates an infinite loop that crashes your app. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/static-components.md b/src/content/reference/eslint-plugin-react-hooks/lints/static-components.md index 709303612f3..06945838f38 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/static-components.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/static-components.md @@ -1,5 +1,6 @@ --- title: static-components +version: rc --- @@ -8,6 +9,14 @@ Validates that components are static, not recreated every render. Components tha + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} Components defined inside other components are recreated on every render. React sees each as a brand new component type, unmounting the old one and mounting the new one, destroying all state and DOM nodes in the process. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/unsupported-syntax.md b/src/content/reference/eslint-plugin-react-hooks/lints/unsupported-syntax.md index a3eefcdb24f..3f3e04d53ad 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/unsupported-syntax.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/unsupported-syntax.md @@ -1,5 +1,6 @@ --- title: unsupported-syntax +version: rc --- @@ -8,6 +9,14 @@ Validates against syntax that React Compiler does not support. If you need to, y + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} React Compiler needs to statically analyze your code to apply optimizations. Features like `eval` and `with` make it impossible to statically understand what the code does at compile time, so the compiler can't optimize components that use them. diff --git a/src/content/reference/eslint-plugin-react-hooks/lints/use-memo.md b/src/content/reference/eslint-plugin-react-hooks/lints/use-memo.md index 54bbe157941..db022a802ff 100644 --- a/src/content/reference/eslint-plugin-react-hooks/lints/use-memo.md +++ b/src/content/reference/eslint-plugin-react-hooks/lints/use-memo.md @@ -1,5 +1,6 @@ --- title: use-memo +version: rc --- @@ -8,6 +9,14 @@ Validates usage of the `useMemo` hook without a return value. See [`useMemo` doc + + +This rule is available in the RC version of `eslint-plugin-react-hooks`. + +You can try it by upgrading the lint plugin [to the most recent RC version](/learn/react-compiler/installation#eslint-integration). + + + ## Rule Details {/*rule-details*/} `useMemo` is for computing and caching expensive values, not for side effects. Without a return value, `useMemo` returns `undefined`, which defeats its purpose and likely indicates you're using the wrong hook. diff --git a/src/content/reference/react/cache.md b/src/content/reference/react/cache.md index c82543479c6..04836f19d24 100644 --- a/src/content/reference/react/cache.md +++ b/src/content/reference/react/cache.md @@ -1,6 +1,5 @@ --- title: cache -canary: true --- diff --git a/src/sidebarReference.json b/src/sidebarReference.json index 325c216c1a9..8823effb2e1 100644 --- a/src/sidebarReference.json +++ b/src/sidebarReference.json @@ -381,73 +381,90 @@ "title": "Lints", "path": "/reference/eslint-plugin-react-hooks", "routes": [ + { + "title": "exhaustive-deps", + "path": "/reference/eslint-plugin-react-hooks/lints/exhaustive-deps" + }, + { + "title": "rules-of-hooks", + "path": "/reference/eslint-plugin-react-hooks/lints/rules-of-hooks" + }, { "title": "component-hook-factories", - "path": "/reference/eslint-plugin-react-hooks/lints/component-hook-factories" + "path": "/reference/eslint-plugin-react-hooks/lints/component-hook-factories", + "version": "rc" }, { "title": "config", - "path": "/reference/eslint-plugin-react-hooks/lints/config" + "path": "/reference/eslint-plugin-react-hooks/lints/config", + "version": "rc" }, { "title": "error-boundaries", - "path": "/reference/eslint-plugin-react-hooks/lints/error-boundaries" - }, - { - "title": "exhaustive-deps", - "path": "/reference/eslint-plugin-react-hooks/lints/exhaustive-deps" + "path": "/reference/eslint-plugin-react-hooks/lints/error-boundaries", + "version": "rc" }, { "title": "gating", - "path": "/reference/eslint-plugin-react-hooks/lints/gating" + "path": "/reference/eslint-plugin-react-hooks/lints/gating", + "version": "rc" }, { "title": "globals", - "path": "/reference/eslint-plugin-react-hooks/lints/globals" + "path": "/reference/eslint-plugin-react-hooks/lints/globals", + "version": "rc" }, { "title": "immutability", - "path": "/reference/eslint-plugin-react-hooks/lints/immutability" + "path": "/reference/eslint-plugin-react-hooks/lints/immutability", + "version": "rc" }, { "title": "incompatible-library", - "path": "/reference/eslint-plugin-react-hooks/lints/incompatible-library" + "path": "/reference/eslint-plugin-react-hooks/lints/incompatible-library", + "version": "rc" }, + { "title": "preserve-manual-memoization", - "path": "/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization" + "path": "/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization", + "version": "rc" }, { "title": "purity", - "path": "/reference/eslint-plugin-react-hooks/lints/purity" + "path": "/reference/eslint-plugin-react-hooks/lints/purity", + "version": "rc" }, { "title": "refs", - "path": "/reference/eslint-plugin-react-hooks/lints/refs" - }, - { - "title": "rules-of-hooks", - "path": "/reference/eslint-plugin-react-hooks/lints/rules-of-hooks" + "path": "/reference/eslint-plugin-react-hooks/lints/refs", + "version": "rc" }, + { "title": "set-state-in-effect", - "path": "/reference/eslint-plugin-react-hooks/lints/set-state-in-effect" + "path": "/reference/eslint-plugin-react-hooks/lints/set-state-in-effect", + "version": "rc" }, { "title": "set-state-in-render", - "path": "/reference/eslint-plugin-react-hooks/lints/set-state-in-render" + "path": "/reference/eslint-plugin-react-hooks/lints/set-state-in-render", + "version": "rc" }, { "title": "static-components", - "path": "/reference/eslint-plugin-react-hooks/lints/static-components" + "path": "/reference/eslint-plugin-react-hooks/lints/static-components", + "version": "rc" }, { "title": "unsupported-syntax", - "path": "/reference/eslint-plugin-react-hooks/lints/unsupported-syntax" + "path": "/reference/eslint-plugin-react-hooks/lints/unsupported-syntax", + "version": "rc" }, { "title": "use-memo", - "path": "/reference/eslint-plugin-react-hooks/lints/use-memo" + "path": "/reference/eslint-plugin-react-hooks/lints/use-memo", + "version": "rc" } ] },