[{"data":1,"prerenderedAt":1234},["ShallowReactive",2],{"navigation":3,"changelog-nuxthub-multi-vendor":137,"changelog-nuxthub-multi-vendor-surround":1230},[4,123],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":113},"Docs","i-lucide-book","/docs","docs",[10,34,58,73,84,95,114],{"title":11,"path":12,"stem":13,"children":14,"icon":33},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[15,17,21,25,29],{"title":16,"path":12,"stem":13},"Introduction",{"title":18,"path":19,"stem":20},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation",{"title":22,"path":23,"stem":24},"Deploy","/docs/getting-started/deploy","docs/1.getting-started/3.deploy",{"title":26,"path":27,"stem":28},"Migration","/docs/getting-started/migration","docs/1.getting-started/4.migration",{"title":30,"path":31,"stem":32},"Environments","/docs/getting-started/environments","docs/1.getting-started/5.environments","i-lucide-rocket",{"title":35,"path":36,"stem":37,"children":38,"icon":57},"Database","/docs/database","docs/2.database/1.index",[39,41,45,49,53],{"title":40,"path":36,"stem":37},"Setup",{"title":42,"path":43,"stem":44},"Schema","/docs/database/schema","docs/2.database/2.schema",{"title":46,"path":47,"stem":48},"Queries","/docs/database/query","docs/2.database/3.query",{"title":50,"path":51,"stem":52},"Migrations","/docs/database/migrations","docs/2.database/4.migrations",{"title":54,"path":55,"stem":56},"CLI","/docs/database/cli","docs/2.database/cli","i-lucide-database",{"title":59,"path":60,"stem":61,"children":62,"icon":72},"Blob","/docs/blob","docs/3.blob/1.index",[63,64,68],{"title":40,"path":60,"stem":61},{"title":65,"path":66,"stem":67},"Upload","/docs/blob/upload","docs/3.blob/2.upload",{"title":69,"path":70,"stem":71},"Blob SDK","/docs/blob/usage","docs/3.blob/3.usage","i-lucide-shapes",{"title":74,"path":75,"stem":76,"children":77,"icon":83},"Key Value","/docs/kv","docs/4.kv/1.index",[78,79],{"title":40,"path":75,"stem":76},{"title":80,"path":81,"stem":82},"KV SDK","/docs/kv/usage","docs/4.kv/2.usage","i-lucide-list",{"title":85,"path":86,"stem":87,"children":88,"icon":94},"Cache","/docs/cache","docs/5.cache/1.index",[89,90],{"title":40,"path":86,"stem":87},{"title":91,"path":92,"stem":93},"Usage","/docs/cache/usage","docs/5.cache/2.usage","i-lucide-zap",{"title":96,"icon":97,"path":98,"stem":99,"children":100,"page":113},"Guides","i-lucide-book-text","/docs/guides","docs/6.guides",[101,105,109],{"title":102,"path":103,"stem":104},"Pre-rendering","/docs/guides/pre-rendering","docs/6.guides/1.pre-rendering",{"title":106,"path":107,"stem":108},"Realtime","/docs/guides/realtime","docs/6.guides/2.realtime",{"title":110,"path":111,"stem":112},"CI/CD","/docs/guides/ci-cd","docs/6.guides/3.ci-cd",false,{"title":115,"path":116,"stem":117,"children":118,"page":113},"Reference","/docs/reference","docs/7.reference",[119],{"title":120,"path":121,"stem":122},"Environment Variables","/docs/reference/environment-variables","docs/7.reference/1.environment-variables",{"title":124,"icon":125,"path":126,"stem":127,"children":128,"page":113},"Changelog","i-lucide-megaphone","/changelog","changelog",[129,133],{"title":130,"path":131,"stem":132},"NuxtHub Multi-Vendor is now available","/changelog/nuxthub-multi-vendor","changelog/nuxthub-multi-vendor",{"title":134,"path":135,"stem":136},"Self-Hosting First & Cloud-Agnostic Future","/changelog/self-hosting-first","changelog/self-hosting-first",{"id":138,"title":130,"authors":139,"body":152,"date":1223,"description":1224,"extension":1225,"image":1226,"meta":1227,"navigation":480,"path":131,"seo":1228,"stem":132,"__hash__":1229},"changelog/changelog/nuxthub-multi-vendor.md",[140,146],{"name":141,"avatar":142,"to":144,"username":145},"Sebastien Chopin",{"src":143},"https://avatars.githubusercontent.com/u/904724?v=4","https://x.com/atinux","atinux",{"name":147,"avatar":148,"to":150,"username":151},"Rihan Arfan",{"src":149},"https://avatars.githubusercontent.com/u/20425781?v=4","https://bsky.app/profile/rihan.dev","rihan.dev",{"type":153,"value":154,"toc":1205},"minimark",[155,170,184,189,196,201,204,268,393,396,400,404,416,420,431,609,620,714,718,733,870,878,881,1023,1026,1029,1037,1041,1044,1048,1051,1055,1068,1085,1088,1092,1101,1104,1127,1131,1142,1178,1191,1195,1198,1201],[156,157,158,159,169],"tip",{},"This feature is available in ",[160,161,165],"a",{"href":162,"rel":163},"https://github.com/nuxt-hub/core/releases/tag/v0.10.0",[164],"nofollow",[166,167,168],"code",{},"@nuxthub/core >= v0.10.0",".",[171,172,173,174,179,180,169],"p",{},"Since ",[160,175,178],{"href":176,"rel":177},"https://nuxtlabs.com",[164],"Vercel's acquisition of NuxtLabs",", we've been working to let you build full-stack Nuxt applications across multiple hosting providers. Today, we're excited to announce that ",[181,182,183],"strong",{},"NuxtHub is now multi-vendor",[185,186,188],"h2",{"id":187},"deploy-anywhere","Deploy Anywhere",[171,190,191,192,195],{},"With ",[181,193,194],{},"v0.10",", you can now deploy your NuxtHub projects to any hosting provider while keeping an almost zero-config experience. Whether you choose Cloudflare, Vercel, AWS, or any other provider, NuxtHub now adapts to your infrastructure.",[197,198,200],"h3",{"id":199},"whats-supported","What's Supported",[171,202,203],{},"NuxtHub v0.10 brings multi-cloud support for all core features:",[205,206,207,217,240,262],"ul",{},[208,209,210,212,213,216],"li",{},[181,211,35],{},": Use SQLite, PostgreSQL, or MySQL with ",[160,214,215],{"href":36},"Drizzle ORM"," — NuxtHub auto-configures based on your provider",[208,218,219,222,223,228,229,228,234,239],{},[181,220,221],{},"Blob Storage",": Upload and serve files from ",[160,224,227],{"href":225,"rel":226},"https://developers.cloudflare.com/r2/",[164],"Cloudflare R2",", ",[160,230,233],{"href":231,"rel":232},"https://vercel.com/docs/storage/vercel-blob",[164],"Vercel Blob",[160,235,238],{"href":236,"rel":237},"https://aws.amazon.com/s3/",[164],"AWS S3",", and more",[208,241,242,245,246,228,251,228,256,261],{},[181,243,244],{},"KV Storage",": Key-value storage via ",[160,247,250],{"href":248,"rel":249},"https://developers.cloudflare.com/kv",[164],"Cloudflare KV",[160,252,255],{"href":253,"rel":254},"https://upstash.com/docs/redis",[164],"Upstash Redis",[160,257,260],{"href":258,"rel":259},"https://vercel.com/docs/storage/vercel-kv",[164],"Vercel KV",", and others",[208,263,264,267],{},[181,265,266],{},"Cache Storage",": Efficient caching that works across all supported providers",[269,270,276],"pre",{"className":271,"code":272,"filename":273,"language":274,"meta":275,"style":275},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  hub: {\n    db: 'postgresql',  // or 'sqlite', 'mysql'\n    blob: true,\n    kv: true,\n    cache: true\n  }\n})\n","nuxt.config.ts","ts","",[166,277,278,302,315,340,355,367,378,384],{"__ignoreMap":275},[279,280,283,287,290,294,298],"span",{"class":281,"line":282},"line",1,[279,284,286],{"class":285},"s7zQu","export",[279,288,289],{"class":285}," default",[279,291,293],{"class":292},"s2Zo4"," defineNuxtConfig",[279,295,297],{"class":296},"sTEyZ","(",[279,299,301],{"class":300},"sMK4o","{\n",[279,303,305,309,312],{"class":281,"line":304},2,[279,306,308],{"class":307},"swJcz","  hub",[279,310,311],{"class":300},":",[279,313,314],{"class":300}," {\n",[279,316,318,321,323,326,330,333,336],{"class":281,"line":317},3,[279,319,320],{"class":307},"    db",[279,322,311],{"class":300},[279,324,325],{"class":300}," '",[279,327,329],{"class":328},"sfazB","postgresql",[279,331,332],{"class":300},"'",[279,334,335],{"class":300},",",[279,337,339],{"class":338},"sHwdD","  // or 'sqlite', 'mysql'\n",[279,341,343,346,348,352],{"class":281,"line":342},4,[279,344,345],{"class":307},"    blob",[279,347,311],{"class":300},[279,349,351],{"class":350},"sfNiH"," true",[279,353,354],{"class":300},",\n",[279,356,358,361,363,365],{"class":281,"line":357},5,[279,359,360],{"class":307},"    kv",[279,362,311],{"class":300},[279,364,351],{"class":350},[279,366,354],{"class":300},[279,368,370,373,375],{"class":281,"line":369},6,[279,371,372],{"class":307},"    cache",[279,374,311],{"class":300},[279,376,377],{"class":350}," true\n",[279,379,381],{"class":281,"line":380},7,[279,382,383],{"class":300},"  }\n",[279,385,387,390],{"class":281,"line":386},8,[279,388,389],{"class":300},"}",[279,391,392],{"class":296},")\n",[171,394,395],{},"NuxtHub detects your deployment environment and configures the appropriate drivers automatically. It also uses PGLite locally if no PostgreSQL connection is provided.",[397,398,399],"note",{"to":27},"Read the migration guide to upgrade your existing project to v0.10.",[185,401,403],{"id":402},"first-class-drizzle-support","First-Class Drizzle Support",[171,405,406,407,411,412,415],{},"NuxtHub v0.10 introduces a completely new database experience powered by ",[160,408,215],{"href":409,"rel":410},"https://orm.drizzle.team",[164],". This isn't just a wrapper, it's a deep integration that makes working with a database in Nuxt as easy as using a ",[166,413,414],{},"db"," instance.",[197,417,419],{"id":418},"auto-registered-schema","Auto-Registered Schema",[171,421,422,423,426,427,430],{},"Define your schema in ",[166,424,425],{},"server/db/schema.ts"," (or split across multiple files in ",[166,428,429],{},"server/db/schema/","), and NuxtHub automatically registers everything:",[269,432,434],{"className":271,"code":433,"filename":425,"language":274,"meta":275,"style":275},"import { pgTable, text, serial, timestamp } from 'drizzle-orm/pg-core'\n\nexport const users = pgTable('users', {\n  id: serial().primaryKey(),\n  name: text().notNull(),\n  email: text().notNull().unique(),\n  createdAt: timestamp().notNull().defaultNow()\n})\n",[166,435,436,476,482,511,532,552,578,603],{"__ignoreMap":275},[279,437,438,441,444,447,449,452,454,457,459,462,465,468,470,473],{"class":281,"line":282},[279,439,440],{"class":285},"import",[279,442,443],{"class":300}," {",[279,445,446],{"class":296}," pgTable",[279,448,335],{"class":300},[279,450,451],{"class":296}," text",[279,453,335],{"class":300},[279,455,456],{"class":296}," serial",[279,458,335],{"class":300},[279,460,461],{"class":296}," timestamp",[279,463,464],{"class":300}," }",[279,466,467],{"class":285}," from",[279,469,325],{"class":300},[279,471,472],{"class":328},"drizzle-orm/pg-core",[279,474,475],{"class":300},"'\n",[279,477,478],{"class":281,"line":304},[279,479,481],{"emptyLinePlaceholder":480},true,"\n",[279,483,484,486,490,493,496,498,500,502,505,507,509],{"class":281,"line":317},[279,485,286],{"class":285},[279,487,489],{"class":488},"spNyl"," const",[279,491,492],{"class":296}," users ",[279,494,495],{"class":300},"=",[279,497,446],{"class":292},[279,499,297],{"class":296},[279,501,332],{"class":300},[279,503,504],{"class":328},"users",[279,506,332],{"class":300},[279,508,335],{"class":300},[279,510,314],{"class":300},[279,512,513,516,518,520,523,525,528,530],{"class":281,"line":342},[279,514,515],{"class":307},"  id",[279,517,311],{"class":300},[279,519,456],{"class":292},[279,521,522],{"class":296},"()",[279,524,169],{"class":300},[279,526,527],{"class":292},"primaryKey",[279,529,522],{"class":296},[279,531,354],{"class":300},[279,533,534,537,539,541,543,545,548,550],{"class":281,"line":357},[279,535,536],{"class":307},"  name",[279,538,311],{"class":300},[279,540,451],{"class":292},[279,542,522],{"class":296},[279,544,169],{"class":300},[279,546,547],{"class":292},"notNull",[279,549,522],{"class":296},[279,551,354],{"class":300},[279,553,554,557,559,561,563,565,567,569,571,574,576],{"class":281,"line":369},[279,555,556],{"class":307},"  email",[279,558,311],{"class":300},[279,560,451],{"class":292},[279,562,522],{"class":296},[279,564,169],{"class":300},[279,566,547],{"class":292},[279,568,522],{"class":296},[279,570,169],{"class":300},[279,572,573],{"class":292},"unique",[279,575,522],{"class":296},[279,577,354],{"class":300},[279,579,580,583,585,587,589,591,593,595,597,600],{"class":281,"line":380},[279,581,582],{"class":307},"  createdAt",[279,584,311],{"class":300},[279,586,461],{"class":292},[279,588,522],{"class":296},[279,590,169],{"class":300},[279,592,547],{"class":292},[279,594,522],{"class":296},[279,596,169],{"class":300},[279,598,599],{"class":292},"defaultNow",[279,601,602],{"class":296},"()\n",[279,604,605,607],{"class":281,"line":386},[279,606,389],{"class":300},[279,608,392],{"class":296},[171,610,611,612,615,616,619],{},"Your schema is then accessible via the ",[166,613,614],{},"schema"," object in the ",[166,617,618],{},"hub:db"," namespace:",[269,621,624],{"className":271,"code":622,"filename":623,"language":274,"meta":275,"style":275},"import { db, schema } from 'hub:db'\n\nexport default eventHandler(async () => {\n  return await db.select().from(schema.users)\n})\n","server/api/users.get.ts",[166,625,626,650,654,676,708],{"__ignoreMap":275},[279,627,628,630,632,635,637,640,642,644,646,648],{"class":281,"line":282},[279,629,440],{"class":285},[279,631,443],{"class":300},[279,633,634],{"class":296}," db",[279,636,335],{"class":300},[279,638,639],{"class":296}," schema",[279,641,464],{"class":300},[279,643,467],{"class":285},[279,645,325],{"class":300},[279,647,618],{"class":328},[279,649,475],{"class":300},[279,651,652],{"class":281,"line":304},[279,653,481],{"emptyLinePlaceholder":480},[279,655,656,658,660,663,665,668,671,674],{"class":281,"line":317},[279,657,286],{"class":285},[279,659,289],{"class":285},[279,661,662],{"class":292}," eventHandler",[279,664,297],{"class":296},[279,666,667],{"class":488},"async",[279,669,670],{"class":300}," ()",[279,672,673],{"class":488}," =>",[279,675,314],{"class":300},[279,677,678,681,684,686,688,691,693,695,698,700,702,704,706],{"class":281,"line":342},[279,679,680],{"class":285},"  return",[279,682,683],{"class":285}," await",[279,685,634],{"class":296},[279,687,169],{"class":300},[279,689,690],{"class":292},"select",[279,692,522],{"class":307},[279,694,169],{"class":300},[279,696,697],{"class":292},"from",[279,699,297],{"class":307},[279,701,614],{"class":296},[279,703,169],{"class":300},[279,705,504],{"class":296},[279,707,392],{"class":307},[279,709,710,712],{"class":281,"line":357},[279,711,389],{"class":300},[279,713,392],{"class":296},[197,715,717],{"id":716},"extendable-by-modules-layers","Extendable by Modules & Layers",[171,719,720,721,726,727,732],{},"One of the most powerful features is the ability for ",[160,722,725],{"href":723,"rel":724},"https://nuxt.com/modules",[164],"Nuxt modules"," and ",[160,728,731],{"href":729,"rel":730},"https://nuxt.com/docs/getting-started/layers",[164],"layers"," to extend your database schema. This opens up exciting possibilities for the ecosystem, an auth module could automatically add user tables, or a CMS module that brings its own content schemas.",[269,734,737],{"className":271,"code":735,"filename":736,"language":274,"meta":275,"style":275},"export default defineNuxtModule({\n  setup(options, nuxt) {\n    nuxt.hook('hub:db:schema:extend', async ({ dialect, paths }) => {\n      paths.push(await resolvePath(`./schema/users.${dialect}`))\n    })\n  }\n})\n","modules/auth/index.ts",[166,738,739,752,773,815,853,860,864],{"__ignoreMap":275},[279,740,741,743,745,748,750],{"class":281,"line":282},[279,742,286],{"class":285},[279,744,289],{"class":285},[279,746,747],{"class":292}," defineNuxtModule",[279,749,297],{"class":296},[279,751,301],{"class":300},[279,753,754,757,759,763,765,768,771],{"class":281,"line":304},[279,755,756],{"class":307},"  setup",[279,758,297],{"class":300},[279,760,762],{"class":761},"sHdIc","options",[279,764,335],{"class":300},[279,766,767],{"class":761}," nuxt",[279,769,770],{"class":300},")",[279,772,314],{"class":300},[279,774,775,778,780,783,785,787,790,792,794,797,800,803,805,808,811,813],{"class":281,"line":317},[279,776,777],{"class":296},"    nuxt",[279,779,169],{"class":300},[279,781,782],{"class":292},"hook",[279,784,297],{"class":307},[279,786,332],{"class":300},[279,788,789],{"class":328},"hub:db:schema:extend",[279,791,332],{"class":300},[279,793,335],{"class":300},[279,795,796],{"class":488}," async",[279,798,799],{"class":300}," ({",[279,801,802],{"class":761}," dialect",[279,804,335],{"class":300},[279,806,807],{"class":761}," paths",[279,809,810],{"class":300}," })",[279,812,673],{"class":488},[279,814,314],{"class":300},[279,816,817,820,822,825,827,830,833,835,838,841,844,847,850],{"class":281,"line":342},[279,818,819],{"class":296},"      paths",[279,821,169],{"class":300},[279,823,824],{"class":292},"push",[279,826,297],{"class":307},[279,828,829],{"class":285},"await",[279,831,832],{"class":292}," resolvePath",[279,834,297],{"class":307},[279,836,837],{"class":300},"`",[279,839,840],{"class":328},"./schema/users.",[279,842,843],{"class":300},"${",[279,845,846],{"class":296},"dialect",[279,848,849],{"class":300},"}`",[279,851,852],{"class":307},"))\n",[279,854,855,858],{"class":281,"line":357},[279,856,857],{"class":300},"    }",[279,859,392],{"class":307},[279,861,862],{"class":281,"line":369},[279,863,383],{"class":300},[279,865,866,868],{"class":281,"line":380},[279,867,389],{"class":300},[279,869,392],{"class":296},[197,871,873,874,877],{"id":872},"the-nuxt-db-cli","The ",[166,875,876],{},"nuxt db"," CLI",[171,879,880],{},"Managing your database is now as simple as running a few commands:",[269,882,887],{"className":883,"code":884,"filename":885,"language":886,"meta":275,"style":275},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Generate migrations from schema changes\nnpx nuxt db generate\n\n# Apply migrations\nnpx nuxt db migrate\n\n# Run SQL queries directly\nnpx nuxt db sql \"SELECT * FROM users\"\n\n# Mark migrations as applied\nnpx nuxt db mark-as-migrated \u003Cname>\n\n# Drop a table\nnpx nuxt db drop \u003Ctable>\n","Terminal","bash",[166,888,889,894,907,911,916,927,931,936,956,961,967,991,996,1002],{"__ignoreMap":275},[279,890,891],{"class":281,"line":282},[279,892,893],{"class":338},"# Generate migrations from schema changes\n",[279,895,896,900,902,904],{"class":281,"line":304},[279,897,899],{"class":898},"sBMFI","npx",[279,901,767],{"class":328},[279,903,634],{"class":328},[279,905,906],{"class":328}," generate\n",[279,908,909],{"class":281,"line":317},[279,910,481],{"emptyLinePlaceholder":480},[279,912,913],{"class":281,"line":342},[279,914,915],{"class":338},"# Apply migrations\n",[279,917,918,920,922,924],{"class":281,"line":357},[279,919,899],{"class":898},[279,921,767],{"class":328},[279,923,634],{"class":328},[279,925,926],{"class":328}," migrate\n",[279,928,929],{"class":281,"line":369},[279,930,481],{"emptyLinePlaceholder":480},[279,932,933],{"class":281,"line":380},[279,934,935],{"class":338},"# Run SQL queries directly\n",[279,937,938,940,942,944,947,950,953],{"class":281,"line":386},[279,939,899],{"class":898},[279,941,767],{"class":328},[279,943,634],{"class":328},[279,945,946],{"class":328}," sql",[279,948,949],{"class":300}," \"",[279,951,952],{"class":328},"SELECT * FROM users",[279,954,955],{"class":300},"\"\n",[279,957,959],{"class":281,"line":958},9,[279,960,481],{"emptyLinePlaceholder":480},[279,962,964],{"class":281,"line":963},10,[279,965,966],{"class":338},"# Mark migrations as applied\n",[279,968,970,972,974,976,979,982,985,988],{"class":281,"line":969},11,[279,971,899],{"class":898},[279,973,767],{"class":328},[279,975,634],{"class":328},[279,977,978],{"class":328}," mark-as-migrated",[279,980,981],{"class":300}," \u003C",[279,983,984],{"class":328},"nam",[279,986,987],{"class":296},"e",[279,989,990],{"class":300},">\n",[279,992,994],{"class":281,"line":993},12,[279,995,481],{"emptyLinePlaceholder":480},[279,997,999],{"class":281,"line":998},13,[279,1000,1001],{"class":338},"# Drop a table\n",[279,1003,1005,1007,1009,1011,1014,1016,1019,1021],{"class":281,"line":1004},14,[279,1006,899],{"class":898},[279,1008,767],{"class":328},[279,1010,634],{"class":328},[279,1012,1013],{"class":328}," drop",[279,1015,981],{"class":300},[279,1017,1018],{"class":328},"tabl",[279,1020,987],{"class":296},[279,1022,990],{"class":300},[171,1024,1025],{},"Migrations are automatically applied during development and at build time — no extra configuration needed.",[397,1027,1028],{"to":36},"Read the full Database documentation to learn more.",[1030,1031,1032,1033,1036],"important",{},"We are in the process of building ",[166,1034,1035],{},"@nuxt/db"," based on the work of NuxtHub DB v0.10.",[185,1038,1040],{"id":1039},"templates-update","Templates Update",[171,1042,1043],{},"We are in the process of updating all our templates to support the new multi-vendor architecture. Stay tuned for updated starters that work out of the box with Vercel, Cloudflare, and more.",[185,1045,1047],{"id":1046},"nuxthub-admin-transition","NuxtHub Admin Transition",[171,1049,1050],{},"As we move toward a fully self-hosted, multi-cloud future, we're making important changes to NuxtHub Admin.",[197,1052,1054],{"id":1053},"migration-tool","Migration Tool",[171,1056,1057,1058,1061,1062,1067],{},"We've added a ",[181,1059,1060],{},"guided migration tool"," directly in ",[160,1063,1066],{"href":1064,"rel":1065},"https://admin.hub.nuxt.com",[164],"NuxtHub Admin",". This tool helps you:",[205,1069,1070,1079],{},[208,1071,1072,1075,1076],{},[181,1073,1074],{},"Stay on Cloudflare",": Keep your project on Cloudflare with current bindings using ",[166,1077,1078],{},"wrangler.jsonc",[208,1080,1081,1084],{},[181,1082,1083],{},"Move to Vercel",": Migrate your project and optionally migrate the database, KV, and blob storage to Vercel",[171,1086,1087],{},"The migration tool walks you through each step, ensuring your data and configuration are preserved.",[197,1089,1091],{"id":1090},"subscription-changes","Subscription Changes",[171,1093,1094,1097,1098,169],{},[181,1095,1096],{},"During December 2025",", we will cancel all active subscriptions. Pro-rata refunds will be issued for any unused time beyond ",[181,1099,1100],{},"December 31st, 2025",[171,1102,1103],{},"During this period:",[205,1105,1106,1113],{},[208,1107,1108,1109,1112],{},"You ",[181,1110,1111],{},"won't be able"," to create new projects on NuxtHub Admin",[208,1114,1108,1115,1118,1119],{},[181,1116,1117],{},"will still be able"," until February 2nd, 2026 to:\n",[205,1120,1121,1124],{},[208,1122,1123],{},"deploy existing projects",[208,1125,1126],{},"manage your projects on the dashboard",[197,1128,1130],{"id":1129},"cli-action-deprecation","CLI & Action Deprecation",[171,1132,1133,1134,1137,1138,1141],{},"Starting ",[181,1135,1136],{},"February 2nd, 2026",", new deployments using the ",[166,1139,1140],{},"nuxthub"," CLI and GitHub Action will no longer work. We recommend switching to your provider's native deployment method:",[205,1143,1144,1155,1172],{},[208,1145,1146,1149,1150],{},[181,1147,1148],{},"Cloudflare",": Use ",[160,1151,1154],{"href":1152,"rel":1153},"https://developers.cloudflare.com/workers/ci-cd/builds/",[164],"Workers Builds",[208,1156,1157,1160,1161,1166,1167],{},[181,1158,1159],{},"Vercel",": Use the ",[160,1162,1165],{"href":1163,"rel":1164},"https://vercel.com/docs/cli",[164],"Vercel CLI"," or ",[160,1168,1171],{"href":1169,"rel":1170},"https://vercel.com/docs/deployments/git",[164],"Git integration",[208,1173,1174,1177],{},[181,1175,1176],{},"Other providers",": Use their respective CLI or CI/CD pipelines",[1179,1180,1181,1182,1187,1188,169],"callout",{},"You can visit ",[160,1183,1186],{"href":1184,"rel":1185},"https://legacy.hub.nuxt.com",[164],"legacy.hub.nuxt.com"," to access the legacy documentation for ",[181,1189,1190],{},"v0.9",[185,1192,1194],{"id":1193},"looking-forward","Looking Forward",[171,1196,1197],{},"This release represents a major step in NuxtHub's evolution. With v0.10, NuxtHub works wherever you deploy. Pick the cloud that makes sense for your project without sacrificing the developer experience that makes NuxtHub special.",[171,1199,1200],{},"Thank you for being part of this journey. We can't wait to see what you build with NuxtHub v0.10.",[1202,1203,1204],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":275,"searchDepth":304,"depth":304,"links":1206},[1207,1210,1216,1217,1222],{"id":187,"depth":304,"text":188,"children":1208},[1209],{"id":199,"depth":317,"text":200},{"id":402,"depth":304,"text":403,"children":1211},[1212,1213,1214],{"id":418,"depth":317,"text":419},{"id":716,"depth":317,"text":717},{"id":872,"depth":317,"text":1215},"The nuxt db CLI",{"id":1039,"depth":304,"text":1040},{"id":1046,"depth":304,"text":1047,"children":1218},[1219,1220,1221],{"id":1053,"depth":317,"text":1054},{"id":1090,"depth":317,"text":1091},{"id":1129,"depth":317,"text":1130},{"id":1193,"depth":304,"text":1194},"2025-12-10T00:00:00.000Z","NuxtHub is now available on multiple cloud providers. You can now deploy your NuxtHub project on your own hosting provider.","md","/images/changelog/nuxthub-multi-vendor.png",{},{"title":130,"description":1224},"NlJIG6fo1wFXKEWv6aJ3EH9EkVByWnnuc4tEGLK9hQc",[1231,1232],null,{"title":134,"path":135,"stem":136,"description":1233,"children":-1},"We are evolving NuxtHub to become a truly multi-cloud platform. This transition requires us to move away from features tightly coupled to a single cloud provider and adopt a more flexible, cloud-agnostic approach.",1774053872333]