[{"data":1,"prerenderedAt":183},["ShallowReactive",2],{"navigation":3,"-guide":48,"-guide-surround":179},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":47},"Guide","\u002Fguide","1.guide\u002F1.index",[9,12,17,22,27,32,37,42],{"title":10,"path":6,"stem":7,"icon":11},"Getting started","i-lucide-rocket",{"title":13,"path":14,"stem":15,"icon":16},"Nuxt","\u002Fguide\u002Fnuxt","1.guide\u002F2.nuxt","i-logos-nuxt-icon",{"title":18,"path":19,"stem":20,"icon":21},"Next.js","\u002Fguide\u002Fnext","1.guide\u002F3.next","i-logos-nextjs-icon",{"title":23,"path":24,"stem":25,"icon":26},"How it works","\u002Fguide\u002Fhow-it-works","1.guide\u002F4.how-it-works","i-lucide-workflow",{"title":28,"path":29,"stem":30,"icon":31},"Options","\u002Fguide\u002Foptions","1.guide\u002F5.options","i-lucide-settings",{"title":33,"path":34,"stem":35,"icon":36},"API","\u002Fguide\u002Fapi","1.guide\u002F6.api","i-lucide-code",{"title":38,"path":39,"stem":40,"icon":41},"Privacy","\u002Fguide\u002Fprivacy","1.guide\u002F7.privacy","i-lucide-lock",{"title":43,"path":44,"stem":45,"icon":46},"Benchmarks","\u002Fguide\u002Fbenchmarks","1.guide\u002F8.benchmarks","i-lucide-gauge","i-lucide-book-open",{"id":49,"title":10,"body":50,"description":173,"extension":174,"meta":175,"navigation":176,"path":6,"seo":177,"stem":7,"__hash__":178},"content\u002F1.guide\u002F1.index.md",{"type":51,"value":52,"toc":165,"icon":11},"minimark",[53,57,62,76,80,123,127,139,143,146,161],[54,55,56],"p",{},"Your framework already prefetches. Nuxt warms every link that enters the viewport, Next does\nthe same, and Chrome guesses on hover. None of them knows which link you actually want. This\nwarms three instead of thirty, and starts before the hover.",[58,59,61],"h2",{"id":60},"pick-your-framework","Pick your framework",[63,64,65,71],"card-group",{},[66,67,68],"card",{"icon":16,"title":13,"to":14},[54,69,70],{},"A module. Add it, set a key, done.",[66,72,73],{"icon":21,"title":18,"to":19},[54,74,75],{},"A route handler and a provider, for the App Router.",[58,77,79],{"id":78},"what-you-get-either-way","What you get either way",[81,82,83,91,103,117],"ul",{},[84,85,86,90],"li",{},[87,88,89],"strong",{},"One request per prediction."," Three questions, answered in parallel, in about 400 ms.",[84,92,93,96,97,102],{},[87,94,95],{},"Two effectors."," Speculation rules for document navigations, the framework's own\npreloading for in-app ones. ",[98,99,101],"a",{"href":100},"\u002Fguide\u002Fhow-it-works#the-two-effectors","Why two",".",[84,104,105,108,109,113,114,102],{},[87,106,107],{},"An overlay."," A probability on every link and a HUD. Press ",[110,111,112],"kbd",{},"Shift","+",[110,115,116],{},"P",[84,118,119,122],{},[87,120,121],{},"Failing open."," Any error or timeout leaves the page exactly as it was.",[58,124,126],{"id":125},"what-it-costs","What it costs",[54,128,129,130,133,134,138],{},"Predictions are not free. The ",[98,131,132],{"href":44},"benchmark"," measures about 15 calls and 10,000\ntokens per session, with a sixth answered from the server's own cache. Tune ",[135,136,137],"code",{},"minIntervalMs",",\nthe cache TTL and the budgets before pointing it at real traffic.",[58,140,142],{"id":141},"is-it-worth-it-for-you","Is it worth it for you?",[54,144,145],{},"Sometimes not, and that is worth knowing early.",[81,147,148,155,158],{},[84,149,150,151,154],{},"If your visitors hover a link for a second before clicking, the browser's own document rules\nat ",[135,152,153],{},"eagerness: moderate"," already cover you, for free and with no model.",[84,156,157],{},"The in-app win comes from warming a payload, which means prerendered or statically generated\nroutes. On a purely server-rendered route there is much less to warm.",[84,159,160],{},"It improves the median navigation and does nothing for the tail.",[162,163],"read-more",{"title":164,"to":44},"the numbers, including where precog ties the browser",{"title":166,"searchDepth":167,"depth":167,"links":168},"",2,[169,170,171,172],{"id":60,"depth":167,"text":61},{"id":78,"depth":167,"text":79},{"id":125,"depth":167,"text":126},{"id":141,"depth":167,"text":142},"Ask TypeSafe Jev which link a visitor is about to click, then warm\nexactly that navigation.","md",{"icon":11},{"icon":11},{"title":10,"description":173},"Wj85wo5222VQRc1PVIEnoc-eI4YRisJQBjsjBcMK9DY",[180,181],null,{"title":13,"path":14,"stem":15,"description":182,"icon":16,"children":-1},"nuxt-precog is a Nuxt module. Add it, set a key, and press Shift+P.",1789942050124]