[{"data":1,"prerenderedAt":473},["ShallowReactive",2],{"page:\u002Fextensions\u002Fkubb-labs\u002Fplugin-swr":3},{"id":4,"frontmatter":5,"title":6,"heading":6,"body":7,"path":472,"source":4},"extensions\u002Fkubb-labs\u002Fplugin-swr\u002Findex.md",{},"SWR",{"type":8,"value":9,"toc":463},"minimark",[10,23,26,31,117,138,142,182,186,239,246,254,258,266],[11,12,13,14,18,19,22],"p",{},"The SWR plugin generates a ",[15,16,17],"code",{},"useSWR"," hook for each query and a ",[15,20,21],{},"useSWRMutation"," hook for each mutation.",[11,24,25],{},"The plugin ships no HTTP client. Each hook calls a function generated by a client plugin.",[27,28,30],"h2",{"id":29},"installation","Installation",[32,33,35,64,82,100],"code-group",{"sync":34},"package-manager",[36,37,42],"pre",{"language":38,"filename":39,"code":40,"class":41},"shell","bun","bun add -d @kubb\u002Fplugin-swr","highlights",[15,43,45],{"class":44},"language-shell",[46,47,50,54,58,61],"span",{"class":48,"style":49},"line","display: inline",[46,51,53],{"style":52},"color:#6f42c1;--hls-dark:#b392f0","bun ",[46,55,57],{"style":56},"color:#24292e;--hls-dark:#e1e4e8","add -d ",[46,59,60],{"style":56},"@",[46,62,63],{"style":56},"kubb\u002Fplugin-swr",[36,65,68],{"language":38,"filename":66,"code":67,"class":41},"pnpm","pnpm add -D @kubb\u002Fplugin-swr",[15,69,70],{"class":44},[46,71,72,75,78,80],{"class":48,"style":49},[46,73,74],{"style":52},"pnpm ",[46,76,77],{"style":56},"add -D ",[46,79,60],{"style":56},[46,81,63],{"style":56},[36,83,86],{"language":38,"filename":84,"code":85,"class":41},"npm","npm install --save-dev @kubb\u002Fplugin-swr",[15,87,88],{"class":44},[46,89,90,93,96,98],{"class":48,"style":49},[46,91,92],{"style":52},"npm ",[46,94,95],{"style":56},"install --save-dev ",[46,97,60],{"style":56},[46,99,63],{"style":56},[36,101,104],{"language":38,"filename":102,"code":103,"class":41},"yarn","yarn add -D @kubb\u002Fplugin-swr",[15,105,106],{"class":44},[46,107,108,111,113,115],{"class":48,"style":49},[46,109,110],{"style":52},"yarn ",[46,112,77],{"style":56},[46,114,60],{"style":56},[46,116,63],{"style":56},[11,118,119,120,123,124,129,130,133,134,137],{},"Or run ",[15,121,122],{},"kubb add plugin-swr"," to install the version the ",[125,126,128],"a",{"href":127},"\u002Fregistry","Kubb registry"," pins and add ",[15,131,132],{},"pluginSwr()"," to ",[15,135,136],{},"kubb.config.ts",".",[27,139,141],{"id":140},"setup","Setup",[143,144,145,172,179],"ul",{},[146,147,148,149,152,153,156,157,160,161,152,164,167,168,171],"li",{},"Add ",[15,150,151],{},"@kubb\u002Fplugin-ts",", or ",[15,154,155],{},"pluginZod({ inferred: 'codec' })"," for codec types, and a client plugin: ",[15,158,159],{},"@kubb\u002Fplugin-fetch",", ",[15,162,163],{},"@kubb\u002Fplugin-axios",[15,165,166],{},"@kubb\u002Fplugin-client",". Leave ",[15,169,170],{},"sdk"," unset on the client plugin.",[146,173,174,175,178],{},"Install ",[15,176,177],{},"swr"," 2.2 or a later v2 release in the app that uses the generated code.",[146,180,181],{},"Configure validation on the client plugin, not here.",[27,183,185],{"id":184},"options-worth-knowing","Options worth knowing",[143,187,188,202],{},[146,189,190,193,194,197,198,201],{},[15,191,192],{},"client"," picks ",[15,195,196],{},"fetch"," or ",[15,199,200],{},"axios"," when both client plugins are registered. A single client is detected automatically.",[146,203,204,207,208,211,212,215,216,160,219,160,222,160,225,228,229,207,231,234,235,238],{},[15,205,206],{},"query"," and ",[15,209,210],{},"mutation"," set which HTTP methods become queries (",[15,213,214],{},"GET",") and mutations (",[15,217,218],{},"POST",[15,220,221],{},"PUT",[15,223,224],{},"PATCH",[15,226,227],{},"DELETE","). They also set where SWR is imported from (",[15,230,177],{},[15,232,233],{},"swr\u002Fmutation","). Set either to ",[15,236,237],{},"false"," to skip those hooks.",[11,240,241,242,245],{},"The plugin does not generate ",[15,243,244],{},"useSWRInfinite"," hooks.",[11,247,248,249,253],{},"See ",[125,250,252],{"href":251},"https:\u002F\u002Fkubb.dev\u002Fextensions\u002Fkubb-labs\u002Fplugin-swr\u002Foptions","Options"," for every option and its default.",[27,255,257],{"id":256},"example","Example",[11,259,260,261,207,263,265],{},"The config below generates ",[15,262,17],{},[15,264,21],{}," hooks that call the Fetch client.",[36,267,270],{"language":268,"filename":136,"code":269,"class":41},"typescript","import { defineConfig } from 'kubb\u002Fconfig'\nimport { pluginTs } from '@kubb\u002Fplugin-ts'\nimport { pluginFetch } from '@kubb\u002Fplugin-fetch'\nimport { pluginSwr } from '@kubb\u002Fplugin-swr'\n\nexport default defineConfig({\n  input: '.\u002FpetStore.yaml',\n  output: { path: '.\u002Fsrc\u002Fgen' },\n  plugins: [\n    pluginTs(),\n    pluginFetch(),\n    pluginSwr(),\n  ],\n})",[15,271,273,296,297,296,313,296,329,296,345,296,347,296,361,296,378,296,402,296,414,296,427,296,438,296,449,296,458],{"class":272},"language-typescript",[46,274,275,279,283,286,289,292],{"class":48,"style":49},[46,276,278],{"style":277},"color:#d73a49;--hls-dark:#f97583","import ",[46,280,282],{"style":281},"color:#005cc5;--hls-dark:#79b8ff","{ ",[46,284,285],{"style":56},"defineConfig ",[46,287,288],{"style":281},"} ",[46,290,291],{"style":277},"from ",[46,293,295],{"style":294},"color:#032f62;--hls-dark:#9ecbff","'kubb\u002Fconfig'","\n",[46,298,299,301,303,306,308,310],{"class":48,"style":49},[46,300,278],{"style":277},[46,302,282],{"style":281},[46,304,305],{"style":56},"pluginTs ",[46,307,288],{"style":281},[46,309,291],{"style":277},[46,311,312],{"style":294},"'@kubb\u002Fplugin-ts'",[46,314,315,317,319,322,324,326],{"class":48,"style":49},[46,316,278],{"style":277},[46,318,282],{"style":281},[46,320,321],{"style":56},"pluginFetch ",[46,323,288],{"style":281},[46,325,291],{"style":277},[46,327,328],{"style":294},"'@kubb\u002Fplugin-fetch'",[46,330,331,333,335,338,340,342],{"class":48,"style":49},[46,332,278],{"style":277},[46,334,282],{"style":281},[46,336,337],{"style":56},"pluginSwr ",[46,339,288],{"style":281},[46,341,291],{"style":277},[46,343,344],{"style":294},"'@kubb\u002Fplugin-swr'",[46,346],{"class":48,"style":49},[46,348,349,352,355,358],{"class":48,"style":49},[46,350,351],{"style":277},"export ",[46,353,354],{"style":277},"default ",[46,356,357],{"style":52},"defineConfig",[46,359,360],{"style":281},"({",[46,362,363,366,369,372,375],{"class":48,"style":49},[46,364,365],{"style":281},"  ",[46,367,368],{"style":281},"input",[46,370,371],{"style":277},": ",[46,373,374],{"style":294},"'.\u002FpetStore.yaml'",[46,376,377],{"style":277},",",[46,379,380,382,385,387,389,392,394,397,400],{"class":48,"style":49},[46,381,365],{"style":277},[46,383,384],{"style":281},"output",[46,386,371],{"style":277},[46,388,282],{"style":281},[46,390,391],{"style":281},"path",[46,393,371],{"style":277},[46,395,396],{"style":294},"'.\u002Fsrc\u002Fgen' ",[46,398,399],{"style":281},"}",[46,401,377],{"style":277},[46,403,404,406,409,411],{"class":48,"style":49},[46,405,365],{"style":277},[46,407,408],{"style":281},"plugins",[46,410,371],{"style":277},[46,412,413],{"style":281},"[",[46,415,416,419,422,425],{"class":48,"style":49},[46,417,418],{"style":281},"    ",[46,420,421],{"style":52},"pluginTs",[46,423,424],{"style":281},"()",[46,426,377],{"style":277},[46,428,429,431,434,436],{"class":48,"style":49},[46,430,418],{"style":277},[46,432,433],{"style":52},"pluginFetch",[46,435,424],{"style":281},[46,437,377],{"style":277},[46,439,440,442,445,447],{"class":48,"style":49},[46,441,418],{"style":277},[46,443,444],{"style":52},"pluginSwr",[46,446,424],{"style":281},[46,448,377],{"style":277},[46,450,451,453,456],{"class":48,"style":49},[46,452,365],{"style":277},[46,454,455],{"style":281},"]",[46,457,377],{"style":277},[46,459,460],{"class":48,"style":49},[46,461,462],{"style":281},"})",{"title":464,"searchDepth":465,"depth":465,"links":466},"",5,[467,469,470,471],{"id":29,"depth":468,"text":30},2,{"id":140,"depth":468,"text":141},{"id":184,"depth":468,"text":185},{"id":256,"depth":468,"text":257},"\u002Fextensions\u002Fkubb-labs\u002Fplugin-swr",1793647023474]