[{"data":1,"prerenderedAt":255},["ShallowReactive",2],{"docs-page:en:\u002Fdocs\u002Fversions\u002Fv1":3,"docs-navigation:en":155},{"id":4,"title":5,"body":6,"description":147,"extension":148,"meta":149,"navigation":150,"path":151,"seo":152,"stem":153,"__hash__":154},"docs_en\u002Fen\u002Fdocs\u002Fversions\u002Fv1.md","v1",{"type":7,"value":8,"toc":139},"minimark",[9,13,18,79,83,118,122,125],[10,11,12],"p",{},"v1 is the first public Otalan version for compatible OTA web asset updates on supported Capacitor and Expo apps.",[14,15,17],"h2",{"id":16},"supported","Supported",[19,20,21,25,28,31,49,55,61,64,70],"ul",{},[22,23,24],"li",{},"Capacitor 7 and 8",[22,26,27],{},"Expo SDK 54, 55, and 56",[22,29,30],{},"iOS and Android release lanes",[22,32,33,34,38,39,38,42,45,46],{},"one active bundle per ",[35,36,37],"code",{},"appId",", ",[35,40,41],{},"platform",[35,43,44],{},"channel",", and ",[35,47,48],{},"runtimeVersion",[22,50,51,52],{},"dashboard publishing with artifacts generated by ",[35,53,54],{},"otalan bundle",[22,56,57,58],{},"CI publishing with ",[35,59,60],{},"otalan publish",[22,62,63],{},"rollout percentage, pause, resume, rollback, release history, and install confirmation",[22,65,66,67],{},"Capacitor bundles using ",[35,68,69],{},".otalan\u002Fbundle\u002Fbundle-\u003Cbundle-id>.zip",[22,71,72,73,75,76],{},"Expo bundles using ",[35,74,69],{}," and ",[35,77,78],{},".otalan\u002Fbundle\u002Fmanifest.json",[14,80,82],{"id":81},"limits","Limits",[19,84,85,88,91,94,97,100,103,106,109,112,115],{},[22,86,87],{},"OTA updates replace compatible web assets only. Native code, native plugins, permissions, entitlements, store metadata, and native binaries still require a store release.",[22,89,90],{},"ZIP upload: 50 MB maximum compressed size.",[22,92,93],{},"ZIP contents: 200 MB maximum extracted size.",[22,95,96],{},"ZIP entries: 2,000 files maximum.",[22,98,99],{},"Single file: 75 MB maximum extracted size.",[22,101,102],{},"Paths: 240 characters maximum per archive path.",[22,104,105],{},"Compression: 30:1 maximum archive ratio and 40:1 maximum single-entry ratio.",[22,107,108],{},"ZIP format: no ZIP64, multi-disk archives, encrypted entries, symlinks, nested ZIPs, duplicate paths, path traversal, or absolute paths.",[22,110,111],{},"Expo manifest: 256 KB maximum.",[22,113,114],{},"Release metadata: app IDs and bundle IDs up to 255 characters, channels and runtime versions up to 128, release notes up to 4,000, file names up to 255, and content types up to 128.",[22,116,117],{},"Older Expo or Capacitor versions, bare React Native projects, and custom update runtimes are outside the supported v1 scope.",[14,119,121],{"id":120},"post-v1-candidates","Post-v1 candidates",[10,123,124],{},"These items are not part of the v1 public scope. They are the next concrete areas to evaluate after the v1 release path is stable:",[19,126,127,130,133,136],{},[22,128,129],{},"first-class secure delivery keys: bundle signing keys, public verification certificates, key rotation, and revocation guidance for apps that require signed OTA payload verification",[22,131,132],{},"team and workspace workflows: members, invitations, roles, and audit-friendly operator history",[22,134,135],{},"migration tooling with a clear source format: guided import for CodePush-style apps, deployments, channels, and release records; not a promise to re-ingest every historical bundle format",[22,137,138],{},"release automation and observability: webhooks, CI status callbacks, rollout health metrics, per-release check\u002Fdownload\u002Finstall\u002Ffailure counters, and exportable release events",{"title":140,"searchDepth":141,"depth":141,"links":142},"",3,[143,145,146],{"id":16,"depth":144,"text":17},2,{"id":81,"depth":144,"text":82},{"id":120,"depth":144,"text":121},"Supported runtimes, public limits, and post-v1 candidates for Otalan v1.","md",{},true,"\u002Fen\u002Fdocs\u002Fversions\u002Fv1",{"title":5,"description":147},"en\u002Fdocs\u002Fversions\u002Fv1","sm8n-g1JL8MthVIdaeyORiGoOpzdjz99EvwTcqFnOrg",[156],{"title":157,"path":158,"stem":159,"children":160,"page":178},"En","\u002Fen","en",[161],{"title":162,"path":163,"stem":164,"children":165,"description":167},"Introduction","\u002Fen\u002Fdocs","en\u002Fdocs\u002Findex",[166,168,179,189,199,209,229,249],{"title":162,"path":163,"stem":164,"description":167},"Understand what Otalan is, when to use it, and how the first safe OTA release flow works for Capacitor and Expo apps.",{"title":169,"path":170,"stem":171,"children":172,"page":178},"About","\u002Fen\u002Fdocs\u002Fabout","en\u002Fdocs\u002Fabout",[173],{"title":174,"path":175,"stem":176,"description":177},"Security and trust","\u002Fen\u002Fdocs\u002Fabout\u002Fsecurity-trust","en\u002Fdocs\u002Fabout\u002Fsecurity-trust","How Otalan keeps OTA releases controlled: scoped keys, bundle validation, exact matching, rollout controls, rollback, deletion behavior, and support contact.",false,{"title":180,"path":181,"stem":182,"children":183,"page":178},"Build","\u002Fen\u002Fdocs\u002Fbuild","en\u002Fdocs\u002Fbuild",[184],{"title":185,"path":186,"stem":187,"description":188},"Generate a bundle","\u002Fen\u002Fdocs\u002Fbuild\u002Fgenerate-bundle","en\u002Fdocs\u002Fbuild\u002Fgenerate-bundle","Prepare a release artifact that will pass Otalan's validation pipeline, including the extra considerations required for Expo-based publish flows.",{"title":190,"path":191,"stem":192,"children":193,"page":178},"Deploy","\u002Fen\u002Fdocs\u002Fdeploy","en\u002Fdocs\u002Fdeploy",[194],{"title":195,"path":196,"stem":197,"description":198},"Publish a release","\u002Fen\u002Fdocs\u002Fdeploy\u002Fpublish-release","en\u002Fdocs\u002Fdeploy\u002Fpublish-release","Submit a release through the dashboard, understand each field in the publish form, and operate the validation lifecycle with confidence.",{"title":200,"path":201,"stem":202,"children":203,"page":178},"Integration","\u002Fen\u002Fdocs\u002Fintegration","en\u002Fdocs\u002Fintegration",[204],{"title":205,"path":206,"stem":207,"description":208},"Migrate from App Center CodePush","\u002Fen\u002Fdocs\u002Fintegration\u002Fapp-center-codepush","en\u002Fdocs\u002Fintegration\u002Fapp-center-codepush","Plan a migration from Microsoft App Center CodePush to Otalan, with mapping notes, rollout guidance, and common failure modes.",{"title":210,"path":211,"stem":212,"children":213,"page":178},"Quick Start","\u002Fen\u002Fdocs\u002Fquick-start","en\u002Fdocs\u002Fquick-start",[214,219,224],{"title":215,"path":216,"stem":217,"description":218},"Capacitor quick start","\u002Fen\u002Fdocs\u002Fquick-start\u002Fcapacitor","en\u002Fdocs\u002Fquick-start\u002Fcapacitor","Wire the Otalan Capacitor runtime into an installed app so it can check for OTA updates, install compatible bundles, and confirm successful launches.",{"title":220,"path":221,"stem":222,"description":223},"Expo quick start","\u002Fen\u002Fdocs\u002Fquick-start\u002Fexpo","en\u002Fdocs\u002Fquick-start\u002Fexpo","Configure expo-updates with Otalan, add the Otalan Expo helper, and make the installed app ready to receive compatible OTA bundles.",{"title":225,"path":226,"stem":227,"description":228},"Publish in 5 minutes","\u002Fen\u002Fdocs\u002Fquick-start\u002Fquick-start","en\u002Fdocs\u002Fquick-start\u002Fquick-start","Create the first Otalan release path, publish a baseline bundle, verify one update, and prove rollback before widening rollout.",{"title":230,"path":231,"stem":232,"children":233,"page":178},"Tooling","\u002Fen\u002Fdocs\u002Ftooling","en\u002Fdocs\u002Ftooling",[234,239,244],{"title":235,"path":236,"stem":237,"description":238},"AI skill","\u002Fen\u002Fdocs\u002Ftooling\u002Fai-skill","en\u002Fdocs\u002Ftooling\u002Fai-skill","Copy a compact assistant skill for Otalan SDK setup, CLI publishing, and safe credential boundaries.",{"title":240,"path":241,"stem":242,"description":243},"CLI","\u002Fen\u002Fdocs\u002Ftooling\u002Fcli","en\u002Fdocs\u002Ftooling\u002Fcli","Learn when to use the Otalan CLI, what workflows it covers, and how it complements the dashboard instead of replacing the platform model.",{"title":245,"path":246,"stem":247,"description":248},"SDKs","\u002Fen\u002Fdocs\u002Ftooling\u002Fsdk","en\u002Fdocs\u002Ftooling\u002Fsdk","Understand the difference between the Capacitor and Expo integrations, and choose the runtime package that matches the way your mobile app actually updates.",{"title":250,"path":251,"stem":252,"children":253,"page":178},"Versions","\u002Fen\u002Fdocs\u002Fversions","en\u002Fdocs\u002Fversions",[254],{"title":5,"path":151,"stem":153,"description":147},1780287527009]