[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"versions":3,"module-hints":8},{"v5":4,"v4":5,"v3":6,"v2":7},"5 (nightly)","4.4.4","3.21.4","2.18.1",{"name":9,"description":10,"repo":11,"npm":12,"icon":13,"github":14,"website":14,"learn_more":15,"category":16,"type":17,"maintainers":18,"compatibility":24,"generatedAt":27,"contributors":28,"stats":80,"readme":88},"hints","Nuxt module that shows hints for aspects of your application such as Performance, Security, and more!","nuxt\u002Fhints","@nuxt\u002Fhints","nuxt.svg","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fhints","","Devtools","official",[19],{"name":20,"github":21,"twitter":22,"bluesky":23},"Julien Huang","huang-julien","JulienHuang_dev","julienhuang-dev.bsky.social",{"nuxt":25,"requires":26},">=3.0.0",{},"2026-05-09T19:34:39.923Z",[29,32,36,40,43,47,50,53,56,59,62,65,68,71,74,77],{"id":30,"username":21,"contributions":31},63512348,125,{"id":33,"username":34,"contributions":35},4778485,"dargmuesli",6,{"id":37,"username":38,"contributions":39},28706372,"danielroe",2,{"id":41,"username":42,"contributions":39},37120330,"Baroshem",{"id":44,"username":45,"contributions":46},85992002,"KazariEX",1,{"id":48,"username":49,"contributions":46},904724,"atinux",{"id":51,"username":52,"contributions":46},18102267,"oritwoen",{"id":54,"username":55,"contributions":46},5106702,"Razzaghnoori",{"id":57,"username":58,"contributions":46},333856,"martijndewit",{"id":60,"username":61,"contributions":46},2497323,"aussieboi",{"id":63,"username":64,"contributions":46},96652894,"IO-Fire",{"id":66,"username":67,"contributions":46},1422374,"gmercey",{"id":69,"username":70,"contributions":46},73582807,"fabkho",{"id":72,"username":73,"contributions":46},739984,"benjamincanac",{"id":75,"username":76,"contributions":46},640208,"TheAlexLichter",{"id":78,"username":79,"contributions":46},39984251,"Mini-ghost",{"version":81,"downloads":82,"stars":83,"watchers":83,"forks":84,"defaultBranch":85,"publishedAt":86,"createdAt":87},"1.1.1",124441,336,11,"main",1777967178807,1762896590519,{"data":89,"body":91,"toc":1335},{"title":90,"description":15},"Nuxt Hints",{"type":92,"children":93},"root",[94,102,147,156,161,175,182,187,230,243,249,345,351,356,363,368,376,382,387,395,401,406,414,420,425,433,439,444,452,458,464,476,482,487,493,498,504,517,546,552,577,585,591,596,606,615,621,640,830,836,855,973,978,1083,1089,1329],{"type":95,"tag":96,"props":97,"children":99},"element","h1",{"id":98},"nuxt-hints",[100],{"type":101,"value":90},"text",{"type":95,"tag":103,"props":104,"children":105},"p",{},[106,119,128,137],{"type":95,"tag":107,"props":108,"children":112},"a",{"href":109,"rel":110},"https:\u002F\u002Fnpmx.dev\u002Fpackage\u002F@nuxt\u002Fhints",[111],"nofollow",[113],{"type":95,"tag":114,"props":115,"children":118},"img",{"alt":116,"src":117},"npm version","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@nuxt\u002Fhints\u002Flatest.svg?style=flat&colorA=18181B&colorB=28CF8D",[],{"type":95,"tag":107,"props":120,"children":122},{"href":109,"rel":121},[111],[123],{"type":95,"tag":114,"props":124,"children":127},{"alt":125,"src":126},"npm downloads","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F@nuxt\u002Fhints.svg?style=flat&colorA=18181B&colorB=28CF8D",[],{"type":95,"tag":107,"props":129,"children":131},{"href":109,"rel":130},[111],[132],{"type":95,"tag":114,"props":133,"children":136},{"alt":134,"src":135},"License","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002F@nuxt\u002Fhints.svg?style=flat&colorA=18181B&colorB=28CF8D",[],{"type":95,"tag":107,"props":138,"children":141},{"href":139,"rel":140},"https:\u002F\u002Fnuxt.com",[111],[142],{"type":95,"tag":114,"props":143,"children":146},{"alt":144,"src":145},"Nuxt","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNuxt-18181B?logo=nuxt",[],{"type":95,"tag":103,"props":148,"children":149},{},[150],{"type":95,"tag":151,"props":152,"children":153},"strong",{},[154],{"type":101,"value":155},"A Nuxt module that provides real-time feedback on your application's performance, accessibility, and security right in your browser.",{"type":95,"tag":103,"props":157,"children":158},{},[159],{"type":101,"value":160},"Nuxt Hints integrates directly into the Nuxt DevTools, giving you actionable insights to improve your web vitals, fix hydration mismatches, and audit third-party scripts without ever leaving your development environment.",{"type":95,"tag":162,"props":163,"children":164},"ul",{},[165],{"type":95,"tag":166,"props":167,"children":168},"li",{},[169],{"type":95,"tag":107,"props":170,"children":172},{"href":171},"\u002FCHANGELOG.md",[173],{"type":101,"value":174},"✨Release Notes",{"type":95,"tag":176,"props":177,"children":179},"h2",{"id":178},"getting-started",[180],{"type":101,"value":181},"Getting Started",{"type":95,"tag":103,"props":183,"children":184},{},[185],{"type":101,"value":186},"To install and add the module, you can run the following command:",{"type":95,"tag":188,"props":189,"children":193},"pre",{"className":190,"code":191,"language":192,"meta":15,"style":15},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","npx nuxt module add hints\n","bash",[194],{"type":95,"tag":195,"props":196,"children":197},"code",{"__ignoreMap":15},[198],{"type":95,"tag":199,"props":200,"children":202},"span",{"class":201,"line":46},"line",[203,209,215,220,225],{"type":95,"tag":199,"props":204,"children":206},{"style":205},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B",[207],{"type":101,"value":208},"npx",{"type":95,"tag":199,"props":210,"children":212},{"style":211},"--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D",[213],{"type":101,"value":214}," nuxt",{"type":95,"tag":199,"props":216,"children":217},{"style":211},[218],{"type":101,"value":219}," module",{"type":95,"tag":199,"props":221,"children":222},{"style":211},[223],{"type":101,"value":224}," add",{"type":95,"tag":199,"props":226,"children":227},{"style":211},[228],{"type":101,"value":229}," hints\n",{"type":95,"tag":103,"props":231,"children":232},{},[233,235,241],{"type":101,"value":234},"The module is now automatically installed and added to your ",{"type":95,"tag":195,"props":236,"children":238},{"className":237},[],[239],{"type":101,"value":240},"nuxt.config.ts",{"type":101,"value":242},".\nNow you can open your Nuxt app, go to the DevTools, and click the Nuxt Hints icon to get started.",{"type":95,"tag":176,"props":244,"children":246},{"id":245},"features",[247],{"type":101,"value":248},"Features",{"type":95,"tag":162,"props":250,"children":251},{},[252,262,272,282,292,302,335],{"type":95,"tag":166,"props":253,"children":254},{},[255,260],{"type":95,"tag":151,"props":256,"children":257},{},[258],{"type":101,"value":259},"🚀 Rich DevTools UI",{"type":101,"value":261},": A dedicated tab in Nuxt DevTools to visualize issues, inspect elements, and get recommendations.",{"type":95,"tag":166,"props":263,"children":264},{},[265,270],{"type":95,"tag":151,"props":266,"children":267},{},[268],{"type":101,"value":269},"💧 Hydration Mismatch Debugging",{"type":101,"value":271},": Side-by-side diffing of server-rendered and client-hydrated HTML to pinpoint the exact cause of mismatches.",{"type":95,"tag":166,"props":273,"children":274},{},[275,280],{"type":95,"tag":151,"props":276,"children":277},{},[278],{"type":101,"value":279},"⚡️ Web Vitals Analysis",{"type":101,"value":281},": Real-time metrics for LCP, INP, and CLS with detailed attribution and element-specific optimization tips.",{"type":95,"tag":166,"props":283,"children":284},{},[285,290],{"type":95,"tag":151,"props":286,"children":287},{},[288],{"type":101,"value":289},"📦 Third-Party Script Auditing",{"type":101,"value":291},": Dashboard to monitor performance, identify render-blocking scripts, and get security recommendations.",{"type":95,"tag":166,"props":293,"children":294},{},[295,300],{"type":95,"tag":151,"props":296,"children":297},{},[298],{"type":101,"value":299},"🧩 Unused Component Detection",{"type":101,"value":301},": Detects statically imported components that aren't rendered during SSR or hydration and suggests lazy-loading them to reduce bundle size.",{"type":95,"tag":166,"props":303,"children":304},{},[305,310,312],{"type":95,"tag":151,"props":306,"children":307},{},[308],{"type":101,"value":309},"🔍 Interactive Diagnostics",{"type":101,"value":311},":\n",{"type":95,"tag":162,"props":313,"children":314},{},[315,325],{"type":95,"tag":166,"props":316,"children":317},{},[318,323],{"type":95,"tag":151,"props":319,"children":320},{},[321],{"type":101,"value":322},"Hover to Highlight",{"type":101,"value":324},": Hover over an issue in the DevTools to highlight the corresponding element on your page.",{"type":95,"tag":166,"props":326,"children":327},{},[328,333],{"type":95,"tag":151,"props":329,"children":330},{},[331],{"type":101,"value":332},"Click to Inspect",{"type":101,"value":334},": Click to open the component source file directly in your code editor.",{"type":95,"tag":166,"props":336,"children":337},{},[338,343],{"type":95,"tag":151,"props":339,"children":340},{},[341],{"type":101,"value":342},"💡 Actionable Console Warnings",{"type":101,"value":344},": Clear, concise console messages that guide you to best practices and performance improvements.",{"type":95,"tag":176,"props":346,"children":348},{"id":347},"visual-interface-within-devtools",[349],{"type":101,"value":350},"Visual Interface within Devtools",{"type":95,"tag":103,"props":352,"children":353},{},[354],{"type":101,"value":355},"Nuxt Hints provides a rich, interactive UI inside the Nuxt DevTools panel.",{"type":95,"tag":357,"props":358,"children":360},"h3",{"id":359},"homepage",[361],{"type":101,"value":362},"Homepage",{"type":95,"tag":103,"props":364,"children":365},{},[366],{"type":101,"value":367},"A central hub to see a summary of all detected issues at a glance.",{"type":95,"tag":103,"props":369,"children":370},{},[371],{"type":95,"tag":114,"props":372,"children":375},{"alt":373,"src":374},"hints devtools homepage screenshot",".\u002F.github\u002Fassets\u002Fdevtools-homepage.png",[],{"type":95,"tag":357,"props":377,"children":379},{"id":378},"web-vitals",[380],{"type":101,"value":381},"Web Vitals",{"type":95,"tag":103,"props":383,"children":384},{},[385],{"type":101,"value":386},"Drill down into Core Web Vitals metrics. See detailed attribution for LCP, INP, and CLS, inspect the problematic elements, and get context-aware advice.",{"type":95,"tag":103,"props":388,"children":389},{},[390],{"type":95,"tag":114,"props":391,"children":394},{"alt":392,"src":393},"hints devtools web vitals screenshot",".\u002F.github\u002Fassets\u002Fdevtools-webvitals.png",[],{"type":95,"tag":357,"props":396,"children":398},{"id":397},"hydration-inspector",[399],{"type":101,"value":400},"Hydration Inspector",{"type":95,"tag":103,"props":402,"children":403},{},[404],{"type":101,"value":405},"Debug hydration mismatches with a powerful side-by-side diff viewer. See the exact differences between the server-rendered HTML and the client-side result.",{"type":95,"tag":103,"props":407,"children":408},{},[409],{"type":95,"tag":114,"props":410,"children":413},{"alt":411,"src":412},"hints devtools hydration screenshot",".\u002F.github\u002Fassets\u002Fdevtools-hydration.png",[],{"type":95,"tag":357,"props":415,"children":417},{"id":416},"third-party-scripts",[418],{"type":101,"value":419},"Third-Party Scripts",{"type":95,"tag":103,"props":421,"children":422},{},[423],{"type":101,"value":424},"Analyze all third-party scripts on your page. The dashboard shows loading times, render-blocking status, and security attributes, helping you identify and mitigate performance bottlenecks.",{"type":95,"tag":103,"props":426,"children":427},{},[428],{"type":95,"tag":114,"props":429,"children":432},{"alt":430,"src":431},"hints devtools third-party screenshot",".\u002F.github\u002Fassets\u002Fdevtools-thirdparties.png",[],{"type":95,"tag":357,"props":434,"children":436},{"id":435},"unused-imported-component-detection-lazy-load",[437],{"type":101,"value":438},"Unused Imported Component Detection (Lazy Load)",{"type":95,"tag":103,"props":440,"children":441},{},[442],{"type":101,"value":443},"Identify statically imported components that were never rendered during SSR or initial hydration. The module suggests converting them to lazy-loaded components to reduce end-users initial bundle size.",{"type":95,"tag":103,"props":445,"children":446},{},[447],{"type":95,"tag":114,"props":448,"children":451},{"alt":449,"src":450},"hints devtools lazy-load screenshot",".\u002F.github\u002Fassets\u002Fdevtools-lazy-load.png",[],{"type":95,"tag":176,"props":453,"children":455},{"id":454},"how-it-works",[456],{"type":101,"value":457},"How It Works",{"type":95,"tag":357,"props":459,"children":461},{"id":460},"performance-monitoring",[462],{"type":101,"value":463},"Performance Monitoring",{"type":95,"tag":103,"props":465,"children":466},{},[467,469,474],{"type":101,"value":468},"Nuxt Hints uses ",{"type":95,"tag":195,"props":470,"children":472},{"className":471},[],[473],{"type":101,"value":378},{"type":101,"value":475}," to gather Core Web Vitals metrics and automatically logs any msetrics that need improvement. It listens for INP, LCP, and CLS and provides detailed attribution for each.",{"type":95,"tag":357,"props":477,"children":479},{"id":478},"hydration-mismatch-detection",[480],{"type":101,"value":481},"Hydration Mismatch Detection",{"type":95,"tag":103,"props":483,"children":484},{},[485],{"type":101,"value":486},"The module hooks into Vue's hydration process to compare the server-rendered DOM with the client-side DOM. When a mismatch is detected, it captures the pre- and post-hydration HTML for inspection.",{"type":95,"tag":357,"props":488,"children":490},{"id":489},"third-party-script-analysis",[491],{"type":101,"value":492},"Third-Party Script Analysis",{"type":95,"tag":103,"props":494,"children":495},{},[496],{"type":101,"value":497},"Using a combination of a Nitro plugin and client-side observers, Nuxt Hints tracks every script loaded on the page, measuring its performance and analyzing its attributes.",{"type":95,"tag":357,"props":499,"children":501},{"id":500},"unused-component-detection-lazy-load",[502],{"type":101,"value":503},"Unused Component Detection (Lazy Load)",{"type":95,"tag":103,"props":505,"children":506},{},[507,509,515],{"type":101,"value":508},"At build time, a Vite plugin analyzes your component imports to identify statically imported ",{"type":95,"tag":195,"props":510,"children":512},{"className":511},[],[513],{"type":101,"value":514},".vue",{"type":101,"value":516}," components. At runtime, the module tracks which of those components actually render during SSR and initial hydration. After the page finishes loading, any imported component that was never rendered is flagged as a candidate for lazy loading.",{"type":95,"tag":103,"props":518,"children":519},{},[520,522,528,530,536,538,544],{"type":101,"value":521},"Suggestions are reported to the console and sent to the DevTools UI via Server-Sent Events, where you can review them per route and dismiss entries you've already addressed. The recommended fix is to either prefix the component with ",{"type":95,"tag":195,"props":523,"children":525},{"className":524},[],[526],{"type":101,"value":527},"Lazy",{"type":101,"value":529}," (e.g., ",{"type":95,"tag":195,"props":531,"children":533},{"className":532},[],[534],{"type":101,"value":535},"\u003CLazyHeavyComponent>",{"type":101,"value":537},") or use ",{"type":95,"tag":195,"props":539,"children":541},{"className":540},[],[542],{"type":101,"value":543},"defineAsyncComponent",{"type":101,"value":545}," so it is only downloaded when needed.",{"type":95,"tag":357,"props":547,"children":549},{"id":548},"html-validate-integration",[550],{"type":101,"value":551},"HTML Validate integration",{"type":95,"tag":103,"props":553,"children":554},{},[555,557,568,570,575],{"type":101,"value":556},"Nuxt Hints includes a built-in HTML validation feature powered by ",{"type":95,"tag":107,"props":558,"children":561},{"href":559,"rel":560},"https:\u002F\u002Fhtml-validate.org\u002F",[111],[562],{"type":95,"tag":195,"props":563,"children":565},{"className":564},[],[566],{"type":101,"value":567},"html-validate",{"type":101,"value":569},". On every server-rendered response, the module intercepts the HTML output and runs it through ",{"type":95,"tag":195,"props":571,"children":573},{"className":572},[],[574],{"type":101,"value":567},{"type":101,"value":576},".",{"type":95,"tag":103,"props":578,"children":579},{},[580],{"type":95,"tag":114,"props":581,"children":584},{"alt":582,"src":583},"hints html-validate screenshot",".\u002F.github\u002Fassets\u002Fdevtools-html-validate.png",[],{"type":95,"tag":357,"props":586,"children":588},{"id":587},"example-console-output",[589],{"type":101,"value":590},"Example Console Output",{"type":95,"tag":103,"props":592,"children":593},{},[594],{"type":101,"value":595},"When Nuxt Hints detects issues, you'll see clear warnings in your browser console:",{"type":95,"tag":188,"props":597,"children":601},{"className":598,"code":600,"language":101},[599],"language-text","[@nuxt\u002Fhints:performance] LCP Element should not have `loading=\"lazy\"`\nLearn more: https:\u002F\u002Fweb.dev\u002Foptimize-lcp\u002F#optimize-the-priority-the-resource-is-given\n",[602],{"type":95,"tag":195,"props":603,"children":604},{"__ignoreMap":15},[605],{"type":101,"value":600},{"type":95,"tag":188,"props":607,"children":610},{"className":608,"code":609,"language":101},[599],"[@nuxt\u002Fhints] Third-party script \"https:\u002F\u002Fcdn.example.com\u002Fscript.js\" is missing crossorigin attribute.\nConsider adding crossorigin=\"anonymous\" for better security and error reporting.\n",[611],{"type":95,"tag":195,"props":612,"children":613},{"__ignoreMap":15},[614],{"type":101,"value":609},{"type":95,"tag":176,"props":616,"children":618},{"id":617},"module-options",[619],{"type":101,"value":620},"Module Options",{"type":95,"tag":103,"props":622,"children":623},{},[624,626,631,633,638],{"type":101,"value":625},"Configure the module in your ",{"type":95,"tag":195,"props":627,"children":629},{"className":628},[],[630],{"type":101,"value":240},{"type":101,"value":632}," under the ",{"type":95,"tag":195,"props":634,"children":636},{"className":635},[],[637],{"type":101,"value":9},{"type":101,"value":639}," key:",{"type":95,"tag":188,"props":641,"children":645},{"className":642,"code":643,"language":644,"meta":15,"style":15},"language-typescript shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","export default defineNuxtConfig({\n  hints: {\n    devtools: true,\n\n    \u002F\u002F Enable or configure individual features\n    \u002F\u002F if you feel overwhelmed by logs, you can disable some features and fix things step by step.\n    features: {\n      \u002F\u002F Defaults to true for each feature\n      hydration: true,\n    },\n  },\n})\n","typescript",[646],{"type":95,"tag":195,"props":647,"children":648},{"__ignoreMap":15},[649,681,700,724,734,744,752,769,778,799,808,816],{"type":95,"tag":199,"props":650,"children":651},{"class":201,"line":46},[652,658,663,669,675],{"type":95,"tag":199,"props":653,"children":655},{"style":654},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[656],{"type":101,"value":657},"export",{"type":95,"tag":199,"props":659,"children":660},{"style":654},[661],{"type":101,"value":662}," default",{"type":95,"tag":199,"props":664,"children":666},{"style":665},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[667],{"type":101,"value":668}," defineNuxtConfig",{"type":95,"tag":199,"props":670,"children":672},{"style":671},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8",[673],{"type":101,"value":674},"(",{"type":95,"tag":199,"props":676,"children":678},{"style":677},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[679],{"type":101,"value":680},"{\n",{"type":95,"tag":199,"props":682,"children":683},{"class":201,"line":39},[684,690,695],{"type":95,"tag":199,"props":685,"children":687},{"style":686},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178",[688],{"type":101,"value":689},"  hints",{"type":95,"tag":199,"props":691,"children":692},{"style":677},[693],{"type":101,"value":694},":",{"type":95,"tag":199,"props":696,"children":697},{"style":677},[698],{"type":101,"value":699}," {\n",{"type":95,"tag":199,"props":701,"children":703},{"class":201,"line":702},3,[704,709,713,719],{"type":95,"tag":199,"props":705,"children":706},{"style":686},[707],{"type":101,"value":708},"    devtools",{"type":95,"tag":199,"props":710,"children":711},{"style":677},[712],{"type":101,"value":694},{"type":95,"tag":199,"props":714,"children":716},{"style":715},"--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC",[717],{"type":101,"value":718}," true",{"type":95,"tag":199,"props":720,"children":721},{"style":677},[722],{"type":101,"value":723},",\n",{"type":95,"tag":199,"props":725,"children":727},{"class":201,"line":726},4,[728],{"type":95,"tag":199,"props":729,"children":731},{"emptyLinePlaceholder":730},true,[732],{"type":101,"value":733},"\n",{"type":95,"tag":199,"props":735,"children":737},{"class":201,"line":736},5,[738],{"type":95,"tag":199,"props":739,"children":741},{"style":740},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[742],{"type":101,"value":743},"    \u002F\u002F Enable or configure individual features\n",{"type":95,"tag":199,"props":745,"children":746},{"class":201,"line":35},[747],{"type":95,"tag":199,"props":748,"children":749},{"style":740},[750],{"type":101,"value":751},"    \u002F\u002F if you feel overwhelmed by logs, you can disable some features and fix things step by step.\n",{"type":95,"tag":199,"props":753,"children":755},{"class":201,"line":754},7,[756,761,765],{"type":95,"tag":199,"props":757,"children":758},{"style":686},[759],{"type":101,"value":760},"    features",{"type":95,"tag":199,"props":762,"children":763},{"style":677},[764],{"type":101,"value":694},{"type":95,"tag":199,"props":766,"children":767},{"style":677},[768],{"type":101,"value":699},{"type":95,"tag":199,"props":770,"children":772},{"class":201,"line":771},8,[773],{"type":95,"tag":199,"props":774,"children":775},{"style":740},[776],{"type":101,"value":777},"      \u002F\u002F Defaults to true for each feature\n",{"type":95,"tag":199,"props":779,"children":781},{"class":201,"line":780},9,[782,787,791,795],{"type":95,"tag":199,"props":783,"children":784},{"style":686},[785],{"type":101,"value":786},"      hydration",{"type":95,"tag":199,"props":788,"children":789},{"style":677},[790],{"type":101,"value":694},{"type":95,"tag":199,"props":792,"children":793},{"style":715},[794],{"type":101,"value":718},{"type":95,"tag":199,"props":796,"children":797},{"style":677},[798],{"type":101,"value":723},{"type":95,"tag":199,"props":800,"children":802},{"class":201,"line":801},10,[803],{"type":95,"tag":199,"props":804,"children":805},{"style":677},[806],{"type":101,"value":807},"    },\n",{"type":95,"tag":199,"props":809,"children":810},{"class":201,"line":84},[811],{"type":95,"tag":199,"props":812,"children":813},{"style":677},[814],{"type":101,"value":815},"  },\n",{"type":95,"tag":199,"props":817,"children":819},{"class":201,"line":818},12,[820,825],{"type":95,"tag":199,"props":821,"children":822},{"style":677},[823],{"type":101,"value":824},"}",{"type":95,"tag":199,"props":826,"children":827},{"style":671},[828],{"type":101,"value":829},")\n",{"type":95,"tag":357,"props":831,"children":833},{"id":832},"feature-toggles",[834],{"type":101,"value":835},"Feature toggles",{"type":95,"tag":103,"props":837,"children":838},{},[839,841,846,848,853],{"type":101,"value":840},"Each feature accepts either a ",{"type":95,"tag":151,"props":842,"children":843},{},[844],{"type":101,"value":845},"boolean",{"type":101,"value":847}," or an ",{"type":95,"tag":151,"props":849,"children":850},{},[851],{"type":101,"value":852},"object",{"type":101,"value":854}," for finer control:",{"type":95,"tag":856,"props":857,"children":858},"table",{},[859,878],{"type":95,"tag":860,"props":861,"children":862},"thead",{},[863],{"type":95,"tag":864,"props":865,"children":866},"tr",{},[867,873],{"type":95,"tag":868,"props":869,"children":870},"th",{},[871],{"type":101,"value":872},"Key",{"type":95,"tag":868,"props":874,"children":875},{},[876],{"type":101,"value":877},"Description",{"type":95,"tag":879,"props":880,"children":881},"tbody",{},[882,900,917,934,951],{"type":95,"tag":864,"props":883,"children":884},{},[885,895],{"type":95,"tag":886,"props":887,"children":888},"td",{},[889],{"type":95,"tag":195,"props":890,"children":892},{"className":891},[],[893],{"type":101,"value":894},"hydration",{"type":95,"tag":886,"props":896,"children":897},{},[898],{"type":101,"value":899},"Detect and inspect hydration mismatches",{"type":95,"tag":864,"props":901,"children":902},{},[903,912],{"type":95,"tag":886,"props":904,"children":905},{},[906],{"type":95,"tag":195,"props":907,"children":909},{"className":908},[],[910],{"type":101,"value":911},"lazyLoad",{"type":95,"tag":886,"props":913,"children":914},{},[915],{"type":101,"value":916},"Flag unused imported components that could be lazy-loaded",{"type":95,"tag":864,"props":918,"children":919},{},[920,929],{"type":95,"tag":886,"props":921,"children":922},{},[923],{"type":95,"tag":195,"props":924,"children":926},{"className":925},[],[927],{"type":101,"value":928},"webVitals",{"type":95,"tag":886,"props":930,"children":931},{},[932],{"type":101,"value":933},"Track LCP, INP, and CLS metrics",{"type":95,"tag":864,"props":935,"children":936},{},[937,946],{"type":95,"tag":886,"props":938,"children":939},{},[940],{"type":95,"tag":195,"props":941,"children":943},{"className":942},[],[944],{"type":101,"value":945},"thirdPartyScripts",{"type":95,"tag":886,"props":947,"children":948},{},[949],{"type":101,"value":950},"Audit third-party scripts for performance and security",{"type":95,"tag":864,"props":952,"children":953},{},[954,963],{"type":95,"tag":886,"props":955,"children":956},{},[957],{"type":95,"tag":195,"props":958,"children":960},{"className":959},[],[961],{"type":101,"value":962},"htmlValidate",{"type":95,"tag":886,"props":964,"children":965},{},[966,968],{"type":101,"value":967},"Validate server-rendered HTML with ",{"type":95,"tag":107,"props":969,"children":971},{"href":559,"rel":970},[111],[972],{"type":101,"value":567},{"type":95,"tag":103,"props":974,"children":975},{},[976],{"type":101,"value":977},"When using the object syntax, the following flags are available:",{"type":95,"tag":188,"props":979,"children":981},{"className":642,"code":980,"language":644,"meta":15,"style":15},"{\n  logs: true,       \u002F\u002F Print warnings to the browser console\n  devtools: true,   \u002F\u002F Show this feature in the DevTools panel\n  options: { ... }, \u002F\u002F Feature-specific options\n}\n",[982],{"type":95,"tag":195,"props":983,"children":984},{"__ignoreMap":15},[985,992,1018,1043,1075],{"type":95,"tag":199,"props":986,"children":987},{"class":201,"line":46},[988],{"type":95,"tag":199,"props":989,"children":990},{"style":677},[991],{"type":101,"value":680},{"type":95,"tag":199,"props":993,"children":994},{"class":201,"line":39},[995,1000,1004,1008,1013],{"type":95,"tag":199,"props":996,"children":997},{"style":205},[998],{"type":101,"value":999},"  logs",{"type":95,"tag":199,"props":1001,"children":1002},{"style":677},[1003],{"type":101,"value":694},{"type":95,"tag":199,"props":1005,"children":1006},{"style":715},[1007],{"type":101,"value":718},{"type":95,"tag":199,"props":1009,"children":1010},{"style":677},[1011],{"type":101,"value":1012},",",{"type":95,"tag":199,"props":1014,"children":1015},{"style":740},[1016],{"type":101,"value":1017},"       \u002F\u002F Print warnings to the browser console\n",{"type":95,"tag":199,"props":1019,"children":1020},{"class":201,"line":702},[1021,1026,1030,1034,1038],{"type":95,"tag":199,"props":1022,"children":1023},{"style":205},[1024],{"type":101,"value":1025},"  devtools",{"type":95,"tag":199,"props":1027,"children":1028},{"style":677},[1029],{"type":101,"value":694},{"type":95,"tag":199,"props":1031,"children":1032},{"style":715},[1033],{"type":101,"value":718},{"type":95,"tag":199,"props":1035,"children":1036},{"style":677},[1037],{"type":101,"value":1012},{"type":95,"tag":199,"props":1039,"children":1040},{"style":740},[1041],{"type":101,"value":1042},"   \u002F\u002F Show this feature in the DevTools panel\n",{"type":95,"tag":199,"props":1044,"children":1045},{"class":201,"line":726},[1046,1051,1055,1060,1065,1070],{"type":95,"tag":199,"props":1047,"children":1048},{"style":205},[1049],{"type":101,"value":1050},"  options",{"type":95,"tag":199,"props":1052,"children":1053},{"style":677},[1054],{"type":101,"value":694},{"type":95,"tag":199,"props":1056,"children":1057},{"style":677},[1058],{"type":101,"value":1059}," {",{"type":95,"tag":199,"props":1061,"children":1062},{"style":677},[1063],{"type":101,"value":1064}," ...",{"type":95,"tag":199,"props":1066,"children":1067},{"style":677},[1068],{"type":101,"value":1069}," },",{"type":95,"tag":199,"props":1071,"children":1072},{"style":740},[1073],{"type":101,"value":1074}," \u002F\u002F Feature-specific options\n",{"type":95,"tag":199,"props":1076,"children":1077},{"class":201,"line":736},[1078],{"type":95,"tag":199,"props":1079,"children":1080},{"style":677},[1081],{"type":101,"value":1082},"}\n",{"type":95,"tag":176,"props":1084,"children":1086},{"id":1085},"development",[1087],{"type":101,"value":1088},"Development",{"type":95,"tag":188,"props":1090,"children":1092},{"className":190,"code":1091,"language":192,"meta":15,"style":15},"# Install dependencies\npnpm install\n\n# Generate type stubs\npnpm run dev:prepare\n\n# Develop with the playground\npnpm run dev\n\n# Build the playground\npnpm run dev:build\n\n# Run ESLint\npnpm run lint\n\n# Run Vitest\npnpm run test\npnpm run test:watch\n\n# Release new version\npnpm run release\n",[1093],{"type":95,"tag":195,"props":1094,"children":1095},{"__ignoreMap":15},[1096,1104,1117,1124,1132,1149,1156,1164,1180,1187,1195,1211,1218,1227,1244,1252,1261,1278,1295,1303,1312],{"type":95,"tag":199,"props":1097,"children":1098},{"class":201,"line":46},[1099],{"type":95,"tag":199,"props":1100,"children":1101},{"style":740},[1102],{"type":101,"value":1103},"# Install dependencies\n",{"type":95,"tag":199,"props":1105,"children":1106},{"class":201,"line":39},[1107,1112],{"type":95,"tag":199,"props":1108,"children":1109},{"style":205},[1110],{"type":101,"value":1111},"pnpm",{"type":95,"tag":199,"props":1113,"children":1114},{"style":211},[1115],{"type":101,"value":1116}," install\n",{"type":95,"tag":199,"props":1118,"children":1119},{"class":201,"line":702},[1120],{"type":95,"tag":199,"props":1121,"children":1122},{"emptyLinePlaceholder":730},[1123],{"type":101,"value":733},{"type":95,"tag":199,"props":1125,"children":1126},{"class":201,"line":726},[1127],{"type":95,"tag":199,"props":1128,"children":1129},{"style":740},[1130],{"type":101,"value":1131},"# Generate type stubs\n",{"type":95,"tag":199,"props":1133,"children":1134},{"class":201,"line":736},[1135,1139,1144],{"type":95,"tag":199,"props":1136,"children":1137},{"style":205},[1138],{"type":101,"value":1111},{"type":95,"tag":199,"props":1140,"children":1141},{"style":211},[1142],{"type":101,"value":1143}," run",{"type":95,"tag":199,"props":1145,"children":1146},{"style":211},[1147],{"type":101,"value":1148}," dev:prepare\n",{"type":95,"tag":199,"props":1150,"children":1151},{"class":201,"line":35},[1152],{"type":95,"tag":199,"props":1153,"children":1154},{"emptyLinePlaceholder":730},[1155],{"type":101,"value":733},{"type":95,"tag":199,"props":1157,"children":1158},{"class":201,"line":754},[1159],{"type":95,"tag":199,"props":1160,"children":1161},{"style":740},[1162],{"type":101,"value":1163},"# Develop with the playground\n",{"type":95,"tag":199,"props":1165,"children":1166},{"class":201,"line":771},[1167,1171,1175],{"type":95,"tag":199,"props":1168,"children":1169},{"style":205},[1170],{"type":101,"value":1111},{"type":95,"tag":199,"props":1172,"children":1173},{"style":211},[1174],{"type":101,"value":1143},{"type":95,"tag":199,"props":1176,"children":1177},{"style":211},[1178],{"type":101,"value":1179}," dev\n",{"type":95,"tag":199,"props":1181,"children":1182},{"class":201,"line":780},[1183],{"type":95,"tag":199,"props":1184,"children":1185},{"emptyLinePlaceholder":730},[1186],{"type":101,"value":733},{"type":95,"tag":199,"props":1188,"children":1189},{"class":201,"line":801},[1190],{"type":95,"tag":199,"props":1191,"children":1192},{"style":740},[1193],{"type":101,"value":1194},"# Build the playground\n",{"type":95,"tag":199,"props":1196,"children":1197},{"class":201,"line":84},[1198,1202,1206],{"type":95,"tag":199,"props":1199,"children":1200},{"style":205},[1201],{"type":101,"value":1111},{"type":95,"tag":199,"props":1203,"children":1204},{"style":211},[1205],{"type":101,"value":1143},{"type":95,"tag":199,"props":1207,"children":1208},{"style":211},[1209],{"type":101,"value":1210}," dev:build\n",{"type":95,"tag":199,"props":1212,"children":1213},{"class":201,"line":818},[1214],{"type":95,"tag":199,"props":1215,"children":1216},{"emptyLinePlaceholder":730},[1217],{"type":101,"value":733},{"type":95,"tag":199,"props":1219,"children":1221},{"class":201,"line":1220},13,[1222],{"type":95,"tag":199,"props":1223,"children":1224},{"style":740},[1225],{"type":101,"value":1226},"# Run ESLint\n",{"type":95,"tag":199,"props":1228,"children":1230},{"class":201,"line":1229},14,[1231,1235,1239],{"type":95,"tag":199,"props":1232,"children":1233},{"style":205},[1234],{"type":101,"value":1111},{"type":95,"tag":199,"props":1236,"children":1237},{"style":211},[1238],{"type":101,"value":1143},{"type":95,"tag":199,"props":1240,"children":1241},{"style":211},[1242],{"type":101,"value":1243}," lint\n",{"type":95,"tag":199,"props":1245,"children":1247},{"class":201,"line":1246},15,[1248],{"type":95,"tag":199,"props":1249,"children":1250},{"emptyLinePlaceholder":730},[1251],{"type":101,"value":733},{"type":95,"tag":199,"props":1253,"children":1255},{"class":201,"line":1254},16,[1256],{"type":95,"tag":199,"props":1257,"children":1258},{"style":740},[1259],{"type":101,"value":1260},"# Run Vitest\n",{"type":95,"tag":199,"props":1262,"children":1264},{"class":201,"line":1263},17,[1265,1269,1273],{"type":95,"tag":199,"props":1266,"children":1267},{"style":205},[1268],{"type":101,"value":1111},{"type":95,"tag":199,"props":1270,"children":1271},{"style":211},[1272],{"type":101,"value":1143},{"type":95,"tag":199,"props":1274,"children":1275},{"style":211},[1276],{"type":101,"value":1277}," test\n",{"type":95,"tag":199,"props":1279,"children":1281},{"class":201,"line":1280},18,[1282,1286,1290],{"type":95,"tag":199,"props":1283,"children":1284},{"style":205},[1285],{"type":101,"value":1111},{"type":95,"tag":199,"props":1287,"children":1288},{"style":211},[1289],{"type":101,"value":1143},{"type":95,"tag":199,"props":1291,"children":1292},{"style":211},[1293],{"type":101,"value":1294}," test:watch\n",{"type":95,"tag":199,"props":1296,"children":1298},{"class":201,"line":1297},19,[1299],{"type":95,"tag":199,"props":1300,"children":1301},{"emptyLinePlaceholder":730},[1302],{"type":101,"value":733},{"type":95,"tag":199,"props":1304,"children":1306},{"class":201,"line":1305},20,[1307],{"type":95,"tag":199,"props":1308,"children":1309},{"style":740},[1310],{"type":101,"value":1311},"# Release new version\n",{"type":95,"tag":199,"props":1313,"children":1315},{"class":201,"line":1314},21,[1316,1320,1324],{"type":95,"tag":199,"props":1317,"children":1318},{"style":205},[1319],{"type":101,"value":1111},{"type":95,"tag":199,"props":1321,"children":1322},{"style":211},[1323],{"type":101,"value":1143},{"type":95,"tag":199,"props":1325,"children":1326},{"style":211},[1327],{"type":101,"value":1328}," release\n",{"type":95,"tag":1330,"props":1331,"children":1332},"style",{},[1333],{"type":101,"value":1334},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":15,"searchDepth":39,"depth":39,"links":1336},[1337,1338,1339,1346,1354,1357],{"id":178,"depth":39,"text":181},{"id":245,"depth":39,"text":248},{"id":347,"depth":39,"text":350,"children":1340},[1341,1342,1343,1344,1345],{"id":359,"depth":702,"text":362},{"id":378,"depth":702,"text":381},{"id":397,"depth":702,"text":400},{"id":416,"depth":702,"text":419},{"id":435,"depth":702,"text":438},{"id":454,"depth":39,"text":457,"children":1347},[1348,1349,1350,1351,1352,1353],{"id":460,"depth":702,"text":463},{"id":478,"depth":702,"text":481},{"id":489,"depth":702,"text":492},{"id":500,"depth":702,"text":503},{"id":548,"depth":702,"text":551},{"id":587,"depth":702,"text":590},{"id":617,"depth":39,"text":620,"children":1355},[1356],{"id":832,"depth":702,"text":835},{"id":1085,"depth":39,"text":1088}]