[{"data":1,"prerenderedAt":2682},["ShallowReactive",2],{"navigation":3,"$UZtg7CVtNP":189,"$TgjJGouPIv":2118,"$YUXRT_y-jv":2258},[4,91,138,166,173],{"title":5,"path":6,"stem":7,"children":8,"icon":90},"Guide","/guide","1.guide/0.index",[9,12,53,69],{"title":10,"path":6,"stem":7,"icon":11},"Getting Started","pixel:play",{"title":5,"icon":13,"path":14,"stem":15,"children":16,"page":52},"ph:book-open-duotone","/guide/basics","1.guide/1.basics",[17,22,27,32,37,42,47],{"title":18,"path":19,"stem":20,"icon":21},"Request Lifecycle","/guide/basics/lifecycle","1.guide/1.basics/1.lifecycle","icon-park-outline:handle-round",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/guide/basics/routing","1.guide/1.basics/2.routing","solar:routing-bold",{"title":28,"path":29,"stem":30,"icon":31},"Middleware","/guide/basics/middleware","1.guide/1.basics/3.middleware","mdi:middleware-outline",{"title":33,"path":34,"stem":35,"icon":36},"Event Handlers","/guide/basics/handler","1.guide/1.basics/4.handler","mdi:function",{"title":38,"path":39,"stem":40,"icon":41},"Sending Response","/guide/basics/response","1.guide/1.basics/5.response","tabler:json",{"title":43,"path":44,"stem":45,"icon":46},"Error Handling","/guide/basics/error","1.guide/1.basics/6.error","tabler:error-404",{"title":48,"path":49,"stem":50,"icon":51},"Nested Apps","/guide/basics/nested-apps","1.guide/1.basics/7.nested-apps","material-symbols-light:layers-outline",false,{"title":54,"icon":55,"path":56,"stem":57,"children":58,"page":52},"API","material-symbols-light:api-rounded","/guide/api","1.guide/900.api",[59,64],{"title":60,"path":61,"stem":62,"icon":63},"H3","/guide/api/h3","1.guide/900.api/1.h3","material-symbols:bolt-rounded",{"title":65,"path":66,"stem":67,"icon":68},"H3Event","/guide/api/h3event","1.guide/900.api/2.h3event","material-symbols:data-object-rounded",{"title":70,"icon":71,"path":72,"stem":73,"children":74,"page":52},"Advanced","hugeicons:more-01","/guide/advanced","1.guide/901.advanced",[75,80,85],{"title":76,"path":77,"stem":78,"icon":79},"Plugins","/guide/advanced/plugins","1.guide/901.advanced/1.plugins","clarity:plugin-line",{"title":81,"path":82,"stem":83,"icon":84},"WebSockets","/guide/advanced/websocket","1.guide/901.advanced/2.websocket","hugeicons:live-streaming-02",{"title":86,"path":87,"stem":88,"icon":89},"Nightly Builds","/guide/advanced/nightly","1.guide/901.advanced/9.nightly","game-icons:barn-owl","i-ph:book-open-duotone",{"title":92,"path":93,"stem":94,"children":95,"icon":97},"Utils","/utils","2.utils/0.index",[96,98,103,108,113,118,123,128,133],{"title":92,"path":93,"stem":94,"icon":97},"ph:function-bold",{"title":99,"path":100,"stem":101,"icon":102},"Request","/utils/request","2.utils/1.request","material-symbols-light:input",{"title":104,"path":105,"stem":106,"icon":107},"Response","/utils/response","2.utils/2.response","material-symbols-light:output",{"title":109,"path":110,"stem":111,"icon":112},"Cookie","/utils/cookie","2.utils/3.cookie","material-symbols:cookie-outline",{"title":114,"path":115,"stem":116,"icon":117},"Security","/utils/security","2.utils/4.security","wpf:key-security",{"title":119,"path":120,"stem":121,"icon":122},"Proxy","/utils/proxy","2.utils/5.proxy","arcticons:super-proxy",{"title":124,"path":125,"stem":126,"icon":127},"MCP","/utils/mcp","2.utils/6.mcp","material-symbols:swap-calls",{"title":129,"path":130,"stem":131,"icon":132},"More utils","/utils/more","2.utils/9.more","mingcute:plus-line",{"title":134,"path":135,"stem":136,"icon":137},"Community","/utils/community","2.utils/99.community","lets-icons:external",{"title":139,"path":140,"stem":141,"children":142,"icon":144},"Examples","/examples","4.examples/0.index",[143,145,150,154,158,162],{"title":139,"path":140,"stem":141,"icon":144},"ph:code",{"title":146,"path":147,"stem":148,"icon":149},"Cookies","/examples/handle-cookie","4.examples/handle-cookie","ph:arrow-right",{"title":151,"path":152,"stem":153,"icon":149},"Sessions","/examples/handle-session","4.examples/handle-session",{"title":155,"path":156,"stem":157,"icon":149},"Static Assets","/examples/serve-static-assets","4.examples/serve-static-assets",{"title":159,"path":160,"stem":161,"icon":149},"Stream Response","/examples/stream-response","4.examples/stream-response",{"title":163,"path":164,"stem":165,"icon":149},"Validate Data","/examples/validate-data","4.examples/validate-data",{"title":167,"path":168,"stem":169,"children":170,"icon":172},"Migration","/migration","5.migration/0.index",[171],{"title":167,"path":168,"stem":169,"icon":172},"icons8:up-round",{"title":174,"path":175,"stem":176,"children":177,"page":-1},"Blog","/blog","99.blog",[178,181,185],{"title":174,"path":175,"stem":179,"icon":180},"99.blog/index","i-lucide-file-text",{"title":182,"path":183,"stem":184,"icon":180},"H3 1.8 - Towards the Edge of the Web","/blog/v1.8","99.blog/1.v1.8",{"title":186,"path":187,"stem":188,"icon":180},"H3 v2 beta","/blog/v2-beta","99.blog/2.v2-beta",{"id":190,"title":186,"body":191,"description":2106,"extension":2107,"meta":2108,"navigation":2115,"path":187,"seo":2116,"stem":188,"__hash__":2117},"content/99.blog/2.v2-beta.md",{"type":192,"value":193,"toc":2095,"icon":180},"minimark",[194,209,229,232,259,278,283,324,334,343,479,489,493,496,549,626,630,633,745,758,775,779,802,811,1100,1109,1163,1168,1172,1185,1190,1922,1930,1934,1937,1945,1949,1974,1977,1984,2016,2020,2048,2052,2057,2072,2083,2091],[195,196,197],"read-more",{"to":6},[198,199,200,201,208],"p",{},"Visit the new ",[202,203,204],"a",{"href":6},[205,206,207],"strong",{},"H3 Guide"," to get started quickly.",[198,210,211,212,218,219,224,225,228],{},"H3 started in late 2020, during the rise of edge workers. With H3 + ",[202,213,217],{"href":214,"rel":215},"https://github.com/unjs/unenv",[216],"nofollow","unjs/unenv",", we could run ",[202,220,223],{"href":221,"rel":222},"https://nitro.build",[216],"Nitro"," deployments in worker environments with Node.js compatibility, best of both worlds! Since ",[202,226,227],{"href":183},"v1.8",", H3 has improved its support for web standards.",[198,230,231],{},"But still, H3 was primarily based on Node.js APIs with a compatibility layer for web standards. Logical choice at the time, given Node.js's popularity amongst JavaScript server runtimes.",[198,233,234,235,240,241,246,247,252,253,258],{},"Thanks to evolving web standards by initiatives like ",[202,236,239],{"href":237,"rel":238},"https://wintertc.org/",[216],"WinterTC"," and runtime support in ",[202,242,245],{"href":243,"rel":244},"https://deno.com/",[216],"Deno",", ",[202,248,251],{"href":249,"rel":250},"https://bun.sh/",[216],"Bun",", and the latest ",[202,254,257],{"href":255,"rel":256},"https://nodejs.org/en",[216],"Node.js",", ecosystem is ready to embrace web standards first class for server development. Benefits include:",[260,261,262,266,269,272,275],"ul",{},[263,264,265],"li",{},"Cross-runtime interoperability (Node.js, Deno, Bun, Workers, etc.)",[263,267,268],{},"Cross-framework compatibility (H3, Hono, Elysia, etc.)",[263,270,271],{},"Cross-environment compatibility (shared and familiar code between frontend and backend)",[263,273,274],{},"Leverage more of runtime native primitives like (Request, URL, Headers, etc.)",[263,276,277],{},"Easier API testing",[279,280,282],"h2",{"id":281},"srvx-universal-web-server-api","💥 srvx: Universal Web Server API",[198,284,285,286,290,291,294,295,297,298,300,301,304,305,310,311,317,318,323],{},"A major challenge was that Node.js lacks built-in support for web-standard HTTP servers. For ",[287,288,289],"code",{},"node:http"," compatibility, an adapter is needed to bridge Node.js ",[287,292,293],{},"IncomingMessage"," to web ",[287,296,99],{},", and to handle web ",[287,299,104],{}," via Node.js ",[287,302,303],{},"ServerResponse",". We have implemented a ",[202,306,309],{"href":307,"rel":308},"https://srvx.h3.dev/guide/node",[216],"compatibility layer"," that bridges interfaces and achieves ",[205,312,313,314,316],{},"up to 96.98% of native ",[287,315,289],{}," performance"," (see ",[202,319,322],{"href":320,"rel":321},"https://github.com/h3js/srvx/tree/main/test/bench-node",[216],"benchmarks",").",[198,325,326,327,246,330,333],{},"Runtimes such as ",[202,328,245],{"href":243,"rel":329},[216],[202,331,251],{"href":249,"rel":332},[216],", and Edge Workers pioneered the adoption of web standards for servers, but they did not agree on the same interface due to lack of enough specs. So how do you access the client IP address and additional context? How do you set the server port and TLS options? How do you handle WebSocket upgrades? Each runtime created its own API.",[198,335,336,337,342],{},"We have created ",[202,338,341],{"href":339,"rel":340},"https://srvx.h3.dev",[216],"💥 srvx",": A unified layer that works everywhere exactly the same. Compatible with Deno, Bun, Node.js, Service Workers, Edge Workers.",[344,345,346,350],"details",{},[347,348,349],"summary",{},"Example",[351,352,357],"pre",{"className":353,"code":354,"language":355,"meta":356,"style":356},"language-js shiki shiki-themes github-light github-dark github-dark","// Dynamic adapter will be used based export conditions of each runtime\nimport { serve } from \"srvx\";\n\nserve({\n  port: 3000,\n  // tls: { cert: \"server.crt\", key: \"server.key\" }\n  fetch(req) {\n    // Server Extensions: req.ip, req.waitUntil(), req.runtime?.{bun,deno,node,cloudflare,...}\n    return new Response(\"👋 Hello there!\");\n  },\n});\n","js","",[287,358,359,368,389,396,406,419,425,441,447,467,473],{"__ignoreMap":356},[360,361,364],"span",{"class":362,"line":363},"line",1,[360,365,367],{"class":366},"sCsY4","// Dynamic adapter will be used based export conditions of each runtime\n",[360,369,371,375,379,382,386],{"class":362,"line":370},2,[360,372,374],{"class":373},"so5gQ","import",[360,376,378],{"class":377},"slsVL"," { serve } ",[360,380,381],{"class":373},"from",[360,383,385],{"class":384},"sfrk1"," \"srvx\"",[360,387,388],{"class":377},";\n",[360,390,392],{"class":362,"line":391},3,[360,393,395],{"emptyLinePlaceholder":394},true,"\n",[360,397,399,403],{"class":362,"line":398},4,[360,400,402],{"class":401},"shcOC","serve",[360,404,405],{"class":377},"({\n",[360,407,409,412,416],{"class":362,"line":408},5,[360,410,411],{"class":377},"  port: ",[360,413,415],{"class":414},"suiK_","3000",[360,417,418],{"class":377},",\n",[360,420,422],{"class":362,"line":421},6,[360,423,424],{"class":366},"  // tls: { cert: \"server.crt\", key: \"server.key\" }\n",[360,426,428,431,434,438],{"class":362,"line":427},7,[360,429,430],{"class":401},"  fetch",[360,432,433],{"class":377},"(",[360,435,437],{"class":436},"sQHwn","req",[360,439,440],{"class":377},") {\n",[360,442,444],{"class":362,"line":443},8,[360,445,446],{"class":366},"    // Server Extensions: req.ip, req.waitUntil(), req.runtime?.{bun,deno,node,cloudflare,...}\n",[360,448,450,453,456,459,461,464],{"class":362,"line":449},9,[360,451,452],{"class":373},"    return",[360,454,455],{"class":373}," new",[360,457,458],{"class":401}," Response",[360,460,433],{"class":377},[360,462,463],{"class":384},"\"👋 Hello there!\"",[360,465,466],{"class":377},");\n",[360,468,470],{"class":362,"line":469},10,[360,471,472],{"class":377},"  },\n",[360,474,476],{"class":362,"line":475},11,[360,477,478],{"class":377},"});\n",[480,481,482],"tip",{},[198,483,484,485,488],{},"\nWith ",[202,486,341],{"href":339,"rel":487},[216]," unifying runtime differences, H3 can remain simpler, focusing exclusively on web standard APIs.",[279,490,492],{"id":491},"h3-tiny-server-composer","⚡ H3: Tiny Server Composer 🎶",[198,494,495],{},"We worked hard to minimize and simplify H3’s scope.",[260,497,498,506,520,529,535,541],{},[263,499,500,501,505],{},"🪶 Optimized for performances, ",[202,502,504],{"href":503},"#lighter-than-a-feather","lighter"," than a feather.",[263,507,508,509,246,512,515,516,519],{},"👌 Intuitive ",[202,510,511],{"href":34},"typed handlers",[202,513,514],{"href":39},"responses"," and ",[202,517,518],{"href":44},"errors",".",[263,521,522,523,515,526,519],{},"🧩 Reusable ",[202,524,525],{"href":29},"middleware",[202,527,528],{"href":77},"plugins",[263,530,531,532,519],{},"🌳 Fast ",[202,533,534],{"href":24},"routing",[263,536,537,538,519],{},"➕ Built-in ",[202,539,540],{"href":93},"utilities",[263,542,543,544,548],{},"❤️ Maximum ",[202,545,547],{"href":546},"/guide/api/h3#h3mount","compatibility"," based on web standards.",[351,550,552],{"className":353,"code":551,"language":355,"meta":356,"style":356},"import { H3, serve } from \"h3\";\n\nconst app = new H3().get(\"/\", () => \"⚡️ Tadaa!\");\n\nserve(app, { port: 3000 });\n",[287,553,554,568,572,610,614],{"__ignoreMap":356},[360,555,556,558,561,563,566],{"class":362,"line":363},[360,557,374],{"class":373},[360,559,560],{"class":377}," { H3, serve } ",[360,562,381],{"class":373},[360,564,565],{"class":384}," \"h3\"",[360,567,388],{"class":377},[360,569,570],{"class":362,"line":370},[360,571,395],{"emptyLinePlaceholder":394},[360,573,574,577,580,583,585,588,591,594,596,599,602,605,608],{"class":362,"line":391},[360,575,576],{"class":373},"const",[360,578,579],{"class":414}," app",[360,581,582],{"class":373}," =",[360,584,455],{"class":373},[360,586,587],{"class":401}," H3",[360,589,590],{"class":377},"().",[360,592,593],{"class":401},"get",[360,595,433],{"class":377},[360,597,598],{"class":384},"\"/\"",[360,600,601],{"class":377},", () ",[360,603,604],{"class":373},"=>",[360,606,607],{"class":384}," \"⚡️ Tadaa!\"",[360,609,466],{"class":377},[360,611,612],{"class":362,"line":398},[360,613,395],{"emptyLinePlaceholder":394},[360,615,616,618,621,623],{"class":362,"line":408},[360,617,402],{"class":401},[360,619,620],{"class":377},"(app, { port: ",[360,622,415],{"class":414},[360,624,625],{"class":377}," });\n",[279,627,629],{"id":628},"lighter-than-a-feather","🪶 Lighter Than a Feather",[198,631,632],{},"We approached benchmarking with a new method that focuses on measuring the overhead introduced by the framework itself, rather than the network layer. Our goal is to optimize all relevant measurements together, making the numbers as close as possible to a baseline where no framework is added or used. This method allowed H3 to achieve optimized latency improvements per request and a dramatically smaller core bundle size.",[634,635,636,652],"table",{},[637,638,639],"thead",{},[640,641,642,646,649],"tr",{},[643,644,645],"th",{},"Measurement",[643,647,648],{},"H3 v1",[643,650,651],{},"🚀 H3 v2",[653,654,655,701],"tbody",{},[640,656,657,661,671],{},[658,659,660],"td",{},"Request Handling",[658,662,663,664,667,668,670],{},"Node: 36 µs ",[665,666],"br",{}," Bun: 27 µs ",[665,669],{}," Deno: 7 ms",[658,672,673,674,677,678,681,682,684,685,677,688,681,691,693,694,677,697,700],{},"Node: ",[205,675,676],{},"7 µs"," (",[205,679,680],{},"5x faster",") ",[665,683],{}," Bun: ",[205,686,687],{},"3 µs",[205,689,690],{},"9x faster",[665,692],{}," Deno: ",[205,695,696],{},"1.2 µs",[205,698,699],{},"156x faster",")",[640,702,703,706,712],{},[658,704,705],{},"Bundle Size",[658,707,708,709,711],{},"min: 101 kB ",[665,710],{}," min+gzip: 39.6 kB",[658,713,714,715,677,718,681,721,723,724,677,727,681,730,732,733,736,737,677,740,744],{},"min: ",[205,716,717],{},"9,1 kB",[205,719,720],{},"91% smaller",[665,722],{}," min+gzip: ",[205,725,726],{},"3.6 kB",[205,728,729],{},"90% smaller",[665,731],{}," min: ",[205,734,735],{},"5.2 kB"," / min+gzip: ",[205,738,739],{},"2.1 kB",[202,741,743],{"href":742},"/guide/basics/handler#handler-fetch","fetchable"," handlers)",[480,746,747],{},[198,748,749,750,753,754,757],{},"\nH3 v2 performance is nearly identical to plain ",[287,751,752],{},"fetch"," handler with ",[287,755,756],{},"new URL(req.url).pathname"," for routing. In other words, you get the benefits of H3 with nearly zero performance cost!",[759,760,761],"note",{},[198,762,763,764,769,770,774],{},"\nBenchmarks apply to the H3 core using the Web Standard target and do not include adapters. They are primarily intended for internal optimization purposes. See the ",[202,765,768],{"href":766,"rel":767},"https://github.com/h3js/h3/tree/main/test/bench",[216],"benchmark"," for details and ",[202,771,773],{"href":320,"rel":772},[216],"srvx benchmarks"," for Node.js adapter performances.",[279,776,778],{"id":777},"typed-web-standards","✅ Typed Web Standards",[198,780,781,782,246,786,246,790,795,796,801],{},"H3 adopts web standard APIs such as ",[202,783,99],{"href":784,"rel":785},"https://developer.mozilla.org/en-US/docs/Web/API/Request",[216],[202,787,104],{"href":788,"rel":789},"https://developer.mozilla.org/en-US/docs/Web/API/Response",[216],[202,791,794],{"href":792,"rel":793},"https://developer.mozilla.org/en-US/docs/Web/API/URL",[216],"URL",", and ",[202,797,800],{"href":798,"rel":799},"https://developer.mozilla.org/en-US/docs/Web/API/Headers",[216],"Headers",", without introducing new conventions on top of the standards.",[198,803,804,805,810],{},"We have launched a new initiative to strongly type Web APIs: ",[202,806,809],{"href":807,"rel":808},"https://github.com/unjs/fetchdts",[216],"✅ fetchdts",". Integrated into the H3, now we combine the best of both worlds—standards and the convenience of types.",[351,812,814],{"className":353,"code":813,"language":355,"meta":356,"style":356},"import { defineHandler } from \"h3\";\n\nconst handler = defineHandler(async (event) => {\n  // URL Parsing\n  const { pathname, searchParams } = event.url;\n\n  // Access to request headers (try auto-completion in editor!)\n  const accept = event.req.headers.get(\"Accept\");\n\n  // Read body\n  const bodyStream = await event.req.body;\n  const bodyText = await event.req.text();\n  const bodyJSON = await event.req.json();\n  const bodyFormData = await event.req.formData();\n\n  // Access to runtime specific context\n  const { deno, bun, node } = event.req.runtime;\n\n  // Prepare response (h3 does this smartly)\n  event.res.headers.set(\"Content-Type\", \"application/json\");\n\n  return { hello: \"web\" };\n});\n",[287,815,816,829,833,862,867,892,896,901,922,926,931,946,967,986,1005,1010,1016,1043,1048,1054,1075,1080,1095],{"__ignoreMap":356},[360,817,818,820,823,825,827],{"class":362,"line":363},[360,819,374],{"class":373},[360,821,822],{"class":377}," { defineHandler } ",[360,824,381],{"class":373},[360,826,565],{"class":384},[360,828,388],{"class":377},[360,830,831],{"class":362,"line":370},[360,832,395],{"emptyLinePlaceholder":394},[360,834,835,837,840,842,845,847,850,852,855,857,859],{"class":362,"line":391},[360,836,576],{"class":373},[360,838,839],{"class":414}," handler",[360,841,582],{"class":373},[360,843,844],{"class":401}," defineHandler",[360,846,433],{"class":377},[360,848,849],{"class":373},"async",[360,851,677],{"class":377},[360,853,854],{"class":436},"event",[360,856,681],{"class":377},[360,858,604],{"class":373},[360,860,861],{"class":377}," {\n",[360,863,864],{"class":362,"line":398},[360,865,866],{"class":366},"  // URL Parsing\n",[360,868,869,872,875,878,880,883,886,889],{"class":362,"line":408},[360,870,871],{"class":373},"  const",[360,873,874],{"class":377}," { ",[360,876,877],{"class":414},"pathname",[360,879,246],{"class":377},[360,881,882],{"class":414},"searchParams",[360,884,885],{"class":377}," } ",[360,887,888],{"class":373},"=",[360,890,891],{"class":377}," event.url;\n",[360,893,894],{"class":362,"line":421},[360,895,395],{"emptyLinePlaceholder":394},[360,897,898],{"class":362,"line":427},[360,899,900],{"class":366},"  // Access to request headers (try auto-completion in editor!)\n",[360,902,903,905,908,910,913,915,917,920],{"class":362,"line":443},[360,904,871],{"class":373},[360,906,907],{"class":414}," accept",[360,909,582],{"class":373},[360,911,912],{"class":377}," event.req.headers.",[360,914,593],{"class":401},[360,916,433],{"class":377},[360,918,919],{"class":384},"\"Accept\"",[360,921,466],{"class":377},[360,923,924],{"class":362,"line":449},[360,925,395],{"emptyLinePlaceholder":394},[360,927,928],{"class":362,"line":469},[360,929,930],{"class":366},"  // Read body\n",[360,932,933,935,938,940,943],{"class":362,"line":475},[360,934,871],{"class":373},[360,936,937],{"class":414}," bodyStream",[360,939,582],{"class":373},[360,941,942],{"class":373}," await",[360,944,945],{"class":377}," event.req.body;\n",[360,947,949,951,954,956,958,961,964],{"class":362,"line":948},12,[360,950,871],{"class":373},[360,952,953],{"class":414}," bodyText",[360,955,582],{"class":373},[360,957,942],{"class":373},[360,959,960],{"class":377}," event.req.",[360,962,963],{"class":401},"text",[360,965,966],{"class":377},"();\n",[360,968,970,972,975,977,979,981,984],{"class":362,"line":969},13,[360,971,871],{"class":373},[360,973,974],{"class":414}," bodyJSON",[360,976,582],{"class":373},[360,978,942],{"class":373},[360,980,960],{"class":377},[360,982,983],{"class":401},"json",[360,985,966],{"class":377},[360,987,989,991,994,996,998,1000,1003],{"class":362,"line":988},14,[360,990,871],{"class":373},[360,992,993],{"class":414}," bodyFormData",[360,995,582],{"class":373},[360,997,942],{"class":373},[360,999,960],{"class":377},[360,1001,1002],{"class":401},"formData",[360,1004,966],{"class":377},[360,1006,1008],{"class":362,"line":1007},15,[360,1009,395],{"emptyLinePlaceholder":394},[360,1011,1013],{"class":362,"line":1012},16,[360,1014,1015],{"class":366},"  // Access to runtime specific context\n",[360,1017,1019,1021,1023,1026,1028,1031,1033,1036,1038,1040],{"class":362,"line":1018},17,[360,1020,871],{"class":373},[360,1022,874],{"class":377},[360,1024,1025],{"class":414},"deno",[360,1027,246],{"class":377},[360,1029,1030],{"class":414},"bun",[360,1032,246],{"class":377},[360,1034,1035],{"class":414},"node",[360,1037,885],{"class":377},[360,1039,888],{"class":373},[360,1041,1042],{"class":377}," event.req.runtime;\n",[360,1044,1046],{"class":362,"line":1045},18,[360,1047,395],{"emptyLinePlaceholder":394},[360,1049,1051],{"class":362,"line":1050},19,[360,1052,1053],{"class":366},"  // Prepare response (h3 does this smartly)\n",[360,1055,1057,1060,1063,1065,1068,1070,1073],{"class":362,"line":1056},20,[360,1058,1059],{"class":377},"  event.res.headers.",[360,1061,1062],{"class":401},"set",[360,1064,433],{"class":377},[360,1066,1067],{"class":384},"\"Content-Type\"",[360,1069,246],{"class":377},[360,1071,1072],{"class":384},"\"application/json\"",[360,1074,466],{"class":377},[360,1076,1078],{"class":362,"line":1077},21,[360,1079,395],{"emptyLinePlaceholder":394},[360,1081,1083,1086,1089,1092],{"class":362,"line":1082},22,[360,1084,1085],{"class":373},"  return",[360,1087,1088],{"class":377}," { hello: ",[360,1090,1091],{"class":384},"\"web\"",[360,1093,1094],{"class":377}," };\n",[360,1096,1098],{"class":362,"line":1097},23,[360,1099,478],{"class":377},[198,1101,1102,1103,1108],{},"Now go ahead and call handler ",[202,1104,1105],{"href":742},[287,1106,1107],{},".fetch",":",[351,1110,1112],{"className":353,"code":1111,"language":355,"meta":356,"style":356},"const response = await handler.fetch(\"/\");\n\n// 🧙 Typed response: { hello: string; }\nconst json = await response.json();\n",[287,1113,1114,1136,1140,1145],{"__ignoreMap":356},[360,1115,1116,1118,1121,1123,1125,1128,1130,1132,1134],{"class":362,"line":363},[360,1117,576],{"class":373},[360,1119,1120],{"class":414}," response",[360,1122,582],{"class":373},[360,1124,942],{"class":373},[360,1126,1127],{"class":377}," handler.",[360,1129,752],{"class":401},[360,1131,433],{"class":377},[360,1133,598],{"class":384},[360,1135,466],{"class":377},[360,1137,1138],{"class":362,"line":370},[360,1139,395],{"emptyLinePlaceholder":394},[360,1141,1142],{"class":362,"line":391},[360,1143,1144],{"class":366},"// 🧙 Typed response: { hello: string; }\n",[360,1146,1147,1149,1152,1154,1156,1159,1161],{"class":362,"line":398},[360,1148,576],{"class":373},[360,1150,1151],{"class":414}," json",[360,1153,582],{"class":373},[360,1155,942],{"class":373},[360,1157,1158],{"class":377}," response.",[360,1160,983],{"class":401},[360,1162,966],{"class":377},[480,1164,1165],{},[198,1166,1167],{},"\nYou can directly use event handlers as a standalone, even smaller web handlers without h3 core!",[279,1169,1171],{"id":1170},"middleware-and-plugins","🧩 Middleware and Plugins",[198,1173,1174,1175,1178,1179,1184],{},"H3 now offers an ergonomic, composable way to chain middleware using ",[287,1176,1177],{},"next()"," function (inspired by ",[202,1180,1183],{"href":1181,"rel":1182},"https://hono.dev/docs/guides/middleware",[216],"Hono middleware"," 💛).",[198,1186,1187,1188,519],{},"Additionally, we have introduced a simple yet powerful pattern to extend H3 apps using reusable ",[202,1189,528],{"href":77},[1191,1192,1193,1323,1418,1528,1635,1751],"CodeGroup",{},[351,1194,1196],{"className":353,"code":1195,"filename":525,"language":355,"meta":356,"style":356},"import { H3 } from \"h3\";\n\nconst app = new H3().use(async (event, next) => {\n  // ... before response ...\n  const body = await next();\n  // ... after response ...\n  event.res.headers.append(\"x-middleware\", \"works\");\n  event.waitUntil(sendMetrics(event));\n  return body;\n});\n",[287,1197,1198,1211,1215,1251,1256,1272,1277,1296,1312,1319],{"__ignoreMap":356},[360,1199,1200,1202,1205,1207,1209],{"class":362,"line":363},[360,1201,374],{"class":373},[360,1203,1204],{"class":377}," { H3 } ",[360,1206,381],{"class":373},[360,1208,565],{"class":384},[360,1210,388],{"class":377},[360,1212,1213],{"class":362,"line":370},[360,1214,395],{"emptyLinePlaceholder":394},[360,1216,1217,1219,1221,1223,1225,1227,1229,1232,1234,1236,1238,1240,1242,1245,1247,1249],{"class":362,"line":391},[360,1218,576],{"class":373},[360,1220,579],{"class":414},[360,1222,582],{"class":373},[360,1224,455],{"class":373},[360,1226,587],{"class":401},[360,1228,590],{"class":377},[360,1230,1231],{"class":401},"use",[360,1233,433],{"class":377},[360,1235,849],{"class":373},[360,1237,677],{"class":377},[360,1239,854],{"class":436},[360,1241,246],{"class":377},[360,1243,1244],{"class":436},"next",[360,1246,681],{"class":377},[360,1248,604],{"class":373},[360,1250,861],{"class":377},[360,1252,1253],{"class":362,"line":398},[360,1254,1255],{"class":366},"  // ... before response ...\n",[360,1257,1258,1260,1263,1265,1267,1270],{"class":362,"line":408},[360,1259,871],{"class":373},[360,1261,1262],{"class":414}," body",[360,1264,582],{"class":373},[360,1266,942],{"class":373},[360,1268,1269],{"class":401}," next",[360,1271,966],{"class":377},[360,1273,1274],{"class":362,"line":421},[360,1275,1276],{"class":366},"  // ... after response ...\n",[360,1278,1279,1281,1284,1286,1289,1291,1294],{"class":362,"line":427},[360,1280,1059],{"class":377},[360,1282,1283],{"class":401},"append",[360,1285,433],{"class":377},[360,1287,1288],{"class":384},"\"x-middleware\"",[360,1290,246],{"class":377},[360,1292,1293],{"class":384},"\"works\"",[360,1295,466],{"class":377},[360,1297,1298,1301,1304,1306,1309],{"class":362,"line":443},[360,1299,1300],{"class":377},"  event.",[360,1302,1303],{"class":401},"waitUntil",[360,1305,433],{"class":377},[360,1307,1308],{"class":401},"sendMetrics",[360,1310,1311],{"class":377},"(event));\n",[360,1313,1314,1316],{"class":362,"line":449},[360,1315,1085],{"class":373},[360,1317,1318],{"class":377}," body;\n",[360,1320,1321],{"class":362,"line":469},[360,1322,478],{"class":377},[351,1324,1327],{"className":353,"code":1325,"filename":1326,"language":355,"meta":356,"style":356},"import { defineHandler, basicAuth } from \"h3\";\n\nexport default defineHandler({\n  middleware: [basicAuth({ password: \"test\" })],\n  handler: (event) => `Hello ${event.context.basicAuth?.username}!`,\n});\n","basic auth",[287,1328,1329,1342,1346,1358,1375,1414],{"__ignoreMap":356},[360,1330,1331,1333,1336,1338,1340],{"class":362,"line":363},[360,1332,374],{"class":373},[360,1334,1335],{"class":377}," { defineHandler, basicAuth } ",[360,1337,381],{"class":373},[360,1339,565],{"class":384},[360,1341,388],{"class":377},[360,1343,1344],{"class":362,"line":370},[360,1345,395],{"emptyLinePlaceholder":394},[360,1347,1348,1351,1354,1356],{"class":362,"line":391},[360,1349,1350],{"class":373},"export",[360,1352,1353],{"class":373}," default",[360,1355,844],{"class":401},[360,1357,405],{"class":377},[360,1359,1360,1363,1366,1369,1372],{"class":362,"line":398},[360,1361,1362],{"class":377},"  middleware: [",[360,1364,1365],{"class":401},"basicAuth",[360,1367,1368],{"class":377},"({ password: ",[360,1370,1371],{"class":384},"\"test\"",[360,1373,1374],{"class":377}," })],\n",[360,1376,1377,1380,1383,1385,1387,1389,1392,1394,1396,1399,1401,1403,1406,1409,1412],{"class":362,"line":408},[360,1378,1379],{"class":401},"  handler",[360,1381,1382],{"class":377},": (",[360,1384,854],{"class":436},[360,1386,681],{"class":377},[360,1388,604],{"class":373},[360,1390,1391],{"class":384}," `Hello ${",[360,1393,854],{"class":377},[360,1395,519],{"class":384},[360,1397,1398],{"class":377},"context",[360,1400,519],{"class":384},[360,1402,1365],{"class":377},[360,1404,1405],{"class":384},"?.",[360,1407,1408],{"class":377},"username",[360,1410,1411],{"class":384},"}!`",[360,1413,418],{"class":377},[360,1415,1416],{"class":362,"line":421},[360,1417,478],{"class":377},[351,1419,1422],{"className":353,"code":1420,"filename":1421,"language":355,"meta":356,"style":356},"import { H3, onRequest } from \"h3\";\n\nconst app = new H3().use(\n  onRequest((event) => {\n    console.log(`Request: [${event.req.method}] ${event.url.pathname}`);\n  }),\n);\n","onRequest",[287,1423,1424,1437,1441,1460,1476,1519,1524],{"__ignoreMap":356},[360,1425,1426,1428,1431,1433,1435],{"class":362,"line":363},[360,1427,374],{"class":373},[360,1429,1430],{"class":377}," { H3, onRequest } ",[360,1432,381],{"class":373},[360,1434,565],{"class":384},[360,1436,388],{"class":377},[360,1438,1439],{"class":362,"line":370},[360,1440,395],{"emptyLinePlaceholder":394},[360,1442,1443,1445,1447,1449,1451,1453,1455,1457],{"class":362,"line":391},[360,1444,576],{"class":373},[360,1446,579],{"class":414},[360,1448,582],{"class":373},[360,1450,455],{"class":373},[360,1452,587],{"class":401},[360,1454,590],{"class":377},[360,1456,1231],{"class":401},[360,1458,1459],{"class":377},"(\n",[360,1461,1462,1465,1468,1470,1472,1474],{"class":362,"line":398},[360,1463,1464],{"class":401},"  onRequest",[360,1466,1467],{"class":377},"((",[360,1469,854],{"class":436},[360,1471,681],{"class":377},[360,1473,604],{"class":373},[360,1475,861],{"class":377},[360,1477,1478,1481,1484,1486,1489,1491,1493,1495,1497,1500,1503,1505,1507,1510,1512,1514,1517],{"class":362,"line":408},[360,1479,1480],{"class":377},"    console.",[360,1482,1483],{"class":401},"log",[360,1485,433],{"class":377},[360,1487,1488],{"class":384},"`Request: [${",[360,1490,854],{"class":377},[360,1492,519],{"class":384},[360,1494,437],{"class":377},[360,1496,519],{"class":384},[360,1498,1499],{"class":377},"method",[360,1501,1502],{"class":384},"}] ${",[360,1504,854],{"class":377},[360,1506,519],{"class":384},[360,1508,1509],{"class":377},"url",[360,1511,519],{"class":384},[360,1513,877],{"class":377},[360,1515,1516],{"class":384},"}`",[360,1518,466],{"class":377},[360,1520,1521],{"class":362,"line":421},[360,1522,1523],{"class":377},"  }),\n",[360,1525,1526],{"class":362,"line":427},[360,1527,466],{"class":377},[351,1529,1532],{"className":353,"code":1530,"filename":1531,"language":355,"meta":356,"style":356},"import { H3, onResponse } from \"h3\";\n\nconst app = new H3().use(\n  onResponse((response, event) => {\n    console.log(`Response: [${event.req.method}] ${event.url.pathname}`, body);\n  }),\n);\n","onResponse",[287,1533,1534,1547,1551,1569,1589,1627,1631],{"__ignoreMap":356},[360,1535,1536,1538,1541,1543,1545],{"class":362,"line":363},[360,1537,374],{"class":373},[360,1539,1540],{"class":377}," { H3, onResponse } ",[360,1542,381],{"class":373},[360,1544,565],{"class":384},[360,1546,388],{"class":377},[360,1548,1549],{"class":362,"line":370},[360,1550,395],{"emptyLinePlaceholder":394},[360,1552,1553,1555,1557,1559,1561,1563,1565,1567],{"class":362,"line":391},[360,1554,576],{"class":373},[360,1556,579],{"class":414},[360,1558,582],{"class":373},[360,1560,455],{"class":373},[360,1562,587],{"class":401},[360,1564,590],{"class":377},[360,1566,1231],{"class":401},[360,1568,1459],{"class":377},[360,1570,1571,1574,1576,1579,1581,1583,1585,1587],{"class":362,"line":398},[360,1572,1573],{"class":401},"  onResponse",[360,1575,1467],{"class":377},[360,1577,1578],{"class":436},"response",[360,1580,246],{"class":377},[360,1582,854],{"class":436},[360,1584,681],{"class":377},[360,1586,604],{"class":373},[360,1588,861],{"class":377},[360,1590,1591,1593,1595,1597,1600,1602,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622,1624],{"class":362,"line":408},[360,1592,1480],{"class":377},[360,1594,1483],{"class":401},[360,1596,433],{"class":377},[360,1598,1599],{"class":384},"`Response: [${",[360,1601,854],{"class":377},[360,1603,519],{"class":384},[360,1605,437],{"class":377},[360,1607,519],{"class":384},[360,1609,1499],{"class":377},[360,1611,1502],{"class":384},[360,1613,854],{"class":377},[360,1615,519],{"class":384},[360,1617,1509],{"class":377},[360,1619,519],{"class":384},[360,1621,877],{"class":377},[360,1623,1516],{"class":384},[360,1625,1626],{"class":377},", body);\n",[360,1628,1629],{"class":362,"line":421},[360,1630,1523],{"class":377},[360,1632,1633],{"class":362,"line":427},[360,1634,466],{"class":377},[351,1636,1639],{"className":353,"code":1637,"filename":1638,"language":355,"meta":356,"style":356},"import { H3, onError } from \"h3\";\n\nconst app = new H3().use(\n  onError((error, event) => {\n    console.error(`[${event.req.method}] ${event.url.pathname} !! ${error.message}`);\n  }),\n);\n","onError",[287,1640,1641,1654,1658,1676,1696,1743,1747],{"__ignoreMap":356},[360,1642,1643,1645,1648,1650,1652],{"class":362,"line":363},[360,1644,374],{"class":373},[360,1646,1647],{"class":377}," { H3, onError } ",[360,1649,381],{"class":373},[360,1651,565],{"class":384},[360,1653,388],{"class":377},[360,1655,1656],{"class":362,"line":370},[360,1657,395],{"emptyLinePlaceholder":394},[360,1659,1660,1662,1664,1666,1668,1670,1672,1674],{"class":362,"line":391},[360,1661,576],{"class":373},[360,1663,579],{"class":414},[360,1665,582],{"class":373},[360,1667,455],{"class":373},[360,1669,587],{"class":401},[360,1671,590],{"class":377},[360,1673,1231],{"class":401},[360,1675,1459],{"class":377},[360,1677,1678,1681,1683,1686,1688,1690,1692,1694],{"class":362,"line":398},[360,1679,1680],{"class":401},"  onError",[360,1682,1467],{"class":377},[360,1684,1685],{"class":436},"error",[360,1687,246],{"class":377},[360,1689,854],{"class":436},[360,1691,681],{"class":377},[360,1693,604],{"class":373},[360,1695,861],{"class":377},[360,1697,1698,1700,1702,1704,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1732,1734,1736,1739,1741],{"class":362,"line":408},[360,1699,1480],{"class":377},[360,1701,1685],{"class":401},[360,1703,433],{"class":377},[360,1705,1706],{"class":384},"`[${",[360,1708,854],{"class":377},[360,1710,519],{"class":384},[360,1712,437],{"class":377},[360,1714,519],{"class":384},[360,1716,1499],{"class":377},[360,1718,1502],{"class":384},[360,1720,854],{"class":377},[360,1722,519],{"class":384},[360,1724,1509],{"class":377},[360,1726,519],{"class":384},[360,1728,877],{"class":377},[360,1730,1731],{"class":384},"} !! ${",[360,1733,1685],{"class":377},[360,1735,519],{"class":384},[360,1737,1738],{"class":377},"message",[360,1740,1516],{"class":384},[360,1742,466],{"class":377},[360,1744,1745],{"class":362,"line":421},[360,1746,1523],{"class":377},[360,1748,1749],{"class":362,"line":427},[360,1750,466],{"class":377},[351,1752,1754],{"className":353,"code":1753,"filename":528,"language":355,"meta":356,"style":356},"import { H3, serve, definePlugin } from \"h3\";\n\nconst logger = definePlugin((h3, _options) => {\n  if (h3.config.debug) {\n    h3.use((req) => {\n      console.log(`[${req.method}] ${req.url}`);\n    });\n  }\n});\n\nconst app = new H3({ debug: true }).register(logger()).all(\"/**\", () => \"Hello!\");\n",[287,1755,1756,1769,1773,1801,1809,1826,1855,1860,1865,1869,1873],{"__ignoreMap":356},[360,1757,1758,1760,1763,1765,1767],{"class":362,"line":363},[360,1759,374],{"class":373},[360,1761,1762],{"class":377}," { H3, serve, definePlugin } ",[360,1764,381],{"class":373},[360,1766,565],{"class":384},[360,1768,388],{"class":377},[360,1770,1771],{"class":362,"line":370},[360,1772,395],{"emptyLinePlaceholder":394},[360,1774,1775,1777,1780,1782,1785,1787,1790,1792,1795,1797,1799],{"class":362,"line":391},[360,1776,576],{"class":373},[360,1778,1779],{"class":414}," logger",[360,1781,582],{"class":373},[360,1783,1784],{"class":401}," definePlugin",[360,1786,1467],{"class":377},[360,1788,1789],{"class":436},"h3",[360,1791,246],{"class":377},[360,1793,1794],{"class":436},"_options",[360,1796,681],{"class":377},[360,1798,604],{"class":373},[360,1800,861],{"class":377},[360,1802,1803,1806],{"class":362,"line":398},[360,1804,1805],{"class":373},"  if",[360,1807,1808],{"class":377}," (h3.config.debug) {\n",[360,1810,1811,1814,1816,1818,1820,1822,1824],{"class":362,"line":408},[360,1812,1813],{"class":377},"    h3.",[360,1815,1231],{"class":401},[360,1817,1467],{"class":377},[360,1819,437],{"class":436},[360,1821,681],{"class":377},[360,1823,604],{"class":373},[360,1825,861],{"class":377},[360,1827,1828,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853],{"class":362,"line":421},[360,1829,1830],{"class":377},"      console.",[360,1832,1483],{"class":401},[360,1834,433],{"class":377},[360,1836,1706],{"class":384},[360,1838,437],{"class":377},[360,1840,519],{"class":384},[360,1842,1499],{"class":377},[360,1844,1502],{"class":384},[360,1846,437],{"class":377},[360,1848,519],{"class":384},[360,1850,1509],{"class":377},[360,1852,1516],{"class":384},[360,1854,466],{"class":377},[360,1856,1857],{"class":362,"line":427},[360,1858,1859],{"class":377},"    });\n",[360,1861,1862],{"class":362,"line":443},[360,1863,1864],{"class":377},"  }\n",[360,1866,1867],{"class":362,"line":449},[360,1868,478],{"class":377},[360,1870,1871],{"class":362,"line":469},[360,1872,395],{"emptyLinePlaceholder":394},[360,1874,1875,1877,1879,1881,1883,1885,1888,1891,1894,1897,1899,1902,1905,1908,1910,1913,1915,1917,1920],{"class":362,"line":475},[360,1876,576],{"class":373},[360,1878,579],{"class":414},[360,1880,582],{"class":373},[360,1882,455],{"class":373},[360,1884,587],{"class":401},[360,1886,1887],{"class":377},"({ debug: ",[360,1889,1890],{"class":414},"true",[360,1892,1893],{"class":377}," }).",[360,1895,1896],{"class":401},"register",[360,1898,433],{"class":377},[360,1900,1901],{"class":401},"logger",[360,1903,1904],{"class":377},"()).",[360,1906,1907],{"class":401},"all",[360,1909,433],{"class":377},[360,1911,1912],{"class":384},"\"/**\"",[360,1914,601],{"class":377},[360,1916,604],{"class":373},[360,1918,1919],{"class":384}," \"Hello!\"",[360,1921,466],{"class":377},[759,1923,1924],{},[198,1925,1926,1927,1929],{},"\nAccepting ",[287,1928,1244],{}," callback is optional. Middleware can be written like v1 without returning a response.",[279,1931,1933],{"id":1932},"️-migration-from-version-1","⬆️ Migration from Version 1",[198,1935,1936],{},"We've tried to minimize breaking changes. Most of utilities preserved backward compatibility.",[195,1938,1939],{"to":168},[198,1940,1941,1942,519],{},"Check out ",[202,1943,1944],{"href":168},"Migration Guide",[279,1946,1948],{"id":1947},"unified-http-server-tools-for-everyone","🙌 Unified H(TTP) Server Tools for Everyone",[198,1950,1951,1952,1957,1958,1963,1964,1969,1970,1184],{},"H3 and related projects moved to a dedicated ",[202,1953,1956],{"href":1954,"rel":1955},"https://github.com/h3js",[216],"github org"," and new ",[202,1959,1962],{"href":1960,"rel":1961},"https://h3.dev",[216],"h3.dev"," domain (thanks to the donation from ",[202,1965,1968],{"href":1966,"rel":1967},"https://syntax.fm/",[216],"syntax.fm"," and other ",[202,1971,1973],{"href":1972},"/#sponsors","sponsors",[198,1975,1976],{},"Under the H3 umbrella, we maintain several key components for universal JavaScript servers.",[198,1978,1979,1980,1983],{},"All fully open and usable with ",[205,1981,1982],{},"or without"," H3, and with any JavaScript runtime.",[260,1985,1986,1994,2002,2008],{},[263,1987,1988,1993],{},[202,1989,1992],{"href":1990,"rel":1991},"https://github.com/h3js/h3",[216],"⚡️ h3",": Minimal HTTP Framework.",[263,1995,1996,2001],{},[202,1997,2000],{"href":1998,"rel":1999},"https://github.com/h3js/rou3",[216],"🌳 rou3",": Lightweight JavaScript Router.",[263,2003,2004,2007],{},[202,2005,341],{"href":339,"rel":2006},[216],": Universal Web-based Server API.",[263,2009,2010,2015],{},[202,2011,2014],{"href":2012,"rel":2013},"https://crossws.h3.dev",[216],"🔌 crossws",": Cross-platform WebSocket support.",[279,2017,2019],{"id":2018},"️-special-thanks","❤️ Special Thanks",[198,2021,2022,2023,2028,2029,2034,2035,515,2040,795,2045,2047],{},"This release would not have been possible without wonderful ",[202,2024,2027],{"href":2025,"rel":2026},"https://github.com/h3js/h3/graphs/contributors",[216],"contributors",", feedback from the ",[202,2030,2033],{"href":2031,"rel":2032},"https://discord.h3.dev",[216],"community",", inspirations from web-standard frameworks including ",[202,2036,2039],{"href":2037,"rel":2038},"https://hono.dev/",[216],"Hono",[202,2041,2044],{"href":2042,"rel":2043},"https://elysiajs.com/",[216],"Elysia",[202,2046,1973],{"href":1972}," who made it possible to work on open source.",[279,2049,2051],{"id":2050},"️-roadmap-to-v2-stable","🗺️ Roadmap to v2 (stable)",[198,2053,2054],{},[205,2055,2056],{},"Next steps:",[260,2058,2059,2062,2065],{},[263,2060,2061],{},"Gather feedback from community.",[263,2063,2064],{},"Finalize API updates based on feedbacks.",[263,2066,2067,2068,2071],{},"Ensure ecosystem compatibility and upgrade for ",[202,2069,223],{"href":221,"rel":2070},[216]," v3.",[2073,2074,2075],"callout",{"to":2031},[198,2076,2077,2078,2082],{},"Join our ",[202,2079,2081],{"href":2031,"rel":2080},[216],"Discord"," to share your experience and feedback!",[195,2084,2085],{"to":6},[198,2086,200,2087,208],{},[202,2088,2089],{"href":6},[205,2090,207],{},[2092,2093,2094],"style",{},"html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}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":356,"searchDepth":370,"depth":370,"links":2096},[2097,2098,2099,2100,2101,2102,2103,2104,2105],{"id":281,"depth":370,"text":282},{"id":491,"depth":370,"text":492},{"id":628,"depth":370,"text":629},{"id":777,"depth":370,"text":778},{"id":1170,"depth":370,"text":1171},{"id":1932,"depth":370,"text":1933},{"id":1947,"depth":370,"text":1948},{"id":2018,"depth":370,"text":2019},{"id":2050,"depth":370,"text":2051},"⚡ H3 v2 beta is here — fully rewritten on web standards, backward-compatible, and faster than ever!","md",{"date":2109,"category":2110,"authors":2111,"icon":180},"2025-06-10","release",[2112],{"name":2113,"github":2114},"Pooya Parsa","pi0",{"icon":180},{"title":186,"description":2106},"hdrF6zuHk_F5FYh__oDgfRBS-bV6uoSbGgylUIvQsXY",[2119,2123,2128,2133,2138,2143,2148,2153,2158,2163,2168,2173,2178,2183,2188,2193,2198,2203,2208,2213,2218,2223,2228,2233,2238,2243,2248,2253],{"name":2120,"username":2114,"profile":2121,"avatar":2122},"@pi0","https://github.com/pi0","https://github.com/pi0.png",{"name":2124,"username":2125,"profile":2126,"avatar":2127},"@danielroe","danielroe","https://github.com/danielroe","https://github.com/danielroe.png",{"name":2129,"username":2130,"profile":2131,"avatar":2132},"@iiio2","iiio2","https://github.com/iiio2","https://github.com/iiio2.png",{"name":2134,"username":2135,"profile":2136,"avatar":2137},"@kricsleo","kricsleo","https://github.com/kricsleo","https://github.com/kricsleo.png",{"name":2139,"username":2140,"profile":2141,"avatar":2142},"@atinux","atinux","https://github.com/atinux","https://github.com/atinux.png",{"name":2144,"username":2145,"profile":2146,"avatar":2147},"@nozomuikuta","nozomuikuta","https://github.com/nozomuikuta","https://github.com/nozomuikuta.png",{"name":2149,"username":2150,"profile":2151,"avatar":2152},"@Barbapapazes","Barbapapazes","https://github.com/Barbapapazes","https://github.com/Barbapapazes.png",{"name":2154,"username":2155,"profile":2156,"avatar":2157},"@Hebilicious","Hebilicious","https://github.com/Hebilicious","https://github.com/Hebilicious.png",{"name":2159,"username":2160,"profile":2161,"avatar":2162},"@huseeiin","huseeiin","https://github.com/huseeiin","https://github.com/huseeiin.png",{"name":2164,"username":2165,"profile":2166,"avatar":2167},"@sandros94","sandros94","https://github.com/sandros94","https://github.com/sandros94.png",{"name":2169,"username":2170,"profile":2171,"avatar":2172},"@TheAlexLichter","TheAlexLichter","https://github.com/TheAlexLichter","https://github.com/TheAlexLichter.png",{"name":2174,"username":2175,"profile":2176,"avatar":2177},"@aaharu","aaharu","https://github.com/aaharu","https://github.com/aaharu.png",{"name":2179,"username":2180,"profile":2181,"avatar":2182},"@GalacticHypernova","GalacticHypernova","https://github.com/GalacticHypernova","https://github.com/GalacticHypernova.png",{"name":2184,"username":2185,"profile":2186,"avatar":2187},"@Aareksio","Aareksio","https://github.com/Aareksio","https://github.com/Aareksio.png",{"name":2189,"username":2190,"profile":2191,"avatar":2192},"@ytjmt","ytjmt","https://github.com/ytjmt","https://github.com/ytjmt.png",{"name":2194,"username":2195,"profile":2196,"avatar":2197},"@productdevbook","productdevbook","https://github.com/productdevbook","https://github.com/productdevbook.png",{"name":2199,"username":2200,"profile":2201,"avatar":2202},"@tobiasdiez","tobiasdiez","https://github.com/tobiasdiez","https://github.com/tobiasdiez.png",{"name":2204,"username":2205,"profile":2206,"avatar":2207},"@amondnet","amondnet","https://github.com/amondnet","https://github.com/amondnet.png",{"name":2209,"username":2210,"profile":2211,"avatar":2212},"@ysknsid25","ysknsid25","https://github.com/ysknsid25","https://github.com/ysknsid25.png",{"name":2214,"username":2215,"profile":2216,"avatar":2217},"@harlan-zw","harlan-zw","https://github.com/harlan-zw","https://github.com/harlan-zw.png",{"name":2219,"username":2220,"profile":2221,"avatar":2222},"@DamianGlowala","DamianGlowala","https://github.com/DamianGlowala","https://github.com/DamianGlowala.png",{"name":2224,"username":2225,"profile":2226,"avatar":2227},"@ChangJoo-Park","ChangJoo-Park","https://github.com/ChangJoo-Park","https://github.com/ChangJoo-Park.png",{"name":2229,"username":2230,"profile":2231,"avatar":2232},"@antfu","antfu","https://github.com/antfu","https://github.com/antfu.png",{"name":2234,"username":2235,"profile":2236,"avatar":2237},"@seho-dev","seho-dev","https://github.com/seho-dev","https://github.com/seho-dev.png",{"name":2239,"username":2240,"profile":2241,"avatar":2242},"@stafyniaksacha","stafyniaksacha","https://github.com/stafyniaksacha","https://github.com/stafyniaksacha.png",{"name":2244,"username":2245,"profile":2246,"avatar":2247},"@logaretm","logaretm","https://github.com/logaretm","https://github.com/logaretm.png",{"name":2249,"username":2250,"profile":2251,"avatar":2252},"@teleskop150750","teleskop150750","https://github.com/teleskop150750","https://github.com/teleskop150750.png",{"name":2254,"username":2255,"profile":2256,"avatar":2257},"@zhiyuanzmj","zhiyuanzmj","https://github.com/zhiyuanzmj","https://github.com/zhiyuanzmj.png",{"username":2114,"sponsors":2259},[2260,2265,2274,2369],[2261],{"name":2262,"image":2263,"website":2264},"Vercel","https://avatars.githubusercontent.com/u/14985020?v=4","https://vercel.com/",[2266,2270],{"name":2267,"image":2268,"website":2269},"VoidZero","https://avatars.githubusercontent.com/u/149750581?v=4","https://voidzero.dev",{"name":2271,"image":2272,"website":2273},"StackBlitz","https://avatars.githubusercontent.com/u/28635252?v=4","https://stackblitz.com",[2275,2279,2283,2287,2291,2295,2299,2303,2306,2310,2314,2318,2322,2325,2329,2333,2337,2341,2345,2349,2353,2357,2361,2365],{"name":2276,"image":2277,"website":2278},"Jan-Henrik Damaschke","https://avatars.githubusercontent.com/u/15030951?u=724eb8ee4cae7792ddf13e25c31589dd6c5cb1d1&v=4","https://itinsights.org",{"name":2280,"image":2281,"website":2282},"Marc Laventure","https://avatars.githubusercontent.com/u/6176314?u=1e0b0d83145a58bd85be4a1e949d31131638d1b4&v=4","https://github.com/marclave",{"name":2284,"image":2285,"website":2286},"Tractorbeam","https://avatars.githubusercontent.com/u/151565601?v=4","https://tractorbeam.ai",{"name":2288,"image":2289,"website":2290},"blackbird GmbH","https://avatars.githubusercontent.com/u/61544907?u=47c13f3eec39e9f0fa8e3bf4db9dac45699f4a90&v=4","https://zulassung.digital",{"name":2292,"image":2293,"website":2294},"n8n - Workflow Automation","https://avatars.githubusercontent.com/u/52133374?v=4","https://n8n.io",{"name":2296,"image":2297,"website":2298},"Ari Perkkiö","https://avatars.githubusercontent.com/u/14806298?u=3ddd26d15c2ad4193edd0e8bc6070510748bd211&v=4","https://github.com/AriPerkkio",{"name":2300,"image":2301,"website":2302},"Ulrich Stark","https://avatars.githubusercontent.com/u/8657779?u=5cfc779c824faea1372da82157a469a581318f60&v=4","https://ustark.de",{"name":2304,"image":2305,"website":2241},"Sacha Stafyniak","https://avatars.githubusercontent.com/u/3911343?u=1c56387a4d67656ccd09ec1f5ca34b8396550e68&v=4",{"name":2307,"image":2308,"website":2309},"Alireza Jahandideh","https://avatars.githubusercontent.com/u/2191898?u=a7a133927eb4e0fdad86e2f4fa73549ef23678a3&v=4","https://ajahandideh.com",{"name":2311,"image":2312,"website":2313},"kazuya kawaguchi","https://avatars.githubusercontent.com/u/72989?u=da19c1508357407cae0b7b11166b072c95c29786&v=4","https://github.com/kazupon",{"name":2315,"image":2316,"website":2317},"Max","https://avatars.githubusercontent.com/u/22072217?u=5cd9a530f8cd1669cff4f085b71096f3372b6e1e&v=4","https://onmax.me",{"name":2319,"image":2320,"website":2321},"Stefan","https://avatars.githubusercontent.com/u/1838511?u=b0c5b19bce0cd9bbacf6df31e451d8ab7770342b&v=4","https://github.com/stenet",{"name":2323,"image":2324,"website":2211},"Kanon","https://avatars.githubusercontent.com/u/44870505?u=9e9dd01aa5bfe0fba3746492320c469bfd53d712&v=4",{"name":2326,"image":2327,"website":2328},"Bjorn Lu","https://avatars.githubusercontent.com/u/34116392?u=b156c6773cb1d21bf37c99bd427486ce73b2173d&v=4","https://bjornlu.com",{"name":2330,"image":2331,"website":2332},"HMT Engineering SARL","https://avatars.githubusercontent.com/u/69604561?v=4","https://github.com/HMT-Engineering",{"name":2334,"image":2335,"website":2336},"Milos Dimitrijevic","https://avatars.githubusercontent.com/u/46306967?u=771a9a638e8d2d13b28a2e0f2d357cc45e0d298a&v=4","https://toox.dev",{"name":2338,"image":2339,"website":2340},"Diu","https://avatars.githubusercontent.com/u/1998168?u=1a3611db57af3878d7e33af99543b0a2494916fb&v=4","https://ddiu.io",{"name":2342,"image":2343,"website":2344},"Marco Solazzi","https://avatars.githubusercontent.com/u/104721?u=71fc42acc26ef894f084ca1080d60070072c9569&v=4","https://marco.solazzi.me",{"name":2346,"image":2347,"website":2348},"Peter Steinberger","https://avatars.githubusercontent.com/u/58493?u=95a4fccef3d341039661c427695691a664e333ba&v=4","http://steipete.me",{"name":2350,"image":2351,"website":2352},"Clex1o1","https://avatars.githubusercontent.com/u/15003466?u=f9ddf29ee36aae9dcf0d63073a244e605e43a911&v=4","https://the-great.dev",{"name":2354,"image":2355,"website":2356},"Robin Genz","https://avatars.githubusercontent.com/u/13857929?u=bc79facfce465b4217c46f28e23b37d829c8f970&v=4","https://robingenz.dev",{"name":2358,"image":2359,"website":2360},"Kamal","https://avatars.githubusercontent.com/u/12810203?u=b489c73c2734864ee472daba665c69f563ded9da&v=4","https://github.com/Kamalnrf",{"name":2362,"image":2363,"website":2364},"Oskar Lebuda","https://avatars.githubusercontent.com/u/10373127?u=33d3700cfce271aa08ff62412cc6e51568a2f9fc&v=4","https://github.com/OskarLebuda",{"name":2366,"image":2367,"website":2368},"Syntax","https://avatars.githubusercontent.com/u/130389858?v=4","https://syntax.fm",[2370,2374,2378,2382,2386,2390,2394,2398,2402,2406,2410,2414,2418,2422,2426,2430,2434,2438,2442,2446,2450,2454,2458,2462,2466,2470,2474,2478,2482,2486,2490,2494,2498,2502,2506,2510,2514,2518,2522,2526,2530,2534,2538,2542,2546,2550,2554,2558,2562,2566,2570,2574,2578,2582,2586,2590,2594,2598,2602,2606,2610,2614,2618,2622,2626,2630,2634,2638,2642,2646,2650,2654,2658,2662,2666,2670,2674,2678],{"inactive":394,"name":2371,"image":2372,"website":2373},"Kevin Deng","https://avatars.githubusercontent.com/u/6481596?v=4","https://sxzz.dev",{"inactive":394,"name":2375,"image":2376,"website":2377},"Saman","https://avatars.githubusercontent.com/u/9444863?u=848025ca93b0934aa1edf333b3c3808459977f5f&v=4","https://samanfekri.me",{"inactive":394,"name":2379,"image":2380,"website":2381},"Mohamad Mohebifar","https://avatars.githubusercontent.com/u/6104558?u=ef5be92a094580739e0f9cd2b3f262dcac8499fa&v=4","https://github.com/mohebifar",{"inactive":394,"name":2383,"image":2384,"website":2385},"Johann Schopplich","https://avatars.githubusercontent.com/u/27850750?u=19ad2478f28905f0659f88c3f81f96b0910b8047&v=4","https://johannschopplich.com",{"inactive":394,"name":2387,"image":2388,"website":2389},"Daniel Roe","https://avatars.githubusercontent.com/u/28706372?u=c4a5aa5232c09c3248533366d5c93a138d7e8987&v=4","https://roe.dev",{"inactive":394,"name":2391,"image":2392,"website":2393},"Jonas Galvez","https://avatars.githubusercontent.com/u/12291?u=707571de1ce12565c1194652ad5be4b9938d3b18&v=4","http://hire.jonasgalvez.com.br",{"inactive":394,"name":2395,"image":2396,"website":2397},"Evan You","https://avatars.githubusercontent.com/u/499550?u=dd9a9ba40daf29be7c310f7075e74251609b03f3&v=4","http://evanyou.me",{"inactive":394,"name":2399,"image":2400,"website":2401},"Sarah Drasner","https://avatars.githubusercontent.com/u/2281088?u=84b646c98eb14480c53987c23901b0001652d9d7&v=4","https://sarah.dev",{"inactive":394,"name":2403,"image":2404,"website":2405},"Alba Silvente Fuentes","https://avatars.githubusercontent.com/u/36744484?u=3afa68ce1e90225f102a6f61118037584043d7d5&v=4","https://links.dawntraoz.com",{"inactive":394,"name":2407,"image":2408,"website":2409},"Sven Ludwig","https://avatars.githubusercontent.com/u/37910952?u=17d318fbe0784fd1e1709845a5e7aab7463c5141&v=4","https://github.com/svnldwg",{"inactive":394,"name":2411,"image":2412,"website":2413},"Leo","https://avatars.githubusercontent.com/u/38490578?u=d43dc9f6ca05c2f20d98a0c862a3fa93f9c9ebb5&v=4","https://yuy1n.io",{"inactive":394,"name":2415,"image":2416,"website":2417},"Stephen Zhou","https://avatars.githubusercontent.com/u/38493346?u=73b116ae6704175ce20f30e993b35305ce1c631c&v=4","https://hyoban.cc",{"inactive":394,"name":2419,"image":2420,"website":2421},"Lucas Nørgård","https://avatars.githubusercontent.com/u/40726067?u=b20c31b846bf2a042a62ebae3fa44f4dd6fad0c9&v=4","https://luxass.dev",{"inactive":394,"name":2423,"image":2424,"website":2425},"Siddharth Gelera (reaper)","https://avatars.githubusercontent.com/u/43572006?u=49e7710c0d1602408ee0b6c125cf2f05b4385608&v=4","http://reaper.is",{"inactive":394,"name":2427,"image":2428,"website":2429},"SerKo","https://avatars.githubusercontent.com/u/44749100?u=e0c8f8e5305cffe6d9a047af11d8ac0fe20d3ab0&v=4","https://serko.dev",{"inactive":394,"name":2431,"image":2432,"website":2433},"Serhii Bedrytskyi","https://avatars.githubusercontent.com/u/45076741?u=e61b21a7d5dfe211d34452ca951d70660d282e94&v=4","https://github.com/bdrtsky",{"inactive":394,"name":2435,"image":2436,"website":2437},"seho","https://avatars.githubusercontent.com/u/35763284?u=4957dd13ecc98b8009d8a46dc13c7474f1d5a63d&v=4","https://yinzhuoei.com",{"inactive":394,"name":2439,"image":2440,"website":2441},"HeroDevs","https://avatars.githubusercontent.com/u/35441165?v=4","https://herodevs.com",{"inactive":394,"name":2443,"image":2444,"website":2445},"@selimdoyranli","https://avatars.githubusercontent.com/u/22690563?u=ebb94ed7bd17f3e7871bba1ae14585f947ed27a4&v=4","https://selimdoyranli.com",{"inactive":394,"name":2447,"image":2448,"website":2449},"Zafar","https://avatars.githubusercontent.com/u/22354051?u=1593668e675cb6de461eea512ced15e620c0174d&v=4","https://zafar.dev",{"inactive":394,"name":2451,"image":2452,"website":2453},"Damien Robinson","https://avatars.githubusercontent.com/u/21211734?u=ec46acafb7634763142c0c1a2f162dfa4e47a5ea&v=4","https://daim.dev",{"inactive":394,"name":2455,"image":2456,"website":2457},"@johnpyp","https://avatars.githubusercontent.com/u/20625636?u=35901411c42c213a7ac06bed4dd70abc88f79439&v=4","https://github.com/johnpyp",{"inactive":394,"name":2459,"image":2460,"website":2461},"Matt Maribojoc","https://avatars.githubusercontent.com/u/18535681?u=4a22b2924d1522f8e6c6e8960c0b459a38704347&v=4","https://github.com/mattmaribojoc",{"inactive":394,"name":2463,"image":2464,"website":2465},"Omar McAdam","https://avatars.githubusercontent.com/u/17185737?u=4772d9db7d1dd482082f7097c4ccc431c170e744&v=4","https://mcadam.io",{"inactive":394,"name":2467,"image":2468,"website":2469},"xjccc","https://avatars.githubusercontent.com/u/16478776?u=137452f9b9a638bf23b8fc87f6091b68d71cf854&v=4","https://github.com/xjccc",{"inactive":394,"name":2471,"image":2472,"website":2473},"YONGQI","https://avatars.githubusercontent.com/u/206218794?u=d2832f1e77c344852b7efc351c83803690470c7f&v=4","https://github.com/betterhyq",{"inactive":394,"name":2475,"image":2476,"website":2477},"JAMflow Cloud","https://avatars.githubusercontent.com/u/165913352?v=4","https://jamflow.cloud",{"inactive":394,"name":2479,"image":2480,"website":2481},"Iyimide Adekile","https://avatars.githubusercontent.com/u/105992164?u=0a701f45f96b00b37c3a8675f5e2b93a633dec0d&v=4","https://iyimide.dev",{"inactive":394,"name":2483,"image":2484,"website":2485},"Jack Shelton","https://avatars.githubusercontent.com/u/104264123?u=2248435a2150fd228592d276c6e707ea9b1506be&v=4","https://jackshelton.com",{"inactive":394,"name":2487,"image":2488,"website":2489},"Genezio","https://avatars.githubusercontent.com/u/103574863?v=4","https://genezio.com",{"inactive":394,"name":2491,"image":2492,"website":2493},"Cedric Mutesa","https://avatars.githubusercontent.com/u/96414111?u=16532e810c81ec0e3056dbb4c1f6e3aa5cf79241&v=4","https://mcedric.dev",{"inactive":394,"name":2495,"image":2496,"website":2497},"James Isaacs","https://avatars.githubusercontent.com/u/92189743?u=1d32367244f37d45a82c0b0076516d5ec2e8427a&v=4","https://linkedin.com/in/james-isaacs2",{"inactive":394,"name":2499,"image":2500,"website":2501},"SMTP Labs","https://avatars.githubusercontent.com/u/89388475?v=4","https://smtp.dev",{"inactive":394,"name":2503,"image":2504,"website":2505},"Froggly","https://avatars.githubusercontent.com/u/79277835?v=4","https://froggly.pl",{"inactive":394,"name":2507,"image":2508,"website":2509},"FormKit","https://avatars.githubusercontent.com/u/76744415?v=4","https://formkit.com",{"inactive":394,"name":2511,"image":2512,"website":2513},"Luke Thomas","https://avatars.githubusercontent.com/u/73349308?u=12db5f4cd051ed0827dc8b806dcca3dcf5217b8d&v=4","https://github.com/lukethomaspassionatepeople",{"inactive":394,"name":2515,"image":2516,"website":2517},"ubugeeei","https://avatars.githubusercontent.com/u/71201308?u=44f9771e6bc51934d392e86a4644c32c615cdec8&v=4","https://wtrclred.io",{"inactive":394,"name":2519,"image":2520,"website":2521},"Julien Huang","https://avatars.githubusercontent.com/u/63512348?u=b60a88c0337dc98b9cdbf1d0a4b3c635786a01b0&v=4","https://github.com/huang-julien",{"inactive":394,"name":2523,"image":2524,"website":2525},"NaokiHaba","https://avatars.githubusercontent.com/u/59875779?u=9eb21272191d359fd1a13b301cdc258c73c2a2a5&v=4","https://own.page/naokihaba",{"inactive":394,"name":2527,"image":2528,"website":2529},"Localazy","https://avatars.githubusercontent.com/u/59409404?v=4","https://localazy.com",{"inactive":394,"name":2531,"image":2532,"website":2533},"Jason Poulin","https://avatars.githubusercontent.com/u/55339225?u=f97b60c098d906196b497c389286eb674d8f1e46&v=4","https://vanguard.to",{"inactive":394,"name":2535,"image":2536,"website":2537},"Restent Ou","https://avatars.githubusercontent.com/u/53113178?u=f04eab17483bf3a7bce265de9005ecf07b397adf&v=4","https://gxres.net",{"inactive":394,"name":2539,"image":2540,"website":2541},"Joao Jack","https://avatars.githubusercontent.com/u/52300131?u=30b1fbf3ed6a07ced2a1ecf17df2d2f46dfe732c&v=4","https://joaojack.dev",{"inactive":394,"name":2543,"image":2544,"website":2545},"Lucas Alves Costa","https://avatars.githubusercontent.com/u/50385918?u=edb739a97ecf71ef6be8b337e446df5ea7f5d413&v=4","https://github.com/luckasnix",{"inactive":394,"name":2547,"image":2548,"website":2549},"William DA SILVA","https://avatars.githubusercontent.com/u/2766008?u=c8ca89b2dea56cfbeca3ba0da931519a61ef20b5&v=4","https://william.to/web",{"inactive":394,"name":2551,"image":2552,"website":2553},"Thomas Marrec","https://avatars.githubusercontent.com/u/2362138?u=cb48a0de48ca04e2eb8cf2632520285d5a7a28bc&v=4","https://gomah.fr",{"inactive":394,"name":2555,"image":2556,"website":2557},"Bruno Sato","https://avatars.githubusercontent.com/u/2257501?u=62e7db432487ab19a9e11db051198d91fb42fe95&v=4","http://twitter.com/brunoksato",{"inactive":394,"name":2559,"image":2560,"website":2561},"Eric Otto","https://avatars.githubusercontent.com/u/2243814?u=143335df10df14dbaf38c9701d53c5306a9de83c&v=4","https://eo.run",{"inactive":394,"name":2563,"image":2564,"website":2565},"juankamilo","https://avatars.githubusercontent.com/u/1947043?u=4b433e210359c0f6ad760abfcc46459351dd8b83&v=4","https://github.com/juankamilo",{"inactive":394,"name":2567,"image":2568,"website":2569},"replygirl","https://avatars.githubusercontent.com/u/1940038?u=f1b018948074e773a64857c9bb2b5127c2cb565f&v=4","https://replygirl.club",{"inactive":394,"name":2571,"image":2572,"website":2573},"Julio Marquez","https://avatars.githubusercontent.com/u/1911993?u=fced65341da9aa7e147e631d1d37e0c6cc68bc27&v=4","https://juliomarquez.com",{"inactive":394,"name":2575,"image":2576,"website":2577},"Israel Ortuño","https://avatars.githubusercontent.com/u/1769417?u=29c0ed774149fb6a8d46083b2c050e75229f0200&v=4","https://github.com/IsraelOrtuno",{"inactive":394,"name":2579,"image":2580,"website":2581},"John","https://avatars.githubusercontent.com/u/1719221?u=b5739798ee9a3d713f5ca3bd3d6a086c13d229a3&v=4","https://github.com/robokozo",{"inactive":394,"name":2583,"image":2584,"website":2585},"Marc Backes","https://avatars.githubusercontent.com/u/1444915?u=0466988bb19cd8d459f33b50b5ff9c48177ddd17&v=4","https://marc.dev",{"inactive":394,"name":2587,"image":2588,"website":2589},"Scott Cooper","https://avatars.githubusercontent.com/u/1400464?u=55a2d1a4fe7583b24718c9d11af43d400e233ea6&v=4","https://xmplaylist.com",{"inactive":394,"name":2591,"image":2592,"website":2593},"Matthew Stiles","https://avatars.githubusercontent.com/u/1377201?u=081a47344d4cff978c99d317d6f45ed235236983&v=4","https://github.com/stilesdev",{"inactive":394,"name":2595,"image":2596,"website":2597},"Chris Calo","https://avatars.githubusercontent.com/u/867717?v=4","https://github.com/chriscalo",{"inactive":394,"name":2599,"image":2600,"website":2601},"Lars Kappert","https://avatars.githubusercontent.com/u/456426?u=1d914b43a4f4e21e13d9e97ae4760f8bf41e0c89&v=4","https://webpro.nl",{"inactive":394,"name":2603,"image":2604,"website":2605},"Jamaluddin Rumi","https://avatars.githubusercontent.com/u/446780?u=1d6f3fcd7a90c72ef49a709e49c9ebf5fc364986&v=4","https://jamal.indomascot.com",{"inactive":394,"name":2607,"image":2608,"website":2609},"João Carmona","https://avatars.githubusercontent.com/u/411763?u=e1539021b583abe14d08fb5c8a30f18309b19b00&v=4","https://github.com/jpsc",{"inactive":394,"name":2611,"image":2612,"website":2613},"Justin C. Beck","https://avatars.githubusercontent.com/u/95119?v=4","https://github.com/justincbeck",{"inactive":394,"name":2615,"image":2616,"website":2617},"Ani Sanjeev","https://avatars.githubusercontent.com/u/80173?u=57b044944c572f3bbb2f2209a506bca3a4d112e4&v=4","http://skyronic.com",{"inactive":394,"name":2619,"image":2620,"website":2621},"Michael Holroyd","https://avatars.githubusercontent.com/u/10985?u=ac1067091bd6088ba91b28f9a417806ad1acc4ae&v=4","https://meekohi.com",{"inactive":394,"name":2623,"image":2624,"website":2625},"Lennart","https://avatars.githubusercontent.com/u/16143594?u=5912586fb7315f5a541e1ddabcd8881af8b7de63&v=4","https://lekoarts.de",{"inactive":394,"name":2627,"image":2628,"website":2629},"Fabian Wohlfart","https://avatars.githubusercontent.com/u/15716389?u=298f0fb1cf42744e140cfa09569f3f6c6eb0afdd&v=4","https://anothercodeproject.eu",{"inactive":394,"name":2631,"image":2632,"website":2633},"Storyblok","https://avatars.githubusercontent.com/u/13880908?v=4","https://storyblok.com",{"inactive":394,"name":2635,"image":2636,"website":2637},"Sandro Circi","https://avatars.githubusercontent.com/u/13056429?u=37da263a037d4051ba41dc01eb3cae656191e7ca&v=4","https://s94.dev",{"inactive":394,"name":2639,"image":2640,"website":2641},"Philipp Kief","https://avatars.githubusercontent.com/u/12248527?u=fca98653112684efcd19591a419a6b0f8b431cd4&v=4","https://pkief.com",{"inactive":394,"name":2643,"image":2644,"website":2645},"Anthony Fu","https://avatars.githubusercontent.com/u/11247099?u=5c092d3773a443e480a294f2b67aa39395982f46&v=4","https://antfu.me",{"inactive":394,"name":2647,"image":2648,"website":2649},"Matus Poruben","https://avatars.githubusercontent.com/u/10378000?u=feab88875f4428791e9c09c1121d50b9fda84ecd&v=4","https://matthewporuben.com",{"inactive":394,"name":2651,"image":2652,"website":2653},"Fábio Santos","https://avatars.githubusercontent.com/u/8303937?u=d72f02713747fcfa8af59b2f36ec7ee465e4142e&v=4","https://fabiofdsantos.com",{"inactive":394,"name":2655,"image":2656,"website":2657},"Christian Preston","https://avatars.githubusercontent.com/u/6619884?u=05623a13a80a279918f30c99b3115930ef77b44b&v=4","https://christianpreston.com",{"inactive":394,"name":2659,"image":2660,"website":2661},"Sam","https://avatars.githubusercontent.com/u/5327489?u=7fc13f69e450e988d63a8f9d25a48a86e231cd8f&v=4","https://samro.in",{"inactive":394,"name":2663,"image":2664,"website":2665},"Harlan Wilton","https://avatars.githubusercontent.com/u/5326365?u=171656f99ff4c2f33943f642d813fff8399e76a8&v=4","https://harlanzw.com",{"inactive":394,"name":2667,"image":2668,"website":2669},"@timmushen","https://avatars.githubusercontent.com/u/5281775?u=c12cf41491c7761aa90cc3437d5d980a3e811eb6&v=4","https://github.com/timmushen",{"inactive":394,"name":2671,"image":2672,"website":2673},"kissu","https://avatars.githubusercontent.com/u/5133074?u=5eddeda68548c1ea72460c75ee957289c96478e0&v=4","https://github.com/kissu",{"inactive":394,"name":2675,"image":2676,"website":2677},"@timhanlon","https://avatars.githubusercontent.com/u/4340187?u=86cabd9543038313f2057b790f8e6d901488cd48&v=4","https://github.com/timhanlon",{"inactive":394,"name":2679,"image":2680,"website":2681},"Nate Mortensen","https://avatars.githubusercontent.com/u/2768475?u=26af5b5eba0f86ea3a3a3da2c13561c74cf4602a&v=4","https://github.com/natemortensen",1773004779561]