PageSourceSearch

https://eslint-react.xyz/docs/rules

html eslint-react.xyz collected 2026-10-05 01:06:49 UTC 291,985 bytes, 37 lines download raw bytes

1<!DOCTYPE html><html data-dpl-id="dpl_CxSnQyNSnKhLk7x65mvitSCyE19u" lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/immutable/chunks/0mgjag0vy-zqm.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/2eln7txwhu63m.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/2oo88vu07c3a4.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/immutable/chunks/106x4vmnwa9fl.js"/>
1<script src="/_next/static/immutable/chunks/01cr-kn8gr3oc.js" async=""></script>
1<script src="/_next/static/immutable/chunks/3tfwqad5_528p.js" async=""></script>
1<script src="/_next/static/immutable/chunks/turbopack-1yh5pc4i1p8z5.js" async=""></script>
1<script src="/_next/static/immutable/chunks/2zqrznxgj7kij.js" async=""></script>
1<script src="/_next/static/immutable/chunks/0uts3wfas4x_k.js" async=""></script>
1<script src="/_next/static/immutable/chunks/2m3ei9w7ks0sy.js" async=""></script>
1<script src="/_next/static/immutable/chunks/0o7yqmkkgnah6.js" async=""></script>
1<script src="/_next/static/immutable/chunks/0fb-exb51sj5t.js" async=""></script>
1<script src="/_next/static/immutable/chunks/0s2qqkby3clkh.js" async=""></script>
1<script src="/_next/static/immutable/chunks/1opi621w-o0qg.js" async=""></script>
1<script src="/_next/static/immutable/chunks/07r_pzvoq9dap.js" async=""></script>
1<script src="/_next/static/immutable/chunks/33ptm2_z_riyr.js" async=""></script>
1<title>Rules | ESLint React</title><meta property="og:title" content="Rules | ESLint React"/><meta property="og:image" content="https://eslint-react-bpxp2f0yx-rel1cxs-projects.vercel.app/og/docs/rules/image.webp"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Rules | ESLint React"/><meta name="twitter:image" content="https://eslint-react-bpxp2f0yx-rel1cxs-projects.vercel.app/og/docs/rules/image.webp"/><meta content="#fff" name="msapplication-TileColor"/><meta content="en" http-equiv="Content-Language"/><meta content="ESLint React" name="apple-mobile-web-app-title"/><meta content="/ms-icon-144x144.png" name="msapplication-TileImage"/><meta content="summary_large_image" name="twitter:card"/><meta content="https://eslint-react.xyz" name="twitter:site"/><link href="https://eslint-react.xyz/favicon.ico" rel="icon" type="image/x-icon"/>
1<script src="/_next/static/immutable/chunks/0c0hxoamwjsbw.js" noModule=""></script>
1</head><body class="flex flex-col min-h-screen"><div hidden=""><!--$--><!--/$--></div>
1<script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","system",null,["light","dark"],null,true,true)</script>
1<!--$--><div class="bg-fd-secondary/50 p-3 empty:hidden"></div><!--/$--><div id="nd-docs-layout" data-sidebar-collapsed="false" style="grid-template:&quot;sidebar sidebar header toc toc&quot;
2&quot;sidebar sidebar toc-popover toc toc&quot;
3&quot;sidebar sidebar main toc toc&quot; 1fr / minmax(min-content, 1fr) var(--fd-sidebar-col) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) var(--fd-toc-width) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)" class="grid overflow-x-clip min-h-(--fd-docs-height) [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-toc-popover-height:0px] [--fd-sidebar-width:0px] [--fd-toc-width:0px] transition-[--fd-sidebar-col]"><header id="nd-subnav" data-transparent="false" class="[grid-area:header] sticky top-(--fd-docs-row-1) z-30 flex items-center ps-4 pe-2.5 border-b transition-colors backdrop-blur-sm h-(--fd-header-height) md:hidden max-md:layout:[--fd-header-height:--spacing(14)] data-[transparent=false]:bg-fd-background/80"><a class="inline-flex items-center gap-2.5 font-semibold" href="/"><div class="flex items-between gap-2.5 min-w-max"><img alt="logo" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" src="/_next/static/immutable/media/logo.3u2gx97zostfz.svg"/><span>ESLint React</span></div></a><div class="flex-1"></div><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground [&amp;_svg]:size-4.5 p-2" data-search="" aria-label="Open Search"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></button><button type="button" aria-label="Open Sidebar" aria-expanded="false" aria-controls="nd-sidebar-mobile" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground [&amp;_svg]:size-4.5 p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left lucide-sidebar" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path></svg></button></header><div data-sidebar-placeholder="" class="sticky top-(--fd-docs-row-1) z-20 [grid-area:sidebar] pointer-events-none *:pointer-events-auto h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] md:layout:[--fd-sidebar-width:268px] max-md:hidden"><aside id="nd-sidebar" data-collapsed="false" data-hovered="false" class="absolute flex flex-col w-full inset-s-0 inset-y-0 items-end bg-fd-card text-sm border-e duration-250 *:w-(--fd-sidebar-width)"><div class="flex flex-col gap-3 p-4 pb-2"><div class="flex"><a class="inline-flex text-[0.9375rem] items-center gap-2.5 font-medium me-auto" href="/"><div class="flex items-between gap-2.5 min-w-max"><img alt="logo" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" src="/_next/static/immutable/media/logo.3u2gx97zostfz.svg"/><span>ESLint React</span></div></a><button type="button" aria-label="Collapse Sidebar" aria-controls="nd-sidebar" aria-expanded="true" data-collapsed="false" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&amp;_svg]:size-4.5 mb-auto text-fd-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left lucide-sidebar" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path></svg></button></div><button type="button" data-search-full="" class="inline-flex items-center gap-2 rounded-lg border bg-fd-secondary/50 p-1.5 ps-2 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search size-4" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg>Search<div class="ms-auto inline-flex gap-0.5"><kbd class="rounded-md border bg-fd-background px-1.5">⌘</kbd><kbd class="rounded-md border bg-fd-background px-1.5">K</kbd></div></button></div><div dir="ltr" class="overflow-hidden min-h-0 flex-1" style="position:relative;--radix-scroll-area-corner-width:0px;--radix-scroll-area-corner-height:0px"><style>[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}</style><div data-radix-scroll-area-viewport="" class="size-full rounded-[inherit] *:flex! *:flex-col! *:gap-0.5! p-4 overscroll-contain mask-[linear-gradient(to_bottom,transparent,white_12px,white_calc(100%-12px),transparent)]" style="overflow-x:hidden;overflow-y:hidden"><div style="min-width:100%;display:table"><div data-state="open"><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors w-full" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/getting-started">Getting Started<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down ms-auto transition-transform" aria-hidden="true" data-icon="true"><path d="m6 9 6 6 6-6"></path></svg></a><div data-state="open" id="radix-_R_6j9aivahb_" class="overflow-hidden relative before:content-[&#x27;&#x27;] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:inset-s-2.5"><div class="flex flex-col gap-0.5 pt-0.5"><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/getting-started/javascript">JavaScript</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/getting-started/typescript">TypeScript</a></div></div></div><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/migrating-from-eslint-plugin-react">Migrating from eslint-plugin-react</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/migrating-from-eslint-plugin-react-hooks">Migrating from eslint-plugin-react-hooks</a><p class="inline-flex items-center gap-2 mb-1 px-2 mt-6 empty:mb-0 [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 first:mt-0" style="padding-inline-start:calc(2 * var(--spacing))">Core Reference</p><div data-state="open"><a data-active="true" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors w-full" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/rules">Rules<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down ms-auto transition-transform" aria-hidden="true" data-icon="true"><path d="m6 9 6 6 6-6"></path></svg></a><div data-state="open" id="radix-_R_mj9aivahb_" class="overflow-hidden relative before:content-[&#x27;&#x27;] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:inset-s-2.5"><div class="flex flex-col gap-0.5 pt-0.5"><p class="inline-flex items-center gap-2 mb-1 px-2 mt-6 empty:mb-0 [&amp;_svg]:size-4 [&amp;_svg]:shrink-0" style="padding-inline-start:calc(5 * var(--spacing))">X Rules</p><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/error-boundaries">error-boundaries</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/exhaustive-deps">exhaustive-deps</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/globals">globals</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/immutability">immutability</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-access-state-in-setstate">no-access-state-in-setstate</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-array-index-key">no-array-index-key</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-children-count">no-children-count</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-children-for-each">no-children-for-each</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-children-map">no-children-map</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-children-only">no-children-only</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-children-to-array">no-children-to-array</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-class-component">no-class-component</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-clone-element">no-clone-element</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-component-will-mount">no-component-will-mount</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-component-will-receive-props">no-component-will-receive-props</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-component-will-update">no-component-will-update</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-context-provider">no-context-provider</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-create-ref">no-create-ref</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-direct-mutation-state">no-direct-mutation-state</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-duplicate-key">no-duplicate-key</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-forward-ref">no-forward-ref</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-implicit-children">no-implicit-children</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-implicit-key">no-implicit-key</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-implicit-ref">no-implicit-ref</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-leaked-conditional-rendering">no-leaked-conditional-rendering</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-missing-component-display-name">no-missing-component-display-name</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-missing-context-display-name">no-missing-context-display-name</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-missing-key">no-missing-key</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-misused-capture-owner-stack">no-misused-capture-owner-stack</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-nested-component-definitions">no-nested-component-definitions</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-nested-lazy-component-declarations">no-nested-lazy-component-declarations</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-set-state-in-component-did-mount">no-set-state-in-component-did-mount</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-set-state-in-component-did-update">no-set-state-in-component-did-update</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-set-state-in-component-will-update">no-set-state-in-component-will-update</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-unnecessary-use-prefix">no-unnecessary-use-prefix</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-unsafe-component-will-mount">no-unsafe-component-will-mount</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-unsafe-component-will-receive-props">no-unsafe-component-will-receive-props</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-unsafe-component-will-update">no-unsafe-component-will-update</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-unstable-context-value">no-unstable-context-value</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-unstable-default-props">no-unstable-default-props</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-unused-class-component-members">no-unused-class-component-members</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-unused-props">no-unused-props</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-unused-state">no-unused-state</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/no-use-context">no-use-context</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/purity">purity</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/refs">refs</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/rules-of-hooks">rules-of-hooks</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/set-state-in-effect">set-state-in-effect</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/set-state-in-render">set-state-in-render</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/static-components">static-components</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/unsupported-syntax">unsupported-syntax</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/use-memo">use-memo</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/use-state">use-state</a><p class="inline-flex items-center gap-2 mb-1 px-2 mt-6 empty:mb-0 [&amp;_svg]:size-4 [&amp;_svg]:shrink-0" style="padding-inline-start:calc(5 * var(--spacing))">JSX Rules</p><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/jsx-no-children-prop">no-children-prop</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/jsx-no-children-prop-with-children">no-children-prop-with-children</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/jsx-no-comment-textnodes">no-comment-textnodes</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/jsx-no-key-after-spread">no-key-after-spread</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/jsx-no-leaked-dollar">no-leaked-dollar</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/jsx-no-leaked-semicolon">no-leaked-semicolon</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/jsx-no-namespace">no-namespace</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/jsx-no-useless-fragment">no-useless-fragment</a><p class="inline-flex items-center gap-2 mb-1 px-2 mt-6 empty:mb-0 [&amp;_svg]:size-4 [&amp;_svg]:shrink-0" style="padding-inline-start:calc(5 * var(--spacing))">RSC Rules</p><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/rsc-function-definition">function-definition</a><p class="inline-flex items-center gap-2 mb-1 px-2 mt-6 empty:mb-0 [&amp;_svg]:size-4 [&amp;_svg]:shrink-0" style="padding-inline-start:calc(5 * var(--spacing))">DOM Rules</p><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-dangerously-set-innerhtml">no-dangerously-set-innerhtml</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-dangerously-set-innerhtml-with-children">no-dangerously-set-innerhtml-with-children</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-find-dom-node">no-find-dom-node</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-flush-sync">no-flush-sync</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-hydrate">no-hydrate</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-missing-button-type">no-missing-button-type</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-missing-iframe-sandbox">no-missing-iframe-sandbox</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-render">no-render</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-render-return-value">no-render-return-value</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-script-url">no-script-url</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-string-style-prop">no-string-style-prop</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-unknown-property">no-unknown-property</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-unsafe-iframe-sandbox">no-unsafe-iframe-sandbox</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-unsafe-target-blank">no-unsafe-target-blank</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-use-form-state">no-use-form-state</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/dom-no-void-elements-with-children">no-void-elements-with-children</a><p class="inline-flex items-center gap-2 mb-1 px-2 mt-6 empty:mb-0 [&amp;_svg]:size-4 [&amp;_svg]:shrink-0" style="padding-inline-start:calc(5 * var(--spacing))">Web API Rules</p><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/web-api-no-leaked-event-listener">no-leaked-event-listener</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/web-api-no-leaked-fetch">no-leaked-fetch</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/web-api-no-leaked-intersection-observer">no-leaked-intersection-observer</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/web-api-no-leaked-interval">no-leaked-interval</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/web-api-no-leaked-resize-observer">no-leaked-resize-observer</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/web-api-no-leaked-timeout">no-leaked-timeout</a><p class="inline-flex items-center gap-2 mb-1 px-2 mt-6 empty:mb-0 [&amp;_svg]:size-4 [&amp;_svg]:shrink-0" style="padding-inline-start:calc(5 * var(--spacing))">Naming Convention Rules</p><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/naming-convention-context-name">context-name</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/naming-convention-id-name">id-name</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/naming-convention-ref-name">ref-name</a><p class="inline-flex items-center gap-2 mb-1 px-2 mt-6 empty:mb-0 [&amp;_svg]:size-4 [&amp;_svg]:shrink-0" style="padding-inline-start:calc(5 * var(--spacing))">Debug Rules</p><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/debug-function-component">function-component</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/debug-hook">hook</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/debug-is-from-react">is-from-react</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/debug-is-from-ref">is-from-ref</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors data-[active=true]:before:content-[&#x27;&#x27;] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:inset-s-2.5" style="padding-inline-start:calc(5 * var(--spacing))" href="/docs/rules/debug-jsx">jsx</a></div></div></div><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/presets">Presets</a><div data-state="closed"><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors w-full" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/recipes">Recipes<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down ms-auto transition-transform -rotate-90 rtl:rotate-90" aria-hidden="true" data-icon="true"><path d="m6 9 6 6 6-6"></path></svg></a><div data-state="closed" id="radix-_R_uj9aivahb_" hidden="" class="overflow-hidden relative before:content-[&#x27;&#x27;] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:inset-s-2.5"></div></div><div data-state="closed"><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors w-full" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/packages">Packages<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down ms-auto transition-transform -rotate-90 rtl:rotate-90" aria-hidden="true" data-icon="true"><path d="m6 9 6 6 6-6"></path></svg></a><div data-state="closed" id="radix-_R_12j9aivahb_" hidden="" class="overflow-hidden relative before:content-[&#x27;&#x27;] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:inset-s-2.5"></div></div><div data-state="closed"><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors w-full" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/configuration">Configuration<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down ms-auto transition-transform -rotate-90 rtl:rotate-90" aria-hidden="true" data-icon="true"><path d="m6 9 6 6 6-6"></path></svg></a><div data-state="closed" id="radix-_R_16j9aivahb_" hidden="" class="overflow-hidden relative before:content-[&#x27;&#x27;] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:inset-s-2.5"></div></div><p class="inline-flex items-center gap-2 mb-1 px-2 mt-6 empty:mb-0 [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 first:mt-0" style="padding-inline-start:calc(2 * var(--spacing))">Project Information</p><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/roadmap">Roadmap</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/changelog">Changelog</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/faq">FAQ</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/glossary">Glossary</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/community">Community</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/contributing">Contributing</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground
3/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/third-party-plugins">Third-Party Plugins</a></div></div></div><div class="flex flex-col p-4 pt-2"><div class="flex text-fd-muted-foreground items-center border bg-fd-secondary/50 p-0.5 pe-0 rounded-lg empty:hidden"><a href="https://github.com/Rel1cx/eslint-react" rel="noreferrer noopener" target="_blank" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&amp;_svg]:size-4.5" aria-label="GitHub" data-active="false"><svg role="img" viewBox="0 0 24 24" fill="currentColor"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg></a><button class="inline-flex items-center border p-1 overflow-hidden px-1 py-0 border-y-0 border-e-0 rounded-none ms-auto *:rounded-md" aria-label="Toggle Theme" data-theme-toggle=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun size-6.5 p-1.5 text-fd-muted-foreground" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon size-6.5 p-1.5 text-fd-muted-foreground" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg></button></div></div></aside></div><div data-sidebar-panel="" class="fixed flex top-[calc(--spacing(4)+var(--fd-docs-row-3))] inset-s-4 shadow-lg transition-opacity rounded-xl p-0.5 border bg-fd-muted text-fd-muted-foreground z-10 pointer-events-none opacity-0" inert=""><button type="button" aria-label="Collapse Sidebar" aria-controls="nd-sidebar" aria-expanded="true" data-collapsed="false" class="inline-flex items-center justify-center text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&amp;_svg]:size-4.5 rounded-lg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left lucide-sidebar" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path></svg></button><button type="button" class="inline-flex items-center justify-center text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&amp;_svg]:size-4.5 rounded-lg" data-search="" aria-label="Open Search"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></button></div><div data-state="closed" data-toc-popover="" class="sticky top-(--fd-docs-row-2) z-10 [grid-area:toc-popover] h-(--fd-toc-popover-height) xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)]"><header class="border-b backdrop-blur-sm transition-colors bg-fd-background/80"><button type="button" aria-expanded="false" data-state="closed" class="flex w-full h-10 items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&amp;_svg]:size-4 md:px-6" data-toc-popover-trigger=""><svg role="progressbar" viewBox="0 0 18 18" aria-valuenow="0" aria-valuemin="0" aria-valuemax="1" style="width:18px;height:18px" class="shrink-0"><circle cx="9" cy="9" r="7.5" fill="none" stroke-width="1.5" class="stroke-current/25"></circle><circle cx="9" cy="9" r="7.5" fill="none" stroke-width="1.5" stroke="currentColor" stroke-dasharray="47.12388980384689" stroke-dashoffset="47.12388980384689" stroke-linecap="round" transform="rotate(-90 9 9)" class="transition-all"></circle></svg><span class="grid flex-1 *:my-auto *:row-start-1 *:col-start-1"><span class="truncate transition-[opacity,translate,color]">Rules</span><span class="truncate transition-[opacity,translate] opacity-0 translate-y-full pointer-events-none"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down shrink-0 transition-transform mx-0.5" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div data-state="closed" id="radix-_R_2lubsivahb_" hidden="" data-toc-popover-content="" class="overflow-hidden"></div></header></div><main class="grid [grid-area:main] justify-items-center" data-layout-main=""><article id="nd-page" data-layout-content="" data-full="true" class="flex flex-col min-w-0 
3w-full px-4 py-6 gap-4 md:px-6 md:pt-8 xl:px-8 xl:pt-14 md:in-data-[sidebar-collapsed=true]:pt-16 xl:in-data-[sidebar-collapsed=true]:pt-14 max-w-[1168px]"><h1 class="text-[1.75em] font-semibold">Rules</h1><div class="flex flex-row gap-2 items-center border-b pb-6"><button aria-live="polite" class="inline-flex items-center justify-center rounded-md p-2 font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring border bg-fd-secondary text-fd-secondary-foreground hover:bg-fd-accent hover:text-fd-accent-foreground px-2 py-1.5 text-xs gap-2 [&amp;_svg]:size-3.5 [&amp;_svg]:text-fd-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy Markdown</button><button type="button" aria-haspopup="dialog" aria-expanded="false" data-state="closed" class="inline-flex items-center justify-center rounded-md p-2 font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring border bg-fd-secondary text-fd-secondary-foreground hover:bg-fd-accent hover:text-fd-accent-foreground px-2 py-1.5 text-xs gap-2 data-[state=open]:bg-fd-accent data-[state=open]:text-fd-accent-foreground">Open<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down size-3.5 text-fd-muted-foreground" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div><div class="prose flex-1"><div class="flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md" style="--callout-color:var(--color-fd-info, var(--color-fd-muted))"><div role="none" class="w-0.5 bg-(--callout-color)/50 rounded-sm"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info size-5 -me-0.5 fill-(--callout-color) text-fd-card" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex flex-col gap-2 min-w-0 flex-1"><div class="text-fd-muted-foreground prose-no-margin empty:hidden"><p>Linter rules can have false positives, false negatives, and some rules depend on the <code>react</code> or <code>react-dom</code> <a href="https://react.dev/versions" rel="noreferrer noopener" target="_blank">version</a> you are using.</p></div></div></div>
4<div data-state="closed" class="not-prose rounded-lg border bg-fd-card text-fd-card-foreground"><button type="button" aria-expanded="false" data-state="closed" class="group inline-flex w-full items-center justify-between px-4 py-2.5 font-medium">Table of Contents<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down size-4 transition-transform duration-200 group-data-[state=open]:rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div data-state="closed" id="radix-_R_sklubsivahb_" hidden="" class="overflow-hidden"></div></div>
5<ul>
6<li>🌟 Feature - Enhanced or special functionality</li>
7<li>⚙️ Configurable - Accepts custom options via rule configuration</li>
8<li>🧪 Experimental - Beta feature, subject to change</li>
9<li>🐞 Debug - For analysis, metrics, or custom tooling</li>
10<li>💭 Type Checking - Requires TypeScript type information</li>
11<li>🔧 Fixable - Provides automatic or interactive fixes</li>
12<li>🔄 Codemod - Safe AST transformations for deprecations</li>
13<li>0️⃣ Severity 0 - Disabled by default</li>
14<li>1️⃣ Severity 1 - Warning level</li>
15<li>2️⃣ Severity 2 - Error level</li>
16<li>🎛️ Severity in <code>recommended</code>
16 and/or <code>strict</code> presets</li>
17</ul>
18<h2 id="x-rules" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#x-rules">X Rules</a><button aria-live="polite" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg><span class="sr-only">Copy Anchor Link</span></button></h2>
19<div class="relative overflow-auto prose-no-margin my-6"><table><thead><tr><th style="text-align:left">Rule</th><th style="text-align:center">🎛️</th><th style="text-align:center">🌟</th><th style="text-align:left">Description</th><th style="text-align:center"><code>react</code></th></tr></thead><tbody><tr><td style="text-align:left"><a href="/docs/rules/error-boundaries"><code>error-boundaries</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Validates usage of Error Boundaries instead of try/catch for errors in child components</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/exhaustive-deps"><code>exhaustive-deps</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"><code>⚙️</code> <code>🔧</code></td><td style="text-align:left">Verifies the list of dependencies for Hooks like <code>useEffect</code> and similar</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/globals"><code>globals</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🧪</code></td><td style="text-align:left">Validates against assignment/mutation of globals during render, part of ensuring that side effects must run outside of render</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/immutability"><code>immutability</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🧪</code></td><td style="text-align:left">Validates against mutating props, state, and other immutable values, including through functions passed into frozen contexts such as JSX props, hook arguments, and hook return values</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-access-state-in-setstate"><code>no-access-state-in-setstate</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows accessing <code>this.state</code> inside <code>setState</code> calls</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-array-index-key"><code>no-array-index-key</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows using an item&#x27;s index in the array as its key</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-children-count"><code>no-children-count</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows the use of <code>Children.count</code> from the <code>react</code> package</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-children-for-each"><code>no-children-for-each</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows the use of <code>
19Children.forEach</code> from the <code>react</code> package</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-children-map"><code>no-children-map</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows the use of <code>Children.map</code> from the <code>react</code> package</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-children-only"><code>no-children-only</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows the use of <code>Children.only</code> from the <code>react</code> package</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-children-to-array"><code>no-children-to-array</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows the use of <code>Children.toArray</code> from the <code>react</code> package</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-class-component"><code>no-class-component</code></a></td><td style="text-align:center">0️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows class components except for error boundaries</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-clone-element"><code>no-clone-element</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows <code>cloneElement</code></td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-component-will-mount"><code>no-component-will-mount</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🔄</code></td><td style="text-align:left">Replaces usage of <code>componentWillMount</code> with <code>UNSAFE_componentWillMount</code></td><td style="text-align:center">&gt;=16.3.0</td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-component-will-receive-props"><code>no-component-will-receive-props</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🔄</code></td><td style="text-align:left">Replaces usage of <code>componentWillReceiveProps</code> with <code>UNSAFE_componentWillReceiveProps</code></td><td style="text-align:center">&gt;=16.3.0</td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-component-will-update"><code>no-component-will-update</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🔄</code></td><td style="text-align:left">Replaces usage of <code>componentWillUpdate</code> with <code>UNSAFE_componentWillUpdate</code></td><td style="text-align:center">&gt;=16.3.0</td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-context-provider"><code>no-context-provider</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"><code>🔄</code></td><td style="text-align:left">Replaces usage of <code>&lt;Context.Provider&gt;</code> with <code>&lt;Context&gt;</code></td><td style="text-align:center">&gt;=19.0.0</td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-create-ref"><code>no-create-ref</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows <code>createRef</code> in function components and Hooks</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-direct-mutation-state"><code>no-direct-mutation-state</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows direct mutation of <code>this.state</code></td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-duplicate-key"><code>no-duplicate-key</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🧪</code></td><td style="text-align:left">Prevents duplicate <code>key</code> props on sibling elements when rendering lists</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-forward-ref"><code>no-forward-ref</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"><code>🔄</code></td><td style="text-align:left">Replaces usage of <code>forwardRef</code> with passing <code>ref</code> as a prop</td><td style="text-align:center">&gt;=19.0.0</td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-implicit-children"><code>no-implicit-children</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>💭</code> <code>🧪</code></td><td style="text-align:left">Prevents implicitly passing the <code>children</code> prop to components</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-implicit-key"><code>no-implicit-key</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>💭</code> <code>🧪</code></td><td style="text-align:left">Prevents implicitly passing the <code>key</code> prop to components</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-implicit-ref"><code>no-implicit-ref</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>💭</code> <code>🧪</code></td><td style="text-align:left">Prevents implicitly passing the <code>ref</code> prop to components</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-leaked-conditional-rendering"><code>no-leaked-conditional-rendering</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>💭</code></td><td style="text-align:left">Prevents problematic leaked values from being rendered</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-missing-component-display-name"><code>
19no-missing-component-display-name</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces that all components have a <code>displayName</code> that can be used in DevTools</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-missing-context-display-name"><code>no-missing-context-display-name</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🔧</code></td><td style="text-align:left">Enforces that all contexts have a <code>displayName</code> that can be used in DevTools</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-missing-key"><code>no-missing-key</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows missing <code>key</code> on items in list rendering</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-misused-capture-owner-stack"><code>no-misused-capture-owner-stack</code></a></td><td style="text-align:center">0️⃣ 2️⃣</td><td style="text-align:center"><code>🧪</code></td><td style="text-align:left">Prevents incorrect usage of <code>captureOwnerStack</code></td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-nested-component-definitions"><code>no-nested-component-definitions</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows nesting component definitions inside other components</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-nested-lazy-component-declarations"><code>no-nested-lazy-component-declarations</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows nesting lazy component declarations inside other components or hooks</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-set-state-in-component-did-mount"><code>no-set-state-in-component-did-mount</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows calling <code>this.setState</code> in <code>componentDidMount</code> outside functions such as callbacks</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-set-state-in-component-did-update"><code>no-set-state-in-component-did-update</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows calling <code>this.setState</code> in <code>componentDidUpdate</code> outside functions such as callbacks</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-set-state-in-component-will-update"><code>no-set-state-in-component-will-update</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows calling <code>this.setState</code> in <code>componentWillUpdate</code> outside functions such as callbacks</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-unnecessary-use-prefix"><code>no-unnecessary-use-prefix</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces that a function with the <code>use</code> prefix uses at least one Hook inside it</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-unsafe-component-will-mount"><code>no-unsafe-component-will-mount</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Warns about the use of <code>UNSAFE_componentWillMount</code> in class components</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-unsafe-component-will-receive-props"><code>no-unsafe-component-will-receive-props</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Warns about the use of <code>UNSAFE_componentWillReceiveProps</code> in class components</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-unsafe-component-will-update"><code>no-unsafe-component-will-update</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Warns about the use of <code>UNSAFE_componentWillUpdate</code> in class components</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-unstable-context-value"><code>no-unstable-context-value</code></a></td><td style="text-align:center">0️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Prevents non-stable values (i.e., object literals) from being used as a value for <code>Context.Provider</code></td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-unstable-default-props"><code>no-unstable-default-props</code></a></td><td style="text-align:center">0️⃣ 1️⃣</td><td style="text-align:center"><code>⚙️</code></td><td style="text-align:left">Prevents using referential-type values as default props in object destructuring</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-unused-class-component-members"><code>no-unused-class-component-members</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Warns about unused class component methods and properties</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-unused-props"><code>no-unused-props</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>💭</code> <code>🧪</code></td><td style="text-align:left">Warns about component props that are defined but never used</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-unused-state"><code>no-unused-state</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🧪</code></td><td style="text-align:left">Warns about state variables that are defined but never used</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/no-use-context"><code>no-use-context</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"><code>🔄</code></td><td style="text-align:left">Replaces usage of <code>useContext</code> with <code>use</code></td><td style="text-align:center">&gt;=19.0.0</td></tr><tr><td style="text-align:left"><a href="/docs/rules/purity"><code>purity</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Validates that components and hooks are pure by checking that they do not call known-impure functions during render</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/refs"><code>refs</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🧪</code></td><td style="text-align:left">Validates correct usage of refs by checking that <code>ref.current</code> is not read or written during render</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/rules-of-hooks"><code>rules-of-hooks</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>⚙️</code> <code>🔧</code></td><td style="text-align:left">Enforces the Rules of Hooks</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/set-state-in-effect"><code>
19set-state-in-effect</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Validates against setting state synchronously in an effect, which can lead to re-renders that degrade performance</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/set-state-in-render"><code>set-state-in-render</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🧪</code></td><td style="text-align:left">Validates against unconditionally setting state during render, which can trigger additional renders and potential infinite render loops</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/static-components"><code>static-components</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🧪</code></td><td style="text-align:left">Validates that components are static, not recreated every render</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/unsupported-syntax"><code>unsupported-syntax</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Validates against syntax that React Compiler does not support</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/use-memo"><code>use-memo</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Validates that <code>useMemo</code> is called with a callback that returns a value</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/use-state"><code>use-state</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"><code>⚙️</code></td><td style="text-align:left">Enforces correct usage of <code>useState</code>, including destructuring, symmetric naming of the value and setter, and wrapping expensive initializers in a lazy initializer function</td><td style="text-align:center"></td></tr></tbody></table></div>
20<h2 id="jsx-rules" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#jsx-rules">JSX Rules</a><button aria-live="polite" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg><span class="sr-only">Copy Anchor Link</span></button></h2>
21<div class="flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md" style="--callout-color:var(--color-fd-info, var(--color-fd-muted))"><div role="none" class="w-0.5 bg-(--callout-color)/50 rounded-sm"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info size-5 -me-0.5 fill-(--callout-color) text-fd-card" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex flex-col gap-2 min-w-0 flex-1"><div class="text-fd-muted-foreground prose-no-margin empty:hidden"><p>JSX rules check for issues exclusive to JSX syntax, which are absent from standard JavaScript (like handwritten <code>createElement()</code> calls).</p></div></div></div>
22<div class="relative overflow-auto prose-no-margin my-6"><table><thead><tr><th style="text-align:left">Rule</th><th style="text-align:center">🎛️</th><th style="text-align:center">🌟</th><th style="text-align:left">Description</th><th style="text-align:center"><code>react</code></th></tr></thead><tbody><tr><td style="text-align:left"><a href="/docs/rules/jsx-no-children-prop"><code>no-children-prop</code></a></td><td style="text-align:center">1️⃣ 2️⃣</td><td style="text-align:center"><code>🔧</code></td><td style="text-align:left">Disallows passing <code>children</code> as a prop</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/jsx-no-children-prop-with-children"><code>no-children-prop-with-children</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🔧</code></td><td style="text-align:left">Disallows passing <code>children</code> as a prop when children are also passed as nested content</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/jsx-no-comment-textnodes"><code>no-comment-textnodes</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Prevents comment strings from being accidentally inserted into a JSX element&#x27;s text nodes</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/jsx-no-key-after-spread"><code>no-key-after-spread</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Prevent patterns that cause deoptimization when using the automatic JSX runtime</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/jsx-no-leaked-dollar"><code>no-leaked-dollar</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"><code>🔧</code></td><td style="text-align:left">Catches <code>$</code> before <code>{expr}</code> in JSX — typically from template literal <code>${expr}</code>
22 being copy-pasted into JSX without removing the <code>$</code>. The <code>$</code> &quot;leaks&quot; into the rendered output</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/jsx-no-leaked-semicolon"><code>no-leaked-semicolon</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"><code>🔧</code></td><td style="text-align:left">Catches <code>;</code> at the start of JSX text nodes — typically from accidentally placing a statement-ending <code>;</code> inside JSX. The <code>;</code> &quot;leaks&quot; into the rendered output</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/jsx-no-namespace"><code>no-namespace</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallow JSX namespace syntax, as React does not support them</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/jsx-no-useless-fragment"><code>no-useless-fragment</code></a></td><td style="text-align:center">0️⃣ 1️⃣</td><td style="text-align:center"><code>⚙️</code> <code>🔧</code></td><td style="text-align:left">Disallows useless fragment elements</td><td style="text-align:center"></td></tr></tbody></table></div>
23<h2 id="rsc-rules" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#rsc-rules">RSC Rules</a><button aria-live="polite" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg><span class="sr-only">Copy Anchor Link</span></button></h2>
24<div class="flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md" style="--callout-color:var(--color-fd-info, var(--color-fd-muted))"><div role="none" class="w-0.5 bg-(--callout-color)/50 rounded-sm"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info size-5 -me-0.5 fill-(--callout-color) text-fd-card" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex flex-col gap-2 min-w-0 flex-1"><div class="text-fd-muted-foreground prose-no-margin empty:hidden"><p>RSC rules target <a href="https://react.dev/reference/rsc/server-components" rel="noreferrer noopener" target="_blank">React Server Components</a>, <a href="https://react.dev/reference/rsc/server-functions" rel="noreferrer noopener" target="_blank">React Server Functions</a> and <a href="https://react.dev/reference/rsc/directives" rel="noreferrer noopener" target="_blank">RSC Directives</a>.</p></div></div></div>
25<div class="relative overflow-auto prose-no-margin my-6"><table><thead><tr><th style="text-align:left">Rule</th><th style="text-align:center">🎛️</th><th style="text-align:center">🌟</th><th style="text-align:left">Description</th><th style="text-align:center"><code>react</code></th></tr></thead><tbody><tr><td style="text-align:left"><a href="/docs/rules/rsc-function-definition"><code>function-definition</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🔧</code> <code>🧪</code></td><td style="text-align:left">Validates and transforms React Client/Server Function definitions</td><td style="text-align:center">&gt;=19.0.0</td></tr></tbody></table></div>
26<h2 id="dom-rules" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#dom-rules">DOM Rules</a><button aria-live="polite" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg><span class="sr-only">Copy Anchor Link</span></button></h2>
27<div class="flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md" style="--callout-color:var(--color-fd-info, var(--color-fd-muted))"><div role="none" class="w-0.5 bg-(--callout-color)/50 rounded-sm"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info size-5 -me-0.5 fill-(--callout-color) text-fd-card" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex flex-col gap-2 min-w-0 flex-1"><div class="text-fd-muted-foreground prose-no-margin empty:hidden"><p>DOM rules target <a href="https://react.dev/reference/react#react-dom" rel="noreferrer noopener" target="_blank">React DOM</a>-specific concerns including security vulnerabilities, deprecated APIs, and DOM property usage.</p></div></div></div>
28<div class="relative overflow-auto prose-no-margin my-6"><table><thead><tr><th style="text-align:left">Rule</th><th style="text-align:center">🎛️</th><th style="text-align:center">🌟</th><th style="text-align:left">Description</th><th style="text-align:center"><code>react-dom</code></th></tr></thead><tbody><tr><td style="text-align:left"><a href="/docs/rules/dom-no-dangerously-set-innerhtml"><code>no-dangerously-set-innerhtml</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows DOM elements from using <code>dangerouslySetInnerHTML</code></td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-dangerously-set-innerhtml-with-children"><code>no-dangerously-set-innerhtml-with-children</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows DOM elements from using <code>dangerouslySetInnerHTML</code> and <code>children</code> at the same time</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-find-dom-node"><code>no-find-dom-node</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows <code>findDOMNode</code></td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-flush-sync"><code>no-flush-sync</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows <code>flushSync</code></td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-hydrate"><code>no-hydrate</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🔄</code></td><td style="text-align:left">Replaces usage of <code>ReactDOM.hydrate()</code> with <code>hydrateRoot()</code></td><td style="text-align:center">&gt;=18.0.0</td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-missing-button-type"><code>no-missing-button-type</code></a></td><td style="text-align:center">0️⃣ 1️⃣</td><td style="text-align:center"><code>🔧</code></td><td style="text-align:left">Enforces an explicit <code>type</code> attribute for <code>button</code> elements</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-missing-iframe-sandbox"><code>no-missing-iframe-sandbox</code></a></td><td style="text-align:center">0️⃣ 1️⃣</td><td style="text-align:center"><code>🔧</code></td><td style="text-align:left">Enforces an explicit <code>sandbox</code> attribute for <code>iframe</code> elements</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-render"><code>no-render</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🔄</code></td><td style="text-align:left">Replaces usage of <code>ReactDOM.render()</code> with <code>createRoot(node).render()</code></td><td style="text-align:center">&gt;=18.0.0</td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-render-return-value"><code>no-render-return-value</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows the return value of <code>ReactDOM.render</code></td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-script-url"><code>no-script-url</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows <code>javascript:</code> URLs as attribute values</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-string-style-prop"><code>no-string-style-prop</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows the use of string style prop in JSX. Use an object instead</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-unknown-property"><code>no-unknown-property</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🔧</code> <code>⚙️</code></td><td style="text-align:left">Disallows unknown <code>DOM</code> properties</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-unsafe-iframe-sandbox"><code>no-unsafe-iframe-sandbox</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces that the <code>sandbox</code> attribute for <code>iframe</code> elements is not set to unsafe combinations</td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-unsafe-target-blank"><code>no-unsafe-target-blank</code></a></td><td style="text-align:center">0️⃣ 1️⃣</td><td style="text-align:center"><code>🔧</code></td><td style="text-align:left">Disallows <code>target=&quot;_blank&quot;</code> without <code>rel=&quot;noreferrer noopener&quot;</code></td><td style="text-align:center"></td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-use-form-state"><code>no-use-form-state</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"><code>🔄</code></td><td style="text-align:left">Replaces usage of <code>useFormState</code> with <code>useActionState</code></td><td style="text-align:center">&gt;=19.0.0</td></tr><tr><td style="text-align:left"><a href="/docs/rules/dom-no-void-elements-with-children"><code>no-void-elements-with-children</code></a></td><td style="text-align:center">2️⃣ 2️⃣</td><td style="text-align:center"></td><td style="text-align:left">Disallows <code>children</code> in void DOM elements</td><td style="text-align:center"></td></tr></tbody></table></div>
29<h2 id="web-api-rules" class="group/heading flex scroll-m-28 flex-row items-center gap-1">
29<a data-card="" href="#web-api-rules">Web API Rules</a><button aria-live="polite" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg><span class="sr-only">Copy Anchor Link</span></button></h2>
30<div class="flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md" style="--callout-color:var(--color-fd-info, var(--color-fd-muted))"><div role="none" class="w-0.5 bg-(--callout-color)/50 rounded-sm"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info size-5 -me-0.5 fill-(--callout-color) text-fd-card" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex flex-col gap-2 min-w-0 flex-1"><div class="text-fd-muted-foreground prose-no-margin empty:hidden"><p>Web API rules prevent resource leaks by detecting uncleaned Web API subscriptions in components and hooks.</p></div></div></div>
31<div class="relative overflow-auto prose-no-margin my-6"><table><thead><tr><th style="text-align:left">Rule</th><th style="text-align:center">🎛️</th><th style="text-align:center">🌟</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><a href="/docs/rules/web-api-no-leaked-event-listener"><code>no-leaked-event-listener</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces that every <code>addEventListener</code> in a component or custom hook has a corresponding <code>removeEventListener</code></td></tr><tr><td style="text-align:left"><a href="/docs/rules/web-api-no-leaked-fetch"><code>no-leaked-fetch</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"><code>🧪</code></td><td style="text-align:left">Enforces that every <code>fetch</code> in a component or custom hook has a corresponding <code>AbortController</code> abort in the cleanup function</td></tr><tr><td style="text-align:left"><a href="/docs/rules/web-api-no-leaked-intersection-observer"><code>no-leaked-intersection-observer</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces that every <code>IntersectionObserver</code> created in a component or custom hook has a corresponding <code>IntersectionObserver.disconnect()</code></td></tr><tr><td style="text-align:left"><a href="/docs/rules/web-api-no-leaked-interval"><code>no-leaked-interval</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces that every <code>setInterval</code> in a component or custom hook has a corresponding <code>clearInterval</code></td></tr><tr><td style="text-align:left"><a href="/docs/rules/web-api-no-leaked-resize-observer"><code>no-leaked-resize-observer</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces that every <code>ResizeObserver</code> created in a component or custom hook has a corresponding <code>ResizeObserver.disconnect()</code></td></tr><tr><td style="text-align:left"><a href="/docs/rules/web-api-no-leaked-timeout"><code>no-leaked-timeout</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces that every <code>setTimeout</code> in a component or custom hook has a corresponding <code>clearTimeout</code></td></tr></tbody></table></div>
32<h2 id="naming-convention-rules" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#naming-convention-rules">Naming Convention Rules</a><button aria-live="polite" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg><span class="sr-only">Copy Anchor Link</span></button></h2>
33<div class="flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md" style="--callout-color:var(--color-fd-info, var(--color-fd-muted))"><div role="none" class="w-0.5 bg-(--callout-color)/50 rounded-sm"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info size-5 -me-0.5 fill-(--callout-color) text-fd-card" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex flex-col gap-2 min-w-0 flex-1"><div class="text-fd-muted-foreground prose-no-margin empty:hidden"><p>Naming convention rules enforce consistent naming patterns for <code>React</code> entities.</p></div></div></div>
34<div class="relative overflow-auto prose-no-margin my-6"><table><thead><tr><th style="text-align:left">Rule</th><th style="text-align:center">🎛️</th><th style="text-align:center">🌟</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><a href="/docs/rules/naming-convention-context-name"><code>context-name</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces identifier names assigned from <code>createContext</code> calls to be a valid component name with the suffix <code>Context</code></td></tr><tr><td style="text-align:left"><a href="/docs/rules/naming-convention-id-name"><code>id-name</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces identifier names assigned from <code>useId</code> calls to be either <code>id</code> or end with <code>Id</code></td></tr><tr><td style="text-align:left"><a href="/docs/rules/naming-convention-ref-name"><code>ref-name</code></a></td><td style="text-align:center">1️⃣ 1️⃣</td><td style="text-align:center"></td><td style="text-align:left">Enforces identifier names assigned from <code>useRef</code> calls to be either <code>ref</code> or end with <code>Ref</code></td></tr></tbody></table></div>
35<h2 id="debug-rules" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#debug-rules">Debug Rules</a><button aria-live="polite" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg><span class="sr-only">Copy Anchor Link</span></button></h2>
36<div class="flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md" style="--callout-color:var(--color-fd-warning, var(--color-fd-muted))"><div role="none" class="w-0.5 bg-(--callout-color)/50 rounded-sm"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-triangle-alert lucide-alert-triangle size-5 -me-0.5 fill-(--callout-color) text-fd-card" aria-hidden="true"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"></path><path d="M12 9v4"></path><path d="M12 17h.01"></path></svg><div class="flex flex-col gap-2 min-w-0 flex-1"><div class="text-fd-muted-foreground prose-no-margin empty:hidden"><p>The <code>eslint-plugin-react-debug</code> package is not included in the unified plugin. You need to install and configure it separately.</p><p>These rules are useful for code metrics, code transformation, issue reporting, or when building custom tooling that needs to identify specific patterns. They can also serve as a rule-based alternative to <a href="https://react-docgen.dev/" rel="noreferrer noopener" target="_blank">react-docgen</a>.</p></div></div></div>
37<div class="relative overflow-auto prose-no-margin my-6"><table><thead><tr><th style="text-align:left">Rule</th><th style="text-align:center">🎛️</th><th style="text-align:center">🌟</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><a href="/docs/rules/debug-function-component"><code>function-component</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🐞</code></td><td style="text-align:left">Reports all function components in JSON format</td></tr><tr><td style="text-align:left"><a href="/docs/rules/debug-hook"><code>hook</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🐞</code></td><td style="text-align:left">Reports all React Hooks in JSON format</td></tr><tr><td style="text-align:left"><a href="/docs/rules/debug-is-from-react"><code>is-from-react</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🐞</code></td><td style="text-align:left">Reports all identifiers initialized from React in JSON format</td></tr><tr><td style="text-align:left"><a href="/docs/rules/debug-is-from-ref"><code>is-from-ref</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🐞</code></td><td style="text-align:left">Reports all identifiers initialized or derived from refs in JSON format</td></tr><tr><td style="text-align:left"><a href="/docs/rules/debug-jsx"><code>jsx</code></a></td><td style="text-align:center">0️⃣ 0️⃣</td><td style="text-align:center"><code>🐞</code></td><td style="text-align:left">Reports all JSX elements and fragments in JSON format</td></tr></tbody></table></div></div><div class="@container grid gap-4 grid-cols-2"><a class="flex flex-col gap-2 rounded-lg border p-4 text-sm transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground @max-lg:col-span-full" href="/docs/migrating-from-eslint-plugin-react-hooks"><div class="inline-flex items-center gap-1.5 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left -mx-1 size-4 shrink-0 rtl:rotate-180" aria-hidden="true"><path d="m15 18-6-6 6-6"></path></svg><p>Migrating from eslint-plugin-react-hooks</p></div><p class="text-fd-muted-foreground">Complete guide for migrating from eslint-plugin-react-hooks to ESLint React</p></a><a class="flex flex-col gap-2 rounded-lg border p-4 text-sm transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground @max-lg:col-span-full text-end" href="/docs/rules/error-boundaries"><div class="inline-flex items-center gap-1.5 font-medium flex-row-reverse"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right -mx-1 size-4 shrink-0 rtl:rotate-180" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg><p>error-boundaries</p></div><p class="text-fd-muted-foreground">Validates usage of Error Boundaries instead of try/catch for errors in child components.</p></a></div></article></main><!--$--><!--/$--></div>
37<script src="/_next/static/immutable/chunks/106x4vmnwa9fl.js" id="_R_" async=""></script>
37<script>(self.__next_f=self.__next_f||[]).push([0])</script>
37<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[729409,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"ViewTransitions\"]\n3:I[765984,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\"],\"RootProvider\"]\n4:I[896760,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\"],\"default\"]\n5:I[133243,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\"],\"default\"]\n6:I[281314,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\"],\"LayoutBody\"]\nd:I[295221,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\"],\"default\",1]\n:HL[\"/_next/static/immutable/chunks/0mgjag0vy-zqm.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/2eln7txwhu63m.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/2oo88vu07c3a4.css\",\"style\"]\nb:X\n0:{\"P\":null,\"c\":[\"\",\"docs\",\"rules\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"docs\",{\"children\":[[\"slug\",\"rules\",\"oc\",[]],{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/0mgjag0vy-zqm.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/2eln7txwhu63m.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L2\",null,{\"children\":[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"meta\",null,{\"content\":\"#fff\",\"name\":\"msapplication-TileColor\"}],[\"$\",\"meta\",null,{\"content\":\"en\",\"httpEquiv\":\"Content-Language\"}],[\"$\",\"meta\",null,{\"content\":\"ESLint React\",\"name\":\"apple-mobile-web-app-title\"}],[\"$\",\"meta\",null,{\"content\":\"/ms-icon-144x144.png\",\"name\":\"msapplication-TileImage\"}],[\"$\",\"meta\",null,{\"content\":\"summary_large_image\",\"name\":\"twitter:card\"}],[\"$\",\"meta\",null,{\"content\":\"https://eslint-react.xyz\",\"name\":\"twitter:site\"}],[\"$\",\"link\",null,{\"href\":\"https://eslint-react.xyz/favicon.ico\",\"rel\":\"icon\",\"type\":\"image/x-icon\"}],[\"$\",\"body\",null,{\"className\":\"flex flex-col min-h-screen\",\"children\":[\"$\",\"$L3\",null,{\"theme\":{\"enabled\":true,\"enableSystem\":true},\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\"
37:\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/2oo88vu07c3a4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L6\",null,{\"tree\":{\"type\":\"root\",\"$ref\":{\"folder\":\"\",\"meta\":\"meta.json\"},\"$id\":\"root\",\"name\":\"Documentation\",\"description\":\"$undefined\",\"children\":[{\"type\":\"folder\",\"name\":\"Getting Started\",\"root\":\"$undefined\",\"defaultOpen\":true,\"description\":\"$undefined\",\"collapsible\":\"$undefined\",\"children\":[{\"$id\":\"getting-started/javascript.mdx\",\"type\":\"page\",\"name\":\"JavaScript\",\"description\":\"Getting started using ESLint React in your JavaScript React project\",\"icon\":\"$undefined\",\"url\":\"/docs/getting-started/javascript\",\"$ref\":\"getting-started/javascript.mdx\"},{\"$id\":\"getting-started/typescript.mdx\",\"type\":\"page\",\"name\":\"TypeScript\",\"description\":\"Getting started using ESLint React in your TypeScript React project\",\"icon\":\"$undefined\",\"url\":\"/docs/getting-started/typescript\",\"$ref\":\"getting-started/typescript.mdx\"}],\"$id\":\"getting-started\",\"$ref\":{\"folder\":\"getting-started\",\"meta\":\"getting-started/meta.json\"},\"index\":{\"$id\":\"getting-started/index.mdx\",\"type\":\"page\",\"name\":\"Getting Started\",\"description\":\"Learn how to install and configure ESLint React for your project\",\"icon\":\"$undefined\",\"url\":\"/docs/getting-started\",\"$ref\":\"getting-started/index.mdx\"},\"icon\":\"$undefined\"},{\"$id\":\"migrating-from-eslint-plugin-react.mdx\",\"type\":\"page\",\"name\":\"Migrating from eslint-plugin-react\",\"description\":\"Complete guide for migrating from eslint-plugin-react to ESLint React\",\"icon\":\"$undefined\",\"url\":\"/docs/migrating-from-eslint-plugin-react\",\"$ref\":\"migrating-from-eslint-plugin-react.mdx\"},{\"$id\":\"migrating-from-eslint-plugin-react-hooks.mdx\",\"type\":\"page\",\"name\":\"Migrating from eslint-plugin-react-hooks\",\"description\":\"Complete guide for migrating from eslint-plugin-react-hooks to ESLint React\",\"icon\":\"$undefined\",\"url\":\"/docs/migrating-from-eslint-plugin-react-hooks\",\"$ref\":\"migrating-from-eslint-plugin-react-hooks.mdx\"},{\"$id\":\"_0\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"Core Reference\"},{\"type\":\"folder\",\"name\":\"Rules\",\"root\":\"$undefined\",\"defaultOpen\":\"$undefined\",\"description\":\"$undefined\",\"collapsible\":\"$undefined\",\"children\":[{\"$id\":\"_1\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"X Rules\"},{\"$id\":\"rules/error-boundaries.mdx\",\"type\":\"page\",\"name\":\"error-boundaries\",\"description\":\"Validates usage of Error Boundaries instead of try/catch for errors in child components.\",\"
37icon\":\"$undefined\",\"url\":\"/docs/rules/error-boundaries\",\"$ref\":\"rules/error-boundaries.mdx\"},{\"$id\":\"rules/exhaustive-deps.mdx\",\"type\":\"page\",\"name\":\"exhaustive-deps\",\"description\":\"Verifies the list of dependencies for Hooks like 'useEffect' and similar.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/exhaustive-deps\",\"$ref\":\"rules/exhaustive-deps.mdx\"},{\"$id\":\"rules/globals.mdx\",\"type\":\"page\",\"name\":\"globals\",\"description\":\"Validates against assignment/mutation of globals during render, part of ensuring that side effects must run outside of render.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/globals\",\"$ref\":\"rules/globals.mdx\"},{\"$id\":\"rules/immutability.mdx\",\"type\":\"page\",\"name\":\"immutability\",\"description\":\"Validates against mutating props, state, and other immutable values, including through functions passed into frozen contexts such as JSX props, hook arguments, and hook return values.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/immutability\",\"$ref\":\"rules/immutability.mdx\"},{\"$id\":\"rules/no-access-state-in-setstate.mdx\",\"type\":\"page\",\"name\":\"no-access-state-in-setstate\",\"description\":\"Disallows accessing 'this.state' inside 'setState' calls.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-access-state-in-setstate\",\"$ref\":\"rules/no-access-state-in-setstate.mdx\"},{\"$id\":\"rules/no-array-index-key.mdx\",\"type\":\"page\",\"name\":\"no-array-index-key\",\"description\":\"Disallows using an item's index in the array as its key.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-array-index-key\",\"$ref\":\"rules/no-array-index-key.mdx\"},{\"$id\":\"rules/no-children-count.mdx\",\"type\":\"page\",\"name\":\"no-children-count\",\"description\":\"Disallows the use of 'Children.count' from the 'react' package.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-children-count\",\"$ref\":\"rules/no-children-count.mdx\"},{\"$id\":\"rules/no-children-for-each.mdx\",\"type\":\"page\",\"name\":\"no-children-for-each\",\"description\":\"Disallows the use of 'Children.forEach' from the 'react' package.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-children-for-each\",\"$ref\":\"rules/no-children-for-each.mdx\"},{\"$id\":\"rules/no-children-map.mdx\",\"type\":\"page\",\"name\":\"no-children-map\",\"description\":\"Disallows the use of 'Children.map' from the 'react' package.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-children-map\",\"$ref\":\"rules/no-children-map.mdx\"},{\"$id\":\"rules/no-children-only.mdx\",\"type\":\"page\",\"name\":\"no-children-only\",\"description\":\"Disallows the use of 'Children.only' from the 'react' package.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-children-only\",\"$ref\":\"rules/no-children-only.mdx\"},{\"$id\":\"rules/no-children-to-array.mdx\",\"type\":\"page\",\"name\":\"no-children-to-array\",\"description\":\"Disallows the use of 'Children.toArray' from the 'react' package.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-children-to-array\",\"$ref\":\"rules/no-children-to-array.mdx\"},{\"$id\":\"rules/no-class-component.mdx\",\"type\":\"page\",\"name\":\"no-class-component\",\"description\":\"Disallows class components except for error boundaries.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-class-component\",\"$ref\":\"rules/no-class-component.mdx\"},{\"$id\":\"rules/no-clone-element.mdx\",\"type\":\"page\",\"name\":\"no-clone-element\",\"description\":\"Disallows 'cloneElement'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-clone-element\",\"$ref\":\"rules/no-clone-element.mdx\"},{\"$id\":\"rules/no-component-will-mount.mdx\",\"type\":\"page\",\"name\":\"no-component-will-mount\",\"description\":\"Replaces usage of 'componentWillMount' with 'UNSAFE_componentWillMount'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-component-will-mount\",\"$ref\":\"rules/no-component-will-mount.mdx\"},{\"$id\":\"rules/no-component-will-receive-props.mdx\",\"type\":\"page\",\"name\":\"no-component-will-receive-props\",\"description\":\"Replaces usage of 'componentWillReceiveProps' with 'UNSAFE_componentWillReceiveProps'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-component-will-receive-props\",\"$ref\":\"rules/no-component-will-receive-props.mdx\"},{\"$id\":\"rules/no-component-will-update.mdx\",\"type\":\"page\",\"name\":\"no-component-will-update\",\"description\":\"Replaces usage of 'componentWillUpdate' with 'UNSAFE_componentWillUpdate'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-component-will-update\",\"$ref\":\"rules/no-component-will-update.mdx\"},{\"$id\":\"rules/no-context-provider.mdx\",\"type\":\"page\",\"name\":\"no-context-provider\",\"description\":\"Replaces usage of '\u003cContext.Provider\u003e' with '\u003cContext\u003e'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-context-provider\",\"$ref\":\"rules/no-context-provider.mdx\"},{\"$id\":\"rules/no-create-ref.mdx\",\"type\":\"page\",\"name\":\"no-create-ref\",\"description\":\"Disallows 'createRef' in function components and Hooks.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-create-ref\",\"$ref\":\"rules/no-create-ref.mdx\"},{\"$id\":\"rules/no-direct-mutation-state.mdx\",\"type\":\"page\",\"name\":\"no-direct-mutation-state\",\"description\":\"Disallows direct mutation of 'this.state'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-direct-mutation-state\",\"$ref\":\"rules/no-direct-mutation-state.mdx\"},{\"$id\":\"rules/no-duplicate-key.mdx\",\"type\":\"page\",\"name\":\"no-duplicate-key\",\"description\":\"Prevents duplicate 'key' props on sibling elements when rendering lists.\",\"
37icon\":\"$undefined\",\"url\":\"/docs/rules/no-duplicate-key\",\"$ref\":\"rules/no-duplicate-key.mdx\"},{\"$id\":\"rules/no-forward-ref.mdx\",\"type\":\"page\",\"name\":\"no-forward-ref\",\"description\":\"Replaces usage of 'forwardRef' with passing 'ref' as a prop.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-forward-ref\",\"$ref\":\"rules/no-forward-ref.mdx\"},{\"$id\":\"rules/no-implicit-children.mdx\",\"type\":\"page\",\"name\":\"no-implicit-children\",\"description\":\"Prevents implicitly passing the 'children' prop to components.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-implicit-children\",\"$ref\":\"rules/no-implicit-children.mdx\"},{\"$id\":\"rules/no-implicit-key.mdx\",\"type\":\"page\",\"name\":\"no-implicit-key\",\"description\":\"Prevents implicitly passing the 'key' prop to components.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-implicit-key\",\"$ref\":\"rules/no-implicit-key.mdx\"},{\"$id\":\"rules/no-implicit-ref.mdx\",\"type\":\"page\",\"name\":\"no-implicit-ref\",\"description\":\"Prevents implicitly passing the 'ref' prop to components.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-implicit-ref\",\"$ref\":\"rules/no-implicit-ref.mdx\"},{\"$id\":\"rules/no-leaked-conditional-rendering.mdx\",\"type\":\"page\",\"name\":\"no-leaked-conditional-rendering\",\"description\":\"Prevents problematic leaked values from being rendered.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-leaked-conditional-rendering\",\"$ref\":\"rules/no-leaked-conditional-rendering.mdx\"},{\"$id\":\"rules/no-missing-component-display-name.mdx\",\"type\":\"page\",\"name\":\"no-missing-component-display-name\",\"description\":\"Enforces that all components have a 'displayName' that can be used in DevTools.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-missing-component-display-name\",\"$ref\":\"rules/no-missing-component-display-name.mdx\"},{\"$id\":\"rules/no-missing-context-display-name.mdx\",\"type\":\"page\",\"name\":\"no-missing-context-display-name\",\"description\":\"Enforces that all contexts have a 'displayName' that can be used in DevTools.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-missing-context-display-name\",\"$ref\":\"rules/no-missing-context-display-name.mdx\"},{\"$id\":\"rules/no-missing-key.mdx\",\"type\":\"page\",\"name\":\"no-missing-key\",\"description\":\"Disallows missing 'key' on items in list rendering.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-missing-key\",\"$ref\":\"rules/no-missing-key.mdx\"},{\"$id\":\"rules/no-misused-capture-owner-stack.mdx\",\"type\":\"page\",\"name\":\"no-misused-capture-owner-stack\",\"description\":\"Prevents incorrect usage of 'captureOwnerStack'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-misused-capture-owner-stack\",\"$ref\":\"rules/no-misused-capture-owner-stack.mdx\"},{\"$id\":\"rules/no-nested-component-definitions.mdx\",\"type\":\"page\",\"name\":\"no-nested-component-definitions\",\"description\":\"Disallows nesting component definitions inside other components.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-nested-component-definitions\",\"$ref\":\"rules/no-nested-component-definitions.mdx\"},{\"$id\":\"rules/no-nested-lazy-component-declarations.mdx\",\"type\":\"page\",\"name\":\"no-nested-lazy-component-declarations\",\"description\":\"Disallows nesting lazy component declarations inside other components or hooks.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-nested-lazy-component-declarations\",\"$ref\":\"rules/no-nested-lazy-component-declarations.mdx\"},{\"$id\":\"rules/no-set-state-in-component-did-mount.mdx\",\"type\":\"page\",\"name\":\"no-set-state-in-component-did-mount\",\"description\":\"Disallows calling 'this.setState' in 'componentDidMount' outside functions such as callbacks.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-set-state-in-component-did-mount\",\"$ref\":\"rules/no-set-state-in-component-did-mount.mdx\"},{\"$id\":\"rules/no-set-state-in-component-did-update.mdx\",\"type\":\"page\",\"name\":\"no-set-state-in-component-did-update\",\"description\":\"Disallows calling 'this.setState' in 'componentDidUpdate' outside functions such as callbacks.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-set-state-in-component-did-update\",\"$ref\":\"rules/no-set-state-in-component-did-update.mdx\"},{\"$id\":\"rules/no-set-state-in-component-will-update.mdx\",\"type\":\"page\",\"name\":\"no-set-state-in-component-will-update\",\"description\":\"Disallows calling 'this.setState' in 'componentWillUpdate' outside functions such as callbacks.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-set-state-in-component-will-update\",\"$ref\":\"rules/no-set-state-in-component-will-update.mdx\"},{\"$id\":\"rules/no-unnecessary-use-prefix.mdx\",\"type\":\"page\",\"name\":\"no-u
37nnecessary-use-prefix\",\"description\":\"Enforces that a function with the 'use' prefix uses at least one Hook inside it.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-unnecessary-use-prefix\",\"$ref\":\"rules/no-unnecessary-use-prefix.mdx\"},{\"$id\":\"rules/no-unsafe-component-will-mount.mdx\",\"type\":\"page\",\"name\":\"no-unsafe-component-will-mount\",\"description\":\"Warns about the use of 'UNSAFE_componentWillMount' in class components.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-unsafe-component-will-mount\",\"$ref\":\"rules/no-unsafe-component-will-mount.mdx\"},{\"$id\":\"rules/no-unsafe-component-will-receive-props.mdx\",\"type\":\"page\",\"name\":\"no-unsafe-component-will-receive-props\",\"description\":\"Warns about the use of 'UNSAFE_componentWillReceiveProps' in class components.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-unsafe-component-will-receive-props\",\"$ref\":\"rules/no-unsafe-component-will-receive-props.mdx\"},{\"$id\":\"rules/no-unsafe-component-will-update.mdx\",\"type\":\"page\",\"name\":\"no-unsafe-component-will-update\",\"description\":\"Warns about the use of 'UNSAFE_componentWillUpdate' in class components.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-unsafe-component-will-update\",\"$ref\":\"rules/no-unsafe-component-will-update.mdx\"},{\"$id\":\"rules/no-unstable-context-value.mdx\",\"type\":\"page\",\"name\":\"no-unstable-context-value\",\"description\":\"Prevents non-stable values (i.e., object literals) from being used as a value for 'Context.Provider'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-unstable-context-value\",\"$ref\":\"rules/no-unstable-context-value.mdx\"},{\"$id\":\"rules/no-unstable-default-props.mdx\",\"type\":\"page\",\"name\":\"no-unstable-default-props\",\"description\":\"Prevents using referential-type values as default props in object destructuring.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-unstable-default-props\",\"$ref\":\"rules/no-unstable-default-props.mdx\"},{\"$id\":\"rules/no-unused-class-component-members.mdx\",\"type\":\"page\",\"name\":\"no-unused-class-component-members\",\"description\":\"Warns about unused class component methods and properties.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-unused-class-component-members\",\"$ref\":\"rules/no-unused-class-component-members.mdx\"},{\"$id\":\"rules/no-unused-props.mdx\",\"type\":\"page\",\"name\":\"no-unused-props\",\"description\":\"Warns about component props that are defined but never used.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-unused-props\",\"$ref\":\"rules/no-unused-props.mdx\"},{\"$id\":\"rules/no-unused-state.mdx\",\"type\":\"page\",\"name\":\"no-unused-state\",\"description\":\"Warns about state variables that are defined but never used.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-unused-state\",\"$ref\":\"rules/no-unused-state.mdx\"},{\"$id\":\"rules/no-use-context.mdx\",\"type\":\"page\",\"name\":\"no-use-context\",\"description\":\"Replaces usage of 'useContext' with 'use'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/no-use-context\",\"$ref\":\"rules/no-use-context.mdx\"},{\"$id\":\"rules/purity.mdx\",\"type\":\"page\",\"name\":\"purity\",\"description\":\"Validates that components and hooks are pure by checking that they do not call known-impure functions during render.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/purity\",\"$ref\":\"rules/purity.mdx\"},{\"$id\":\"rules/refs.mdx\",\"type\":\"page\",\"name\":\"refs\",\"description\":\"Validates correct usage of refs by checking that 'ref.current' is not read or written during render.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/refs\",\"$ref\":\"rules/refs.mdx\"},{\"$id\":\"rules/rules-of-hooks.mdx\",\"type\":\"page\",\"name\":\"rules-of-hooks\",\"description\":\"Enforces the Rules of Hooks.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/rules-of-hooks\",\"$ref\":\"rules/rules-of-hooks.mdx\"},{\"$id\":\"rules/set-state-in-effect.mdx\",\"type\":\"page\",\"name\":\"set-state-in-effect\",\"description\":\"Validates against setting state synchronously in an effect, which can lead to re-renders that degrade performance.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/set-state-in-effect\",\"$ref\":\"rules/set-state-in-effect.mdx\"},{\"$id\":\"rules/set-state-in-render.mdx\",\"type\":\"page\",\"name\":\"set-state-in-render\",\"description\":\"Validates against unconditionally setting state during render, which can trigger additional renders and potential infinite render loops.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/set-state-in-render\",\"$ref\":\"rules/set-state-in-render.mdx\"},{\"$id\":\"rules/static-components.mdx\",\"type\":\"page\",\"name\":\"static-components\",\"description\":\"Validates that components are static, not recreated every render.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/static-components\",\"$ref\":\"rules/static-components.mdx\"},{\"$id\":\"rules/unsupported-syntax.mdx\",\"type\":\"page\",\"name\":\"unsupported-syntax\",\"description\":\"Validates against syntax that React Compiler does not support.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/unsupported-syntax\",\"$ref\":\"rules/unsupported-syntax.mdx\"},{\"$id\":\"rules/use-memo.mdx\",\"type\":\"page\",\"name\":\"use-memo\",\"description\":\"Validates that 'useMemo' is called with a callback that returns a value.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/use-memo\",\"$ref\":\"rules/use-memo.mdx\"},{\"$id\":\"rules/use-state.mdx\",\"type\":\"page\",\"name\":\"use-state\",\"description\":\"Enforces correct usage of 'useState', including destructuring, symmetric naming of the value and setter, and wrapping expensive initializer
37s in a lazy initializer function.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/use-state\",\"$ref\":\"rules/use-state.mdx\"},{\"$id\":\"_2\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"JSX Rules\"},{\"$id\":\"rules/jsx-no-children-prop.mdx\",\"type\":\"page\",\"name\":\"no-children-prop\",\"description\":\"Disallows passing 'children' as a prop.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/jsx-no-children-prop\",\"$ref\":\"rules/jsx-no-children-prop.mdx\"},{\"$id\":\"rules/jsx-no-children-prop-with-children.mdx\",\"type\":\"page\",\"name\":\"no-children-prop-with-children\",\"description\":\"Disallows passing 'children' as a prop when children are also passed as nested content.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/jsx-no-children-prop-with-children\",\"$ref\":\"rules/jsx-no-children-prop-with-children.mdx\"},{\"$id\":\"rules/jsx-no-comment-textnodes.mdx\",\"type\":\"page\",\"name\":\"no-comment-textnodes\",\"description\":\"Prevents comment strings from being accidentally inserted into a JSX element's text nodes.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/jsx-no-comment-textnodes\",\"$ref\":\"rules/jsx-no-comment-textnodes.mdx\"},{\"$id\":\"rules/jsx-no-key-after-spread.mdx\",\"type\":\"page\",\"name\":\"no-key-after-spread\",\"description\":\"Prevent patterns that cause deoptimization when using the automatic JSX runtime.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/jsx-no-key-after-spread\",\"$ref\":\"rules/jsx-no-key-after-spread.mdx\"},{\"$id\":\"rules/jsx-no-leaked-dollar.mdx\",\"type\":\"page\",\"name\":\"no-leaked-dollar\",\"description\":\"Catches '$' before '{expr}' in JSX — typically from template literal '${expr}' being copy-pasted into JSX without removing the '$'. The '$' \\\"leaks\\\" into the rendered output.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/jsx-no-leaked-dollar\",\"$ref\":\"rules/jsx-no-leaked-dollar.mdx\"},{\"$id\":\"rules/jsx-no-leaked-semicolon.mdx\",\"type\":\"page\",\"name\":\"no-leaked-semicolon\",\"description\":\"Catches ';' at the start of JSX text nodes — typically from accidentally placing a statement-ending ';' inside JSX. The ';' \\\"leaks\\\" into the rendered output.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/jsx-no-leaked-semicolon\",\"$ref\":\"rules/jsx-no-leaked-semicolon.mdx\"},{\"$id\":\"rules/jsx-no-namespace.mdx\",\"type\":\"page\",\"name\":\"no-namespace\",\"description\":\"Disallow JSX namespace syntax, as React does not support them.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/jsx-no-namespace\",\"$ref\":\"rules/jsx-no-namespace.mdx\"},{\"$id\":\"rules/jsx-no-useless-fragment.mdx\",\"type\":\"page\",\"name\":\"no-useless-fragment\",\"description\":\"Disallows useless fragment elements.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/jsx-no-useless-fragment\",\"$ref\":\"rules/jsx-no-useless-fragment.mdx\"},{\"$id\":\"_3\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"RSC Rules\"},{\"$id\":\"rules/rsc-function-definition.mdx\",\"type\":\"page\",\"name\":\"function-definition\",\"description\":\"Validates and transforms React Client/Server Function definitions.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/rsc-function-definition\",\"$ref\":\"rules/rsc-function-definition.mdx\"},{\"$id\":\"_4\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"DOM Rules\"},{\"$id\":\"rules/dom-no-dangerously-set-innerhtml.mdx\",\"type\":\"page\",\"name\":\"no-dangerously-set-innerhtml\",\"description\":\"Disallows DOM elements from using 'dangerouslySetInnerHTML'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-dangerously-set-innerhtml\",\"$ref\":\"rules/dom-no-dangerously-set-innerhtml.mdx\"},{\"$id\":\"rules/dom-no-dangerously-set-innerhtml-with-children.mdx\",\"type\":\"page\",\"name\":\"no-dangerously-set-innerhtml-with-children\",\"description\":\"Disallows DOM elements from using 'dangerouslySetInnerHTML' and 'children' at the same time.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-dangerously-set-innerhtml-with-children\",\"$ref\":\"rules/dom-no-dangerously-set-innerhtml-with-children.mdx\"},{\"$id\":\"rules/dom-no-find-dom-node.mdx\",\"type\":\"page\",\"name\":\"no-find-dom-node\",\"description\":\"Disallows 'findDOMNode'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-find-dom-node\",\"$ref\":\"rules/dom-no-find-dom-node.mdx\"},{\"$id\":\"rules/dom-no-flush-sync.mdx\",\"type\":\"page\",\"name\":\"no-flush-sync\",\"description\":\"Disallows 'flushSync'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-flush-sync\",\"$ref\":\"rules/dom-no-flush-sync.mdx\"},{\"$id\":\"rules/dom-no-hydrate.mdx\",\"type\":\"page\",\"name\":\"no-hydrate\",\"description\":\"Replaces usage of 'ReactDOM.hydrate()' with 'hydrateRoot()'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-hydrate\",\"$ref\":\"rules/dom-no-hydrate.mdx\"},{\"$id\":\"rules/dom-no-missing-button-type.mdx\",\"type\":\"page\",\"name\":\"no-missing-button-type\",\"description\":\"Enforces an explicit 'type' attribute for 'button' elements.\",\"
37icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-missing-button-type\",\"$ref\":\"rules/dom-no-missing-button-type.mdx\"},{\"$id\":\"rules/dom-no-missing-iframe-sandbox.mdx\",\"type\":\"page\",\"name\":\"no-missing-iframe-sandbox\",\"description\":\"Enforces an explicit 'sandbox' attribute for 'iframe' elements.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-missing-iframe-sandbox\",\"$ref\":\"rules/dom-no-missing-iframe-sandbox.mdx\"},{\"$id\":\"rules/dom-no-render.mdx\",\"type\":\"page\",\"name\":\"no-render\",\"description\":\"Replaces usage of 'ReactDOM.render()' with 'createRoot(node).render()'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-render\",\"$ref\":\"rules/dom-no-render.mdx\"},{\"$id\":\"rules/dom-no-render-return-value.mdx\",\"type\":\"page\",\"name\":\"no-render-return-value\",\"description\":\"Disallows the return value of 'ReactDOM.render'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-render-return-value\",\"$ref\":\"rules/dom-no-render-return-value.mdx\"},{\"$id\":\"rules/dom-no-script-url.mdx\",\"type\":\"page\",\"name\":\"no-script-url\",\"description\":\"Disallows 'javascript:' URLs as attribute values.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-script-url\",\"$ref\":\"rules/dom-no-script-url.mdx\"},{\"$id\":\"rules/dom-no-string-style-prop.mdx\",\"type\":\"page\",\"name\":\"no-string-style-prop\",\"description\":\"Disallows the use of string style prop in JSX. Use an object instead.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-string-style-prop\",\"$ref\":\"rules/dom-no-string-style-prop.mdx\"},{\"$id\":\"rules/dom-no-unknown-property.mdx\",\"type\":\"page\",\"name\":\"no-unknown-property\",\"description\":\"Disallows unknown 'DOM' properties.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-unknown-property\",\"$ref\":\"rules/dom-no-unknown-property.mdx\"},{\"$id\":\"rules/dom-no-unsafe-iframe-sandbox.mdx\",\"type\":\"page\",\"name\":\"no-unsafe-iframe-sandbox\",\"description\":\"Enforces that the 'sandbox' attribute for 'iframe' elements is not set to unsafe combinations.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-unsafe-iframe-sandbox\",\"$ref\":\"rules/dom-no-unsafe-iframe-sandbox.mdx\"},{\"$id\":\"rules/dom-no-unsafe-target-blank.mdx\",\"type\":\"page\",\"name\":\"no-unsafe-target-blank\",\"description\":\"Disallows 'target=\\\"_blank\\\"' without 'rel=\\\"noreferrer noopener\\\"'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-unsafe-target-blank\",\"$ref\":\"rules/dom-no-unsafe-target-blank.mdx\"},{\"$id\":\"rules/dom-no-use-form-state.mdx\",\"type\":\"page\",\"name\":\"no-use-form-state\",\"description\":\"Replaces usage of 'useFormState' with 'useActionState'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-use-form-state\",\"$ref\":\"rules/dom-no-use-form-state.mdx\"},{\"$id\":\"rules/dom-no-void-elements-with-children.mdx\",\"type\":\"page\",\"name\":\"no-void-elements-with-children\",\"description\":\"Disallows 'children' in void DOM elements.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/dom-no-void-elements-with-children\",\"$ref\":\"rules/dom-no-void-elements-with-children.mdx\"},{\"$id\":\"_5\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"Web API Rules\"},{\"$id\":\"rules/web-api-no-leaked-event-listener.mdx\",\"type\":\"page\",\"name\":\"no-leaked-event-listener\",\"description\":\"Enforces that every 'addEventListener' in a component or custom hook has a corresponding 'removeEventListener'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/web-api-no-leaked-event-listener\",\"$ref\":\"rules/web-api-no-leaked-event-listener.mdx\"},{\"$id\":\"rules/web-api-no-leaked-fetch.mdx\",\"type\":\"page\",\"name\":\"no-leaked-fetch\",\"description\":\"Enforces that every 'fetch' in a component or custom hook has a corresponding 'AbortController' abort in the cleanup function.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/web-api-no-leaked-fetch\",\"$ref\":\"rules/web-api-no-leaked-fetch.mdx\"},{\"$id\":\"rules/web-api-no-leaked-intersection-observer.mdx\",\"type\":\"page\",\"name\":\"no-leaked-intersection-observer\",\"description\":\"Enforces that every 'IntersectionObserver' created in a component or custom hook has a corresponding 'IntersectionObserver.disconnect()'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/web-api-no-leaked-intersection-observer\",\"$ref\":\"rules/web-api-no-leaked-intersection-observer.mdx\"},{\"$id\":\"rules/web-api-no-leaked-interval.mdx\",\"type\":\"page\",\"name\":\"no-leaked-interval\",\"description\":\"Enforces that every 'setInterval' in a component or custom hook has a corresponding 'clearInterval'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/web-api-no-leaked-interval\",\"$ref\":\"rules/web-api-no-leaked-interval.mdx\"},{\"$id\":\"rules/web-api-no-leaked-resize-observer.mdx\",\"type\":\"page\",\"name\":\"no-leaked-resize-observer\",\"description\":\"Enforces that every 'ResizeObserver' created in a component or custom hook has a corresponding 'ResizeObserver.disconnect()'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/web-api-no-leaked-resize-observer\",\"$ref\":\"rules/web-api-no-leaked-resize-observer.mdx\"},{\"$id\":\"rules/web-api-no-leaked-timeout.mdx\",\"type\":\"page\",\"name\":\"no-leaked-timeout\",\"description\":\"Enforces that every 'setTimeout' in a component or custom hook has a corresponding 'clearTimeout'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/web-api-no-leaked-timeout\",\"$ref\":\"rules/web-api-no-leaked-timeout.mdx\"},{\"$id\":\"_6\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"Naming Convention Rules\"},{\"$id\":\"rules/naming-convention-context-name.mdx\",\"type\":\"page\",\"name\":\"context-name\",\"description\":\"Enforces identifier names assigned from 'createContext' calls to be a valid component name with the suffix 'Context'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/naming-convention-context-name\",\"$ref\":\"rules/naming-convention-context-name.mdx\"},{\"$id\":\"rules/naming-convention-id-name.mdx\",\"type\":\"page\",\"name\":\"id-name\",\"description\":\"Enforces identifier names assigned from 'useId' calls to be either 'id' or end with 'Id'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/naming-convention-id-name\",\"$ref\":\"rules/naming-convention-id-name.mdx\"},{\"$id\":\"rules/naming-convention-ref-name.mdx\",\"type\":\"page\",\"name\":\"ref
37-name\",\"description\":\"Enforces identifier names assigned from 'useRef' calls to be either 'ref' or end with 'Ref'.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/naming-convention-ref-name\",\"$ref\":\"rules/naming-convention-ref-name.mdx\"},{\"$id\":\"_7\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"Debug Rules\"},{\"$id\":\"rules/debug-function-component.mdx\",\"type\":\"page\",\"name\":\"function-component\",\"description\":\"Reports all function components in JSON format. Useful for debugging. This rule should only be used for debugging purposes; otherwise leave it off.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/debug-function-component\",\"$ref\":\"rules/debug-function-component.mdx\"},{\"$id\":\"rules/debug-hook.mdx\",\"type\":\"page\",\"name\":\"hook\",\"description\":\"Reports all React Hooks in JSON format. Useful for debugging. This rule should be used only for debugging purposes; otherwise, leave it off.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/debug-hook\",\"$ref\":\"rules/debug-hook.mdx\"},{\"$id\":\"rules/debug-is-from-react.mdx\",\"type\":\"page\",\"name\":\"is-from-react\",\"description\":\"Reports all identifiers initialized from React in JSON format. Useful for debugging. This rule should only be used for debugging purposes; otherwise, leave it off.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/debug-is-from-react\",\"$ref\":\"rules/debug-is-from-react.mdx\"},{\"$id\":\"rules/debug-is-from-ref.mdx\",\"type\":\"page\",\"name\":\"is-from-ref\",\"description\":\"Reports all identifiers initialized or derived from refs in JSON format. Useful for debugging. This rule should only be used for debugging purposes; otherwise, leave it off.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/debug-is-from-ref\",\"$ref\":\"rules/debug-is-from-ref.mdx\"},{\"$id\":\"rules/debug-jsx.mdx\",\"type\":\"page\",\"name\":\"jsx\",\"description\":\"Reports all JSX elements and fragments in JSON format. Useful for debugging. This rule should be used only for debugging purposes; otherwise leave it off.\",\"icon\":\"$undefined\",\"url\":\"/docs/rules/debug-jsx\",\"$ref\":\"rules/debug-jsx.mdx\"}],\"$id\":\"rules\",\"$ref\":{\"folder\":\"rules\",\"meta\":\"rules/meta.json\"},\"index\":{\"$id\":\"rules/index.mdx\",\"type\":\"page\",\"name\":\"Rules\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/docs/rules\",\"$ref\":\"rules/index.mdx\"},\"icon\":\"$undefined\"},{\"$id\":\"presets.mdx\",\"type\":\"page\",\"name\":\"Presets\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/docs/presets\",\"$ref\":\"presets.mdx\"},{\"type\":\"folder\",\"name\":\"Recipes\",\"root\":\"$undefined\",\"defaultOpen\":\"$undefined\",\"description\":\"$undefined\",\"collapsible\":\"$undefined\",\"children\":[{\"$id\":\"_8\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"Simple\"},{\"$id\":\"recipes/function-component-definition.mdx\",\"type\":\"page\",\"name\":\"Function Component Definition\",\"description\":\"Enforces arrow function style for function component definitions\",\"icon\":\"$undefined\",\"url\":\"/docs/recipes/function-component-definition\",\"$ref\":\"recipes/function-component-definition.mdx\"},{\"$id\":\"recipes/no-circular-effect.mdx\",\"type\":\"page\",\"name\":\"No Circular Effect\",\"description\":\"Detects circular dependencies between useEffect hooks. Prevents infinite update loops caused by effects that set state they also depend on\",\"icon\":\"$undefined\",\"url\":\"/docs/recipes/no-circular-effect\",\"$ref\":\"recipes/no-circular-effect.mdx\"},{\"$id\":\"recipes/prefer-namespace-import.mdx\",\"type\":\"page\",\"name\":\"Prefer Namespace Import\",\"description\":\"Enforces importing React via a namespace import\",\"icon\":\"$undefined\",\"url\":\"/docs/recipes/prefer-namespace-import\",\"$ref\":\"recipes/prefer-namespace-import.mdx\"},{\"$id\":\"_9\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"Compound\"},{\"$id\":\"recipes/custom-rules-of-props.mdx\",\"type\":\"page\",\"name\":\"Custom Rules Of Props\",\"description\":\"Validates JSX props. Includes checks for duplicate props, mixing controlled and uncontrolled props, explicit spread props, and direct props access\",\"icon\":\"$undefined\",\"url\":\"/docs/recipes/custom-rules-of-props\",\"$ref\":\"recipes/custom-rules-of-props.mdx\"},{\"$id\":\"recipes/custom-rules-of-state.mdx\",\"type\":\"page\",\"name\":\"Custom Rules Of State\",\"description\":\"Validates state usage. Prefer the updater function form in useState setters\",\"icon\":\"$undefined\",\"url\":\"/docs/recipes/custom-rules-of-state\",\"$ref\":\"recipes/custom-rules-of-state.mdx\"},{\"$id\":\"recipes/custom-rules-of-context.mdx\",\"type\":\"page\",\"name\":\"Custom Rules Of Context\",\"description\":\"Validates React Context API usage. Includes checks for 'useContext' and other context-related patterns\",\"icon\":\"$undefined\",\"url\":\"/docs/recipes/custom-rules-of-context\",\"$ref\":\"recipes/custom-rules-of-context.mdx\"}],\"$id\":\"recipes\",\"$ref\":{\"folder\":\"recipes\",\"meta\":\"recipes/meta.json\"},\"index\":{\"$id\":\"recipes/index.mdx\",\"type\":\"page\",\"name\":\"Recipes\",\"description\":\"Ready-to-use custom ESLint rule definitions built with @eslint-react/kit\",\"
37icon\":\"$undefined\",\"url\":\"/docs/recipes\",\"$ref\":\"recipes/index.mdx\"},\"icon\":\"$undefined\"},{\"type\":\"folder\",\"name\":\"Packages\",\"root\":\"$undefined\",\"defaultOpen\":\"$undefined\",\"description\":\"Utility modules for building custom React rules\",\"collapsible\":\"$undefined\",\"children\":[{\"$id\":\"packages/kit.mdx\",\"type\":\"page\",\"name\":\"@eslint-react/kit\",\"description\":\"ESLint React's toolkit for building custom React rules with JavaScript functions\",\"icon\":\"$undefined\",\"url\":\"/docs/packages/kit\",\"$ref\":\"packages/kit.mdx\"}],\"$id\":\"packages\",\"$ref\":{\"folder\":\"packages\",\"meta\":\"packages/meta.json\"},\"index\":{\"$id\":\"packages/index.mdx\",\"type\":\"page\",\"name\":\"Packages\",\"description\":\"Utility modules for building custom React rules\",\"icon\":\"$undefined\",\"url\":\"/docs/packages\",\"$ref\":\"packages/index.mdx\"},\"icon\":\"$undefined\"},{\"type\":\"folder\",\"name\":\"Configuration\",\"root\":\"$undefined\",\"defaultOpen\":\"$undefined\",\"description\":\"$undefined\",\"collapsible\":\"$undefined\",\"children\":[{\"$id\":\"configuration/configure-analyzer.mdx\",\"type\":\"page\",\"name\":\"Configure Analyzer\",\"description\":\"How to configure ESLint React analyzer settings\",\"icon\":\"$undefined\",\"url\":\"/docs/configuration/configure-analyzer\",\"$ref\":\"configuration/configure-analyzer.mdx\"},{\"$id\":\"configuration/configure-project-rules.mdx\",\"type\":\"page\",\"name\":\"Configure Project Rules\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/docs/configuration/configure-project-rules\",\"$ref\":\"configuration/configure-project-rules.mdx\"},{\"$id\":\"configuration/configure-project-config.mdx\",\"type\":\"page\",\"name\":\"Configure Project Config\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/docs/configuration/configure-project-config\",\"$ref\":\"configuration/configure-project-config.mdx\"}],\"$id\":\"configuration\",\"$ref\":{\"folder\":\"configuration\",\"meta\":\"configuration/meta.json\"},\"index\":{\"$id\":\"configuration/index.mdx\",\"type\":\"page\",\"name\":\"Configuration\",\"description\":\"Learn how to configure ESLint React for your project\",\"icon\":\"$undefined\",\"url\":\"/docs/configuration\",\"$ref\":\"configuration/index.mdx\"},\"icon\":\"$undefined\"},{\"$id\":\"_10\",\"type\":\"separator\",\"icon\":\"$undefined\",\"name\":\"Project Information\"},{\"$id\":\"roadmap.md\",\"type\":\"page\",\"name\":\"Roadmap\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/docs/roadmap\",\"$ref\":\"roadmap.md\"},{\"$id\":\"changelog.md\",\"type\":\"page\",\"name\":\"Changelog\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/docs/changelog\",\"$ref\":\"changelog.md\"},{\"$id\":\"faq.mdx\",\"type\":\"page\",\"name\":\"FAQ\",\"description\":\"Frequently asked questions about ESLint React.\",\"icon\":\"$undefined\",\"url\":\"/docs/faq\",\"$ref\":\"faq.mdx\"},{\"$id\":\"glossary.mdx\",\"type\":\"page\",\"name\":\"Glossary\",\"description\":\"A collection of terms and concepts used in ESLint React\",\"icon\":\"$undefined\",\"url\":\"/docs/glossary\",\"$ref\":\"glossary.mdx\"},{\"$id\":\"community.mdx\",\"type\":\"page\",\"name\":\"Community\",\"description\":\"Explore and learn from real-world open-source projects that use ESLint React.\",\"icon\":\"$undefined\",\"url\":\"/docs/community\",\"$ref\":\"community.mdx\"},{\"$id\":\"contributing.mdx\",\"type\":\"page\",\"name\":\"Contributing\",\"description\":\"Monorepo structure and contributing guide for ESLint React\",\"icon\":\"$undefined\",\"url\":\"/docs/contributing\",\"$ref\":\"contributing.mdx\"},{\"$id\":\"third-party-plugins.mdx\",\"type\":\"page\",\"name\":\"Third-Party Plugins\",\"description\":\"High-quality third-party React ESLint plugins that complement ESLint React\",\"icon\":\"$undefined\",\"url\":\"/docs/third-party-plugins\",\"$ref\":\"third-party-plugins.mdx\"}],\"fallback\":{\"type\":\"root\",\"$ref\":{\"folder\":\"\",\"meta\":\"$undefined\"},\"$id\":\"fallback:root\",\"name\":\"Docs\",\"description\":\"$undefined\",\"children\":[{\"$id\":\"fallback:examples.mdx\",\"type\":\"page\",\"name\":\"Examples\",\"description\":\"Start quickly from ready-to-use ESLint React example projects\",\"icon\":\"$undefined\",\"url\":\"/docs/examples\",\"$ref\":\"examples.mdx\"},{\"$id\":\"fallback:migration.mdx\",\"type\":\"page\",\"name\":\"Migration\",\"description\":\"Guides for migrating from other ESLint React plugins to ESLint React\",\"icon\":\"$undefined\",\"url\":\"/docs/migration\",\"$ref\":\"migration.mdx\"},{\"$id\":\"fallback:removed.md\",\"type\":\"page\",\"name\":\"Removed\",\"description\":\"Reference for removed rules, presets, and settings\",\"icon\":\"$undefined\",\"url\":\"/docs/removed\",\"$ref\":\"removed.md\"},{\"type\":\"folder\",\"name\":\"Release Notes\",\"root\":\"$undefined\",\"defaultOpen\":\"$undefined\",\"description\":\"$undefined\",\"collapsible\":\"$undefined\",\"children\":[{\"$id\":\"fallback:release-notes/v5.7.0.mdx\",\"type\":\"page\",\"name\":\"Announcing v5.7.0\",\"description\":\"A maintenance release featuring the fully implemented no-unused-state rule and LTS maintenance mode\",\"icon\":\"$undefined\",\"url\":\"/docs/release-notes/v5.7.0\",\"$ref\":\"release-notes/v5.7.0.mdx\"},{\"$id\":\"fallback:release-notes/v5.6.0.mdx\",\"type\":\"page\",\"name\":\"Announcing v5.6.0\",\"description\":\"A major release featuring core API refactoring, kit API simplification, new rules, and class component support deprecation\",\"icon\":\"$undefined\",\"url\":\"/docs/release-notes/v5.6.0\",\"$ref\":\"release-notes/v5.6.0.mdx\"},{\"$id\":\"fallback:release-notes/v4.2.1.mdx\",\"type\":\"page\",\"name\":\"Announcing v4.2.1\",\"description\":\"A major release introducing a dedicated JSX plugin, new utility package for custom rules, and flattened rule naming\",\"
37icon\":\"$undefined\",\"url\":\"/docs/release-notes/v4.2.1\",\"$ref\":\"release-notes/v4.2.1.mdx\"},{\"$id\":\"fallback:release-notes/v3.0.0.mdx\",\"type\":\"page\",\"name\":\"Announcing v3.0.0\",\"description\":\"A major release with new rules ported from eslint-plugin-react-hooks, consolidated packages, and ESLint v10 support\",\"icon\":\"$undefined\",\"url\":\"/docs/release-notes/v3.0.0\",\"$ref\":\"release-notes/v3.0.0.mdx\"},{\"$id\":\"fallback:release-notes/v2.0.0.mdx\",\"type\":\"page\",\"name\":\"Announcing v2.0.0\",\"description\":\"A major release embracing modern JavaScript standards with powerful new rules and DX improvements\",\"icon\":\"$undefined\",\"url\":\"/docs/release-notes/v2.0.0\",\"$ref\":\"release-notes/v2.0.0.mdx\"}],\"$id\":\"fallback:release-notes\",\"$ref\":{\"folder\":\"release-notes\",\"meta\":\"release-notes/meta.json\"},\"index\":{\"$id\":\"fallback:release-notes/index.mdx\",\"type\":\"page\",\"name\":\"Release Notes\",\"description\":\"Detailed announcements and migration guides for major ESLint React releases\",\"icon\":\"$undefined\",\"url\":\"/docs/release-notes\",\"$ref\":\"release-notes/index.mdx\"},\"icon\":\"$undefined\"}]}},\"tabs\":[],\"tabMode\":\"$undefined\",\"sidebar\":{},\"githubUrl\":\"https://github.com/Rel1cx/eslint-react\",\"links\":[],\"nav\":{\"title\":\"$L7\"},\"children\":\"$L8\"}]]}],{\"children\":[\"$L9\",{\"children\":[\"$La\",{},null,false,null]},null,false,\"$b\"]},null,false,null]},null,false,null],\"$Lc\",false]],\"m\":\"$undefined\",\"G\":[\"$d\",[\"$Le\",\"$Lf\"]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\n10:I[475773,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\"],\"Image\"]\n12:I[828080,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\"],\"OutletBoundary\"]\n13:\"$Sreact.suspense\"\n15:I[828080,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\"],\"ViewportBoundary\"]\n17:I[828080,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\"],\"MetadataBoundary\"]\n7:[\"$\",\"div\",null,{\"className\":\"flex items-between gap-2.5 min-w-max\",\"children\":[[\"$\",\"$L10\",null,{\"alt\":\"logo\",\"height\":\"20\",\"quality\":100,\"src\":{\"src\":\"/_next/static/immutable/media/logo.3u2gx97zostfz.svg\",\"width\":128,\"height\":128,\"blurWidth\":0,\"blurHeight\":0},\"width\":\"20\"}],[\"$\",\"span\",null,{\"children\":\"ESLint React\"}]]}]\n8:[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]\n9:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\na:[\"$\",\"$1\",\"c\",{\"children\":[\"$L11\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$13\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@14\"}]}]]}]\nc:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L15\",null,{\"children\":\"$L16\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L17\",null,{\"children\":[\"$\",\"$13\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L18\"}]}]}],null]}]\ne:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/0mgjag0vy-zqm.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\nf:[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/2eln7txwhu63m.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n19:I[556267,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"DocsPage\"]\n1a:I[556267,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"DocsTitle\"]\n1b:I[556267,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"DocsDescription\"]\n1c:I[556267,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"MarkdownCopyButton\"]\n1d:I[556267,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"ViewOptionsPop
37over\"]\n1e:I[556267,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"DocsBody\"]\n1f:I[774851,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"default\"]\n21:I[513162,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"InlineTOC\"]\n22:I[878601,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"Heading\"]\nb:C\n11:[\"$\",\"$L19\",null,{\"full\":true,\"tableOfContent\":{\"style\":\"clerk\"},\"toc\":[{\"depth\":2,\"url\":\"#x-rules\",\"title\":\"X Rules\"},{\"depth\":2,\"url\":\"#jsx-rules\",\"title\":\"JSX Rules\"},{\"depth\":2,\"url\":\"#rsc-rules\",\"title\":\"RSC Rules\"},{\"depth\":2,\"url\":\"#dom-rules\",\"title\":\"DOM Rules\"},{\"depth\":2,\"url\":\"#web-api-rules\",\"title\":\"Web API Rules\"},{\"depth\":2,\"url\":\"#naming-convention-rules\",\"title\":\"Naming Convention Rules\"},{\"depth\":2,\"url\":\"#debug-rules\",\"title\":\"Debug Rules\"}],\"children\":[[\"$\",\"$L1a\",null,{\"children\":\"Rules\"}],[\"$\",\"$L1b\",null,{\"className\":\"mb-0\",\"children\":\"$undefined\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-row gap-2 items-center border-b pb-6\",\"children\":[[\"$\",\"$L1c\",null,{\"markdownUrl\":\"/llms.mdx/docs/rules/content.md\"}],[\"$\",\"$L1d\",null,{\"githubUrl\":\"https://github.com/Rel1cx/eslint-react/blob/main/content/docs/rules/index.mdx\",\"markdownUrl\":\"/llms.mdx/docs/rules/content.md\"}]]}],[\"$\",\"$L1e\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md\",\"style\":{\"--callout-color\":\"var(--color-fd-info, var(--color-fd-muted))\"},\"children\":[[\"$\",\"div\",null,{\"role\":\"none\",\"className\":\"w-0.5 bg-(--callout-color)/50 rounded-sm\"}],[\"$\",\"$L1f\",null,{\"ref\":\"$undefined\",\"icon\":{\"name\":\"info\",\"size\":24,\"node\":[[\"circle\",{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\",\"key\":\"1mglay\"}],[\"path\",{\"d\":\"M12 16v-4\",\"key\":\"1dtifu\"}],[\"path\",{\"d\":\"M12 8h.01\",\"key\":\"e9boi3\"}]]},\"className\":\"size-5 -me-0.5 fill-(--callout-color) text-fd-card\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-2 min-w-0 flex-1\",\"children\":[\"$undefined\",[\"$\",\"div\",null,{\"className\":\"text-fd-muted-foreground prose-no-margin empty:hidden\",\"children\":[\"$\",\"p\",null,{\"children\":[\"Linter rules can have false positives, false negatives, and some rules depend on the \",[\"$\",\"code\",null,{\"children\":\"react\"}],\" or \",[\"$\",\"code\",null,{\"children\":\"react-dom\"}],\" \",\"$L20\",\" you are using.\"]}]}]]}]]}],\"\\n\",[\"$\",\"$L21\",null,{\"items\":\"$11:props:toc\",\"children\":\"Table of Contents\"}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":\"🌟 Feature - Enhanced or special functionality\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"⚙️ Configurable - Accepts custom options via rule configuration\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"🧪 Experimental - Beta feature, subject to change\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"🐞 Debug - For analysis, metrics, or custom tooling\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"💭 Type Checking - Requires TypeScript type information\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"🔧 Fixable - Provides automatic or interactive fixes\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"🔄 Codemod - Safe AST transformations for deprecations\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"0️⃣ Severity 0 - Disabled by default\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"1️⃣ Severity 1 - Warning level\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"2️⃣ Severity 2 - Error level\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"🎛️ Severity in \",[\"$\",\"code\",null,{\"children\":\"recommended\"}],\" and/or \",[\"$\",\"code\",null,{\"children\":\"strict\"}],\" presets\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"$L22\",null,{\"as\":\"h2\",\"id\":\"x-rules\",\"children\":\"X Rules\"}],\"\\n\",[\"$\",\"div\",null,{\"className\":\"relative overflow-auto prose-no-margin my-6\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"children\":[[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Rule\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🎛️\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🌟\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Description\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"react\"}]}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L23\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Validates usage of Error Boundaries instead of try/catch for errors in child components\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L24\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[[\"$\",\"code\",null,{\"children\":\"⚙️\"}],\" \",[\"$\",\"code\",null,{\"children\":\"🔧\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Verifies the list of dependencies for Hooks like \",[\"$\",\"code\",null,{\"children\":\"useEffect\"}],\" and similar\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L25\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],\"$L26\",\"$L27\",\"$L28\"]}],\"$L29\",\"$L2a\",\"$L2b\",\"$L2c\",\"$L2d\",\"$L2e\",\"$L2f\",\"$L30\",\"$L31\",\"$L32\",\"$L33\",\"$L34\",\"$L35\",\"$L36\",\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\",\"$L3d\",\"$L3e\",\"$L3f\",\"$L40\",\"$L41\",\"$L42\",\"$L43\",\"$L44\",\"$L45\",\"$L46\",\"$L47\",\"$L48\",\"$L49\",\"$L4a\",\"$L4b\",\"$L4c\",\"$L4d\",\"$L4e\",\"$L4f\",\"$L50\",\"$L51\",\"$L52\",\"$L53\",\"$L54\",\"$L55\",\"$L56\",\"$L57\",\"$L58\",\"$L59\",\"$L5a\"]}]]}]}],\"\\n\",\"$L5b\",\"\\n\",\"$L5c\",\"\\n\",\"$L5d\",\"\\n\",\"$L5e\",\"\\n\",\"$L5f\",\"\\n\",\"$L60\",\"\\n\",\"$L61\",\"\\n\",\"$L62\",\"\\n\",\"$L63\",\"\\n\",\"$L64\",\"\\n\",\"$L65\",\"\\n\",\"$L66\",\"\\n\",\"$L67\",\"\\n\",\"$L68\",\"\\n\",\"$L69\",\"\\n\",\"$L6a\",\"\\n\",\"$L6b\",\"\\n\",\"$L6c\"]}]]}]\ncc:I[493925,[\"/_next/static/immutable/chunks/2zqrznxgj7kij.js\",\"/_next/static/immutable/chunks/0uts3wfas4x_k.js\",\"/_next/static/immutable/chunks/2m3ei9w7ks0sy.js\",\"/_next/static/immutable/chunks/0o7yqmkkgnah6.js\",\"/_next/static/immutable/chunks/0fb-exb51sj5t.js\",\"/_next/static/immutable/chunks/0s2qqkby3clkh.js\",\"/_next/static/immutable/chunks/1opi621w-o0qg.js\",\"/_next/static/immutable/chunks/07r_pzvoq9dap.js\",\"/_next/static/immutable/chunks/33ptm2_z_riyr.js\"],\"default\"]\n26:[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🧪\"}]}]\n27:[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Validates against assignment/mutation of globals during render, part of ensuring that side effects must run outside of render\"}]\n28:[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]\n29:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L6d\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🧪\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Validates against mutating props, state, and other immutable values, including through functions passed into frozen contexts such as JSX props, hook arguments, and hook return values\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n2a:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L6e\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows accessing \",[\"$\",\"code\",null,{\"children\":\"this.state\"}],\" inside \",[\"$\",\"code\",null,{\"children\":\"setState\"}],\" calls\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n2b:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L6f\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Disallows using an item's index in the array as its key\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n2c:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L70\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows the use of \",[\"$\",\"code\",null,{\"children\":\"Children.count\"}],\" from the \",[\"$\",\"code\",null,{\"children\":\"react\"}],\" package\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n2d:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L71\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows the use of \",[\"$\",\"code\",null,{\"children\":\"Children.forEac
37h\"}],\" from the \",[\"$\",\"code\",null,{\"children\":\"react\"}],\" package\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n2e:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L72\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows the use of \",[\"$\",\"code\",null,{\"children\":\"Children.map\"}],\" from the \",[\"$\",\"code\",null,{\"children\":\"react\"}],\" package\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n2f:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L73\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows the use of \",[\"$\",\"code\",null,{\"children\":\"Children.only\"}],\" from the \",[\"$\",\"code\",null,{\"children\":\"react\"}],\" package\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n30:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L74\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows the use of \",[\"$\",\"code\",null,{\"children\":\"Children.toArray\"}],\" from the \",[\"$\",\"code\",null,{\"children\":\"react\"}],\" package\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n31:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L75\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Disallows class components except for error boundaries\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n32:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L76\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows \",[\"$\",\"code\",null,{\"children\":\"cloneElement\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n33:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L77\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔄\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Replaces usage of \",[\"$\",\"code\",null,{\"children\":\"componentWillMount\"}],\" with \",[\"$\",\"code\",null,{\"children\":\"UNSAFE_componentWillMount\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=16.3.0\"}]]}]\n34:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L78\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔄\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Replaces usage of \",[\"$\",\"code\",null,{\"children\":\"componentWillReceiveProps\"}],\" with \",[\"$\",\"code\",null,{\"children\":\"UNSAFE_componentWillReceiveProps\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=16.3.0\"}]]}]\n35:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L79\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔄\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Replaces usage of \",[\"$\",\"code\",null,{\"children\":\"componentWillUpdate\"}],\" with \",[\"$\",\"code\",null,{\"children\":\"UNSAFE_componentWillUpdate\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=16.3.0\"}]]}]\n36:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L7a\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔄\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Replaces usage of \",[\"$\",\"code\",null,{\"children\":\"\u003cContext.Provider\u003e\"}],\" with \",[\"$\",\"code\",null,{\"children\":\"\u003cContext\u003e\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=19.0.0\"}]]}]\n37:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L7b\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows \",[\"$\",\"code\",null,{\"children\":\"createRef\"}],\" in function components and Hooks\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n38:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L7c\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows direct mutation of \",[\"$\",\"code\",null,{\"children\":\"this.state\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n39:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L7d\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🧪\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Prevents duplicate \",[\"$\",\"code\",null,{\"children\":\"key\"}],\" props on sibling elements when rendering lists\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n3a:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L7e\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔄\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Replaces usage of \",[\"$\",\"code\",null,{\"children\":\"forwardRef\"}],\" with passing \",[\"$\",\"code\",null,{\"children\":\"ref\"}],\" as a prop\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=19.0.0\"}]]}]\n3b:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L7f\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[[\"$\",\"code\",null,{\"children\":\"💭\"}],\" \",[\"$\",\"code\",null,{\"children\":\"🧪\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Prevents implicitly passing the \",[\"$\",\"code\",null,{\"children\":\"children\"}],\" prop to components\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n3c:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L80\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[[\"$\",\"code\",null,{\"children\":\"💭\"}],\" \",[\"$\",\"code\",null,{\"children\":\"🧪\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Prevents implicitly passing the \",[\"$\",\"code\",null,{\"children\":\"key\"}],\" prop to components\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n3d:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L81\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[[\"$\",\"code\",null,{\"children\":\"💭\"}],\" \",[\"$\",\"code\",null,{\"children\":\"🧪\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Prevents implicitly passing the \",[\"$\",\"code\",null,{\"children\":\"ref\"}],\" prop to components\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n3e:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L82\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"💭\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Prevents problematic leaked values from being rendered\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n3f:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L83\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"}
37,\"children\":[\"Enforces that all components have a \",[\"$\",\"code\",null,{\"children\":\"displayName\"}],\" that can be used in DevTools\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n40:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L84\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔧\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces that all contexts have a \",[\"$\",\"code\",null,{\"children\":\"displayName\"}],\" that can be used in DevTools\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n41:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L85\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows missing \",[\"$\",\"code\",null,{\"children\":\"key\"}],\" on items in list rendering\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n42:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L86\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🧪\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Prevents incorrect usage of \",[\"$\",\"code\",null,{\"children\":\"captureOwnerStack\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n43:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L87\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Disallows nesting component definitions inside other components\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n44:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L88\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Disallows nesting lazy component declarations inside other components or hooks\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n45:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L89\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows calling \",[\"$\",\"code\",null,{\"children\":\"this.setState\"}],\" in \",[\"$\",\"code\",null,{\"children\":\"componentDidMount\"}],\" outside functions such as callbacks\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n46:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L8a\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows calling \",[\"$\",\"code\",null,{\"children\":\"this.setState\"}],\" in \",[\"$\",\"code\",null,{\"children\":\"componentDidUpdate\"}],\" outside functions such as callbacks\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n47:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L8b\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows calling \",[\"$\",\"code\",null,{\"children\":\"this.setState\"}],\" in \",[\"$\",\"code\",null,{\"children\":\"componentWillUpdate\"}],\" outside functions such as callbacks\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n48:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L8c\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces that a function with the \",[\"$\",\"code\",null,{\"children\":\"use\"}],\" prefix uses at least one Hook inside it\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n49:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L8d\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Warns about the use of \",[\"$\",\"code\",null,{\"children\":\"UNSAFE_componentWillMount\"}],\" in class components\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n4a:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L8e\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Warns about the use of \",[\"$\",\"code\",null,{\"children\":\"UNSAFE_componentWillReceiveProps\"}],\" in class components\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n4b:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L8f\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Warns about the use of \",[\"$\",\"code\",null,{\"children\":\"UNSAFE_componentWillUpdate\"}],\" in class components\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n4c:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L90\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Prevents non-stable values (i.e., object literals) from being used as a value for \",[\"$\",\"code\",null,{\"children\":\"Context.Provider\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n4d:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L91\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"⚙️\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Prevents using referential-type values as default props in object destructuring\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n4e:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L92\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Warns about unused class component methods and properties\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n4f:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L93\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[[\"$\",\"code\",null,{\"children\":\"💭\"}],\" \",[\"$\",\"code\",null,{\"children\":\"🧪\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Warns about component props that are defined but never used\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n50:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L94\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🧪\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Warns about state variables that are defined but never used\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n51:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L95\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔄\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Replaces usage of \",[\"$\",\"code\",null,{\"children\":\"useContext\"}],\" with \",[\"$\",\"code\",null,{\"children\":\"use\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=19.0.0\"}]]}]\n52:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L96\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Validates that components and hooks are pure by checking that they do not call known-impure functions during render\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n53:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L97\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🧪\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Validates correct usage of refs by checking that \",[\"$\",\"code\",null,{\"children\":\"ref.current\"}],\" is not read or written during render\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n54:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L98\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[[\"$\",\"code\",null,{\"children\":\"⚙️\"}],\" \",[\"$\",\"code\",null,{\"children\":\"🔧\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Enforces the Rules of Hooks\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n55:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L99\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Validates against setting state synchronously in an effect, which can lead to re-renders that degrade performance\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n56:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L9a\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🧪\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Validates against unconditionally setting state during render, which can trigger additional renders and potential infinite render loops\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n57:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L9b\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🧪\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Validates that components are static, not recreated every render\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n58:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L9c\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Validates against syntax that React Compiler does not support\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n59:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L9d\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Validates that \",[\"$\",\"code\",null,{\"children\":\"useMemo\"}],\" is called with a callback that returns a value\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n5a:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L9e\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"⚙️\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces correct usage of \",[\"$\",\"code\",null,{\"children\":\"useState\"}],\", including destructuring, symmetric naming of the value and setter, and wrapping expensive initializer
37s in a lazy initializer function\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n5b:[\"$\",\"$L22\",null,{\"as\":\"h2\",\"id\":\"jsx-rules\",\"children\":\"JSX Rules\"}]\n5c:[\"$\",\"div\",null,{\"className\":\"flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md\",\"style\":{\"--callout-color\":\"var(--color-fd-info, var(--color-fd-muted))\"},\"children\":[[\"$\",\"div\",null,{\"role\":\"none\",\"className\":\"w-0.5 bg-(--callout-color)/50 rounded-sm\"}],[\"$\",\"$L1f\",null,{\"ref\":\"$undefined\",\"icon\":\"$11:props:children:3:props:children:0:props:children:1:props:icon\",\"className\":\"size-5 -me-0.5 fill-(--callout-color) text-fd-card\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-2 min-w-0 flex-1\",\"children\":[\"$undefined\",[\"$\",\"div\",null,{\"className\":\"text-fd-muted-foreground prose-no-margin empty:hidden\",\"children\":[\"$\",\"p\",null,{\"children\":[\"JSX rules check for issues exclusive to JSX syntax, which are absent from standard JavaScript (like handwritten \",[\"$\",\"code\",null,{\"children\":\"createElement()\"}],\" calls).\"]}]}]]}]]}]\n5d:[\"$\",\"div\",null,{\"className\":\"relative overflow-auto prose-no-margin my-6\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"children\":[[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Rule\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🎛️\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🌟\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Description\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"react\"}]}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$L9f\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔧\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows passing \",[\"$\",\"code\",null,{\"children\":\"children\"}],\" as a prop\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$La0\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔧\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows passing \",[\"$\",\"code\",null,{\"children\":\"children\"}],\" as a prop when children are also passed as nested content\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$La1\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Prevents comment strings from being accidentally inserted into a JSX element's text nodes\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$La2\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Prevent patterns that cause deoptimization when using the automatic JSX runtime\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$La3\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔧\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Catches \",[\"$\",\"code\",null,{\"children\":\"$$\"}],\" before \",[\"$\",\"code\",null,{\"children\":\"{expr}\"}],\" in JSX — typically from template literal \",[\"$\",\"code\",null,{\"children\":\"$${expr}\"}
37],\" being copy-pasted into JSX without removing the \",[\"$\",\"code\",null,{\"children\":\"$$\"}],\". The \",[\"$\",\"code\",null,{\"children\":\"$$\"}],\" \\\"leaks\\\" into the rendered output\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$La4\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔧\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Catches \",[\"$\",\"code\",null,{\"children\":\";\"}],\" at the start of JSX text nodes — typically from accidentally placing a statement-ending \",[\"$\",\"code\",null,{\"children\":\";\"}],\" inside JSX. The \",[\"$\",\"code\",null,{\"children\":\";\"}],\" \\\"leaks\\\" into the rendered output\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$La5\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Disallow JSX namespace syntax, as React does not support them\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$La6\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[[\"$\",\"code\",null,{\"children\":\"⚙️\"}],\" \",[\"$\",\"code\",null,{\"children\":\"🔧\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Disallows useless fragment elements\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]]}]]}]}]\n5e:[\"$\",\"$L22\",null,{\"as\":\"h2\",\"id\":\"rsc-rules\",\"children\":\"RSC Rules\"}]\n5f:[\"$\",\"div\",null,{\"className\":\"flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md\",\"style\":{\"--callout-color\":\"var(--color-fd-info, var(--color-fd-muted))\"},\"children\":[[\"$\",\"div\",null,{\"role\":\"none\",\"className\":\"w-0.5 bg-(--callout-color)/50 rounded-sm\"}],[\"$\",\"$L1f\",null,{\"ref\":\"$undefined\",\"icon\":\"$11:props:children:3:props:children:0:props:children:1:props:icon\",\"className\":\"size-5 -me-0.5 fill-(--callout-color) text-fd-card\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-2 min-w-0 flex-1\",\"children\":[\"$undefined\",[\"$\",\"div\",null,{\"className\":\"text-fd-muted-foreground prose-no-margin empty:hidden\",\"children\":[\"$\",\"p\",null,{\"children\":[\"RSC rules target \",\"$La7\",\", \",\"$La8\",\" and \",\"$La9\",\".\"]}]}]]}]]}]\n60:[\"$\",\"div\",null,{\"className\":\"relative overflow-auto prose-no-margin my-6\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"children\":[[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Rule\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🎛️\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🌟\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Description\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"react\"}]}]]}]}],[\"$\",\"tbody\",null,{\"children\":[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Laa\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[[\"$\",\"code\",null,{\"children\":\"🔧\"}],\" \",[\"$\",\"code\",null,{\"children\":\"🧪\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Validates and transforms React Client/Server Function definitions\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=19.0.0\"}]]}]}]]}]}]\n61:[\"$\",\"$L22\",null,{\"as\":\"h2\",\"id\":\"dom-rules\",\"children\":\"DOM Rules\"}
37]\n62:[\"$\",\"div\",null,{\"className\":\"flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md\",\"style\":{\"--callout-color\":\"var(--color-fd-info, var(--color-fd-muted))\"},\"children\":[[\"$\",\"div\",null,{\"role\":\"none\",\"className\":\"w-0.5 bg-(--callout-color)/50 rounded-sm\"}],[\"$\",\"$L1f\",null,{\"ref\":\"$undefined\",\"icon\":\"$11:props:children:3:props:children:0:props:children:1:props:icon\",\"className\":\"size-5 -me-0.5 fill-(--callout-color) text-fd-card\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-2 min-w-0 flex-1\",\"children\":[\"$undefined\",[\"$\",\"div\",null,{\"className\":\"text-fd-muted-foreground prose-no-margin empty:hidden\",\"children\":[\"$\",\"p\",null,{\"children\":[\"DOM rules target \",\"$Lab\",\"-specific concerns including security vulnerabilities, deprecated APIs, and DOM property usage.\"]}]}]]}]]}]\n63:[\"$\",\"div\",null,{\"className\":\"relative overflow-auto prose-no-margin my-6\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"children\":[[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Rule\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🎛️\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🌟\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Description\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"react-dom\"}]}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lac\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows DOM elements from using \",[\"$\",\"code\",null,{\"children\":\"dangerouslySetInnerHTML\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lad\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows DOM elements from using \",[\"$\",\"code\",null,{\"children\":\"dangerouslySetInnerHTML\"}],\" and \",[\"$\",\"code\",null,{\"children\":\"children\"}],\" at the same time\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lae\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows \",[\"$\",\"code\",null,{\"children\":\"findDOMNode\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Laf\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows \",[\"$\",\"code\",null,{\"children\":\"flushSync\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lb0\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔄\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Replaces usage of \",[\"$\",\"code\",null,{\"children\":\"ReactDOM.hydrate()\"}],\" with \",[\"$\",\"code\",null,{\"children\":\"hydrateRoot()\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=18.0.0\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lb1\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔧\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces an explicit \",[\"$\",\"code\",null,{\"children\":\"type\"}],\" attribute for \",[\"$\",\"code\",null,{\"children\":\"button\"}],\" elements\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lb2\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔧\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces an explicit \",[\"$\",\"code\",null,{\"children\":\"sandbox\"}],\" attribute for \",[\"$\",\"code\",null,{\"children\":\"iframe\"}],\" elements\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lb3\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔄\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Replaces usage of \",[\"$\",\"code\",null,{\"children\":\"ReactDOM.render()\"}],\" with \",[\"$\",\"code\",null,{\"children\":\"createRoot(node).render()\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=18.0.0\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lb4\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows the return value of \",[\"$\",\"code\",null,{\"children\":\"ReactDOM.render\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lb5\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows \",[\"$\",\"code\",null,{\"children\":\"javascript:\"}],\" URLs as attribute values\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lb6\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Disallows the use of string style prop in JSX. Use an object instead\"}],\"$Lb7\"]}],\"$Lb8\",\"$Lb9\",\"$Lba\",\"$Lbb\",\"$Lbc\"]}]]}]}]\n64:[\"$\",\"$L22\",null,{\"as\":\"h2\",\"id\":\"web-api-rules\",\"children\":\"Web API Rules\"}
37]\n65:[\"$\",\"div\",null,{\"className\":\"flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md\",\"style\":{\"--callout-color\":\"var(--color-fd-info, var(--color-fd-muted))\"},\"children\":[[\"$\",\"div\",null,{\"role\":\"none\",\"className\":\"w-0.5 bg-(--callout-color)/50 rounded-sm\"}],[\"$\",\"$L1f\",null,{\"ref\":\"$undefined\",\"icon\":\"$11:props:children:3:props:children:0:props:children:1:props:icon\",\"className\":\"size-5 -me-0.5 fill-(--callout-color) text-fd-card\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-2 min-w-0 flex-1\",\"children\":[\"$undefined\",[\"$\",\"div\",null,{\"className\":\"text-fd-muted-foreground prose-no-margin empty:hidden\",\"children\":[\"$\",\"p\",null,{\"children\":\"Web API rules prevent resource leaks by detecting uncleaned Web API subscriptions in components and hooks.\"}]}]]}]]}]\n66:[\"$\",\"div\",null,{\"className\":\"relative overflow-auto prose-no-margin my-6\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"children\":[[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Rule\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🎛️\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🌟\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Description\"}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lbd\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces that every \",[\"$\",\"code\",null,{\"children\":\"addEventListener\"}],\" in a component or custom hook has a corresponding \",[\"$\",\"code\",null,{\"children\":\"removeEventListener\"}]]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lbe\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🧪\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces that every \",[\"$\",\"code\",null,{\"children\":\"fetch\"}],\" in a component or custom hook has a corresponding \",[\"$\",\"code\",null,{\"children\":\"AbortController\"}],\" abort in the cleanup function\"]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lbf\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces that every \",[\"$\",\"code\",null,{\"children\":\"IntersectionObserver\"}],\" created in a component or custom hook has a corresponding \",[\"$\",\"code\",null,{\"children\":\"IntersectionObserver.disconnect()\"}]]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lc0\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces that every \",[\"$\",\"code\",null,{\"children\":\"setInterval\"}],\" in a component or custom hook has a corresponding \",[\"$\",\"code\",null,{\"children\":\"clearInterval\"}]]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lc1\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces that every \",[\"$\",\"code\",null,{\"children\":\"ResizeObserver\"}],\" created in a component or custom hook has a corresponding \",[\"$\",\"code\",null,{\"children\":\"ResizeObserver.disconnect()\"}]]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lc2\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces that every \",[\"$\",\"code\",null,{\"children\":\"setTimeout\"}],\" in a component or custom hook has a corresponding \",[\"$\",\"code\",null,{\"children\":\"clearTimeout\"}]]}]]}]]}]]}]}]\n67:[\"$\",\"$L22\",null,{\"as\":\"h2\",\"id\":\"naming-convention-rules\",\"children\":\"Naming Convention Rules\"}
37]\n68:[\"$\",\"div\",null,{\"className\":\"flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md\",\"style\":{\"--callout-color\":\"var(--color-fd-info, var(--color-fd-muted))\"},\"children\":[[\"$\",\"div\",null,{\"role\":\"none\",\"className\":\"w-0.5 bg-(--callout-color)/50 rounded-sm\"}],[\"$\",\"$L1f\",null,{\"ref\":\"$undefined\",\"icon\":\"$11:props:children:3:props:children:0:props:children:1:props:icon\",\"className\":\"size-5 -me-0.5 fill-(--callout-color) text-fd-card\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-2 min-w-0 flex-1\",\"children\":[\"$undefined\",[\"$\",\"div\",null,{\"className\":\"text-fd-muted-foreground prose-no-margin empty:hidden\",\"children\":[\"$\",\"p\",null,{\"children\":[\"Naming convention rules enforce consistent naming patterns for \",[\"$\",\"code\",null,{\"children\":\"React\"}],\" entities.\"]}]}]]}]]}]\n69:[\"$\",\"div\",null,{\"className\":\"relative overflow-auto prose-no-margin my-6\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"children\":[[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Rule\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🎛️\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🌟\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Description\"}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lc3\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces identifier names assigned from \",[\"$\",\"code\",null,{\"children\":\"createContext\"}],\" calls to be a valid component name with the suffix \",[\"$\",\"code\",null,{\"children\":\"Context\"}]]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lc4\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces identifier names assigned from \",[\"$\",\"code\",null,{\"children\":\"useId\"}],\" calls to be either \",[\"$\",\"code\",null,{\"children\":\"id\"}],\" or end with \",[\"$\",\"code\",null,{\"children\":\"Id\"}]]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lc5\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces identifier names assigned from \",[\"$\",\"code\",null,{\"children\":\"useRef\"}],\" calls to be either \",[\"$\",\"code\",null,{\"children\":\"ref\"}],\" or end with \",[\"$\",\"code\",null,{\"children\":\"Ref\"}]]}]]}]]}]]}]}]\n6a:[\"$\",\"$L22\",null,{\"as\":\"h2\",\"id\":\"debug-rules\",\"children\":\"Debug Rules\"}]\n6b:[\"$\",\"div\",null,{\"className\":\"flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md\",\"style\":{\"--callout-color\":\"var(--color-fd-warning, var(--color-fd-muted))\"},\"children\":[[\"$\",\"div\",null,{\"role\":\"none\",\"className\":\"w-0.5 bg-(--callout-color)/50 rounded-sm\"}],[\"$\",\"$L1f\",null,{\"ref\":\"$undefined\",\"icon\":{\"name\":\"triangle-alert\",\"size\":24,\"node\":[[\"path\",{\"d\":\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\"key\":\"wmoenq\"}],[\"path\",{\"d\":\"M12 9v4\",\"key\":\"juzpu7\"}],[\"path\",{\"d\":\"M12 17h.01\",\"key\":\"p32p05\"}]],\"aliases\":[\"alert-triangle\"]},\"className\":\"size-5 -me-0.5 fill-(--callout-color) text-fd-card\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-2 min-w-0 flex-1\",\"children\":[\"$undefined\",[\"$\",\"div\",null,{\"className\":\"text-fd-muted-foreground prose-no-margin empty:hidden\",\"children\":[[\"$\",\"p\",null,{\"children\":[\"The \",[\"$\",\"code\",null,{\"children\":\"eslint-plugin-react-debug\"}],\" package is not included in the unified plugin. You need to install and configure it separately.\"]}],[\"$\",\"p\",null,{\"children\":[\"These rules are useful for code metrics, code transformation, issue reporting, or when building custom tooling that needs to identify specific patterns. They can also serve as a rule-based alternative to \",\"$Lc6\",\".\"]}]]}]]}]]}]\n6c:[\"$\",\"div\",null,{\"className\":\"relative overflow-auto prose-no-margin my-6\",\"children\":[\"$\",\"table\",null,{\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"children\":[[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Rule\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🎛️\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"🌟\"}],[\"$\",\"th\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Description\"}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lc7\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🐞\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Reports all function components in JSON format\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lc8\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🐞\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Reports all React Hooks in JSON format\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lc9\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🐞\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Reports all identifiers initialized from React in JSON format\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lca\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🐞\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Reports all identifiers initialized or derived from refs in JSON format\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lcb\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🐞\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"Reports all JSX elements and fragments in JSON format\"}]]}]]}]]}]}]\n20:[\"$\",\"$Lcc\",null,{\"href\":\"https://react.dev/versions\",\"children\":\"version\"}]\n23:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/error-boundaries\",\"children\":[\"$\",\"code\",null,{\"children\":\"error-boundaries\"}]}]\n24:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/exhaustive-deps\",\"children\":[\"$\",\"code\",null,{\"children\":\"exhaustive-deps\"}]}]\n25:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/globals\",\"children\":[\"$\",\"code\",null,{\"children\":\"globals\"}]}]\nb7:[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]\nb8:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lcd\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 0️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[[\"$\",\"code\",null,{\"children\":\"🔧\"}],\" \",[\"$\",\"code\",null,{\"children\":\"⚙️\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows unknown \",[\"$\",\"code\",null,{\"children\":\"DOM\"}],\" properties\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\nb9:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lce\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"1️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Enforces that the \",[\"$\",\"code\",null,{\"children\":\"sandbox\"}],\" attribute for \",[\"$\",\"code\",null,{\"children\":\"iframe\"}],\" elements is not set to unsafe combinations\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\nba:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Lcf\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"0️⃣ 1️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔧\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows \",[\"$\",\"code\",null,{\"children\":\"target=\\\"_blank\\\"\"}],\" without \",[\"$\",\"code\",null,{\"children\":\"rel=\\\"noreferrer noopener\\\"\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\nbb:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Ld0\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":[\"$\",\"code\",null,{\"children\":\"🔄\"}]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Replaces usage of \",[\"$\",\"code\",null,{\"children\":\"useFormState\"}],\" with \",[\"$\",\"code\",null,{\"children\":\"useActionState\"}]]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"\u003e=19.0.0\"}]]}]\nbc:[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":\"$Ld1\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"},\"children\":\"2️⃣ 2️⃣\"}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"left\"},\"children\":[\"Disallows \",[\"$\",\"code\",null,{\"children\":\"children\"}],\" in void DOM elements\"]}],[\"$\",\"td\",null,{\"style\":{\"textAlign\":\"center\"}}]]}]\n6d:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/immutability\",\"children\":[\"$\",\"code\",null,{\"children\":\"immutability\"}]}]\n6e:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-access-state-in-setstate\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-access-state-in-setstate\"}]}]\n6f:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-array-index-key\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-array-index-key\"}]}]\n70:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-children-count\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-children-count\"}]}]\n71:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-children-for-each\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-children-for-each\"}]}]\n72:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-children-map\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-children-map\"}]}]\n73:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-children-only\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-children-only\"}]}]\n74:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-children-to-array\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-children-to-array\"}]}]\n75:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-class-component\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-class-component\"}]}]\n76:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-clone-element\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-clone-element\"}]}]\n77:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-component-will-mount\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-component-will-mount\"}]}]\n78:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-component-will-receive-props\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-component-will-receive-props\"}]}]\n79:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-component-will-update\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-component-will-update\"}]}]\n7a:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-context-provider\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-context-provider\"}]}]\n7b:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-create-ref\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-create-ref\"}]}]\n7c:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-direct-mutation-state\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-direct-mutation-state\"}]}]\n7d:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-duplicate-key\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-duplicate-key\"}]}]\n7e:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-forward-ref\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-forward-ref\"}]}]\n7f:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-implicit-children\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-implicit-children\"}]}]\n80:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-implicit-key\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-implicit-key\"}]}]\n81:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-implicit-ref\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-implicit-ref\"}]}
37]\n82:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-leaked-conditional-rendering\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-leaked-conditional-rendering\"}]}]\n83:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-missing-component-display-name\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-missing-component-display-name\"}]}]\n84:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-missing-context-display-name\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-missing-context-display-name\"}]}]\n85:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-missing-key\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-missing-key\"}]}]\n86:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-misused-capture-owner-stack\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-misused-capture-owner-stack\"}]}]\n87:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-nested-component-definitions\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-nested-component-definitions\"}]}]\n88:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-nested-lazy-component-declarations\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-nested-lazy-component-declarations\"}]}]\n89:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-set-state-in-component-did-mount\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-set-state-in-component-did-mount\"}]}]\n8a:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-set-state-in-component-did-update\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-set-state-in-component-did-update\"}]}]\n8b:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-set-state-in-component-will-update\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-set-state-in-component-will-update\"}]}]\n8c:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-unnecessary-use-prefix\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unnecessary-use-prefix\"}]}]\n8d:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-unsafe-component-will-mount\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unsafe-component-will-mount\"}]}]\n8e:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-unsafe-component-will-receive-props\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unsafe-component-will-receive-props\"}]}]\n8f:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-unsafe-component-will-update\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unsafe-component-will-update\"}]}]\n90:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-unstable-context-value\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unstable-context-value\"}]}]\n91:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-unstable-default-props\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unstable-default-props\"}]}]\n92:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-unused-class-component-members\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unused-class-component-members\"}]}]\n93:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-unused-props\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unused-props\"}]}]\n94:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-unused-state\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unused-state\"}]}]\n95:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/no-use-context\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-use-context\"}]}]\n96:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/purity\",\"children\":[\"$\",\"code\",null,{\"children\":\"purity\"}]}]\n97:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/refs\",\"children\":[\"$\",\"code\",null,{\"children\":\"refs\"}]}]\n98:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/rules-of-hooks\",\"children\":[\"$\",\"code\",null,{\"children\":\"rules-of-hooks\"}]}]\n99:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/set-state-in-effect\",\"children\":[\"$\",\"code\",null,{\"children\":\"set-state-in-effect\"}]}]\n9a:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/set-state-in-render\",\"children\":[\"$\",\"code\",null,{\"children\":\"set-state-in-render\"}]}]\n9b:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/static-components\",\"children\":[\"$\",\"code\",null,{\"children\":\"static-components\"}]}]\n9c:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/unsupported-syntax\",\"children\":[\"$\",\"code\",null,{\"children\":\"unsupported-syntax\"}]}]\n9d:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/use-memo\",\"children\":[\"$\",\"code\",null,{\"children\":\"use-memo\"}]}]\n9e:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/use-state\",\"children\":[\"$\",\"code\",null,{\"children\":\"use-state\"}]}]\n9f:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/jsx-no-children-prop\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-children-prop\"}]}]\na0:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/jsx-no-children-prop-with-children\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-children-prop-with-children\"}]}]\na1:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/jsx-no-comment-textnodes\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-comment-textnodes\"}]}]\na2:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/jsx-no-key-after-spread\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-key-after-spread\"}]}]\na3:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/jsx-no-leaked-dollar\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-leaked-dollar\"}]}]\na4:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/jsx-no-leaked-semicolon\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-leaked-semicolon\"}]}]\na5:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/jsx-no-namespace\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-namespace\"}]}]\na6:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/jsx-no-useless-fragment\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-useless-fragment\"}]}]\na7:[\"$\",\"$Lcc\",null,{\"href\":\"https://react.dev/reference/rsc/server-components\",\"children\":\"React Server Components\"}]\na8:[\"$\",\"$Lcc\",null,{\"href\":\"https://react.dev/reference/rsc/server-functions\",\"children\":\"React Server Functions\"}]\na9:[\"$\",\"$Lcc\",null,{\"href\":\"https://react.dev/reference/rsc/directives\",\"children\":\"RSC Directives\"}]\naa:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/rsc-function-definition\",\"children\":[\"$\",\"code\",null,{\"children\":\"function-definition\"}]}]\nab:[\"$\",\"$Lcc\",null,{\"href\":\"https://react.dev/reference/react#react-dom\",\"children\":\"React DOM\"}]\nac:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-dangerously-set-innerhtml\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-dangerously-set-innerhtml\"}]}]\nad:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-dangerously-set-innerhtml-with-children\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-dangerously-set-innerhtml-with-children\"}]}]\nae:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-find-dom-node\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-find-dom-node\"}]}]\naf:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-flush-sync\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-flush-sync\"}]}]\nb0:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-hydrate\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-hydrate\"}]}]\nb1:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-missing-button-type\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-missing-button-type\"}]}]\nb2:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-missing-iframe-sandbox\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-missing-iframe-sandbox\"}]}]\nb3:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-render\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-render\"}]}]\nb4:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-render-return-value\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-render-return-value\"}]}]\nb5:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-script-url\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-script-url\"}]}]\nb6:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-string-style-prop\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-string-style-prop\"}]}]\nbd:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/web-api-no-leaked-event-listener\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-leaked-event-listener\"}]}]\nbe:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/web-api-no-leaked-fetch\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-leaked-fetch\"}]}]\nbf:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/web-api-no-leaked-intersection-observer\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-leaked-intersection-observer\"}]}]\nc0:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/web-api-no-leaked-interval\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-leaked-interval\"}]}]\nc1:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/web-api-no-leaked-resize-observer\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-leaked-resize-observer\"}]}]\nc2:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/web-api-no-leaked-timeout\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-leaked-timeout\"}]}]\nc3:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/naming-convention-context-name\",\"children\":[\"$\",\"code\",null,{\"children\":\"context-name\"}]}]\nc4:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/naming-convention-id-name\",\"children\":[\"$\",\"code\",null,{\"children\":\"id-name\"}]}]\nc5:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/naming-convention-ref-name\",\"children\":[\"$\",\"code\",null,{\"children\":\"ref-name\"}]}]\nc6:[\"$\",\"$Lcc\",null,{\"href\":\"https://react-docgen.dev/\",\"children\":\"react-docgen\"}]\nc7:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/debug-function-component\",\"children\":[\"$\",\"code\",null,{\"children\":\"function-component\"}]}]\nc8:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/debug-hook\",\"children\":[\"$\",\"code\",null,{\"children\":\"hook\"}]}]\nc9:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/debug-is-from-react\",\"children\":[\"$\",\"code\",null,{\"children\":\"is-from-react\"}]}]\nca:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/debug-is-from-ref\",\"children\":[\"$\",\"code\",null,{\"children\":\"is-from-ref\"}]}]\ncb:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/debug-jsx\",\"children\":[\"$\",\"code\",null,{\"children\":\"jsx\"}]}]\ncd:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-unknown-property\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-u
37nknown-property\"}]}]\nce:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-unsafe-iframe-sandbox\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unsafe-iframe-sandbox\"}]}]\ncf:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-unsafe-target-blank\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-unsafe-target-blank\"}]}]\nd0:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-use-form-state\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-use-form-state\"}]}]\nd1:[\"$\",\"$Lcc\",null,{\"href\":\"/docs/rules/dom-no-void-elements-with-children\",\"children\":[\"$\",\"code\",null,{\"children\":\"no-void-elements-with-children\"}]}]\n16:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n14:null\n18:[[\"$\",\"title\",\"0\",{\"children\":\"Rules | ESLint React\"}],[\"$\",\"meta\",\"1\",{\"property\":\"og:title\",\"content\":\"Rules | ESLint React\"}],[\"$\",\"meta\",\"2\",{\"property\":\"og:image\",\"content\":\"https://eslint-react-bpxp2f0yx-rel1cxs-projects.vercel.app/og/docs/rules/image.webp\"}],[\"$\",\"meta\",\"3\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"4\",{\"name\":\"twitter:title\",\"content\":\"Rules | ESLint React\"}],[\"$\",\"meta\",\"5\",{\"name\":\"twitter:image\",\"content\":\"https://eslint-react-bpxp2f0yx-rel1cxs-projects.vercel.app/og/docs/rules/image.webp\"}]]\n"])</script>
37</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.