{"id":4139,"date":"2022-03-25T19:06:47","date_gmt":"2022-03-25T19:06:47","guid":{"rendered":"https:\/\/ionicframework.com\/blog\/?p=4139"},"modified":"2022-03-25T21:53:59","modified_gmt":"2022-03-25T21:53:59","slug":"improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli","title":{"rendered":"Improved Native Versioning and White Labeling Enhancements with the Ionic Cloud CLI"},"content":{"rendered":"<p>I\u2019m happy to announce the addition of two new features to the <a href=\"https:\/\/ionic.io\/docs\/appflow\/cli\/overview\">Ionic Cloud CLI<\/a>: Live Update channel creation for easier native versioning and native configuration creation for white label enhancements. These additions make it easier to automate the deployment of your Ionic, Cordova, and Capacitor apps.<\/p>\n<p><!--more--><\/p>\n<p>The Cloud CLI provides the ability to use all of Ionic&#8217;s cloud products inside your own CI\/CD platform (such as Azure DevOps, Gitlab, Jenkins, and more). You can control exactly when builds are produced and deployed and insert your own processes in between these steps (such as code signing, QA testing, manager approvals, etc.).<\/p>\n<h2>Easier Native Versioning with Live Update Channel Creation<\/h2>\n<p>The first new feature added to the Cloud CLI is the ability to create a Live Update channel. Live Updates are one of Appflow\u2019s most compelling features since they allow you to ship web code updates directly to users and bypass the app store review process. A channel points to a specific Live Update app build. Any device(s) configured to listen to that channel will receive updates automatically. You can rollback changes and alter to which build a channel points.<\/p>\n<p>To create a new Live Update channel, use this command, specifying the channel name:<\/p>\n<pre><code class=\"language-bash\">$ ionic-cloud destination create channel --name \u201ciOS 1.2.*\u201d --app-id A3211\n<\/code><\/pre>\n<p>Straightforward, right? The power comes from how you use it. Over the years, we\u2019ve heard from Appflow customers that it can be tricky to come up with a maintainable versioning strategy. Since Web Native apps consist of two code layers\u2014the web layer and the native layer\u2014keeping them in sync is challenging. This new command enables you to set up Live Updates in a way that many Appflow customers have been creating manually until now.<\/p>\n<p>With this improvement, Live Update channels are now tied to the native platform and the version number, such as \u201cAndroid 1.2.*.\u201d That way, it\u2019s always clear which web build (aka Live Update) and native version are supported and deployed together.<\/p>\n<p>Here are the steps to implement this in your native build pipeline (some flags omitted), using iOS as the native platform and \u201c1.2.*\u201d as the version number.<\/p>\n<ol>\n<li>Create a new Live Updates channel. The version number can be dynamically set if it\u2019s already stored in your CI\/CD system.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">$ ionic-cloud destination create channel --name &lt;NEW CHANNEL NAME&gt; \n\n$ ionic-cloud destination create channel --name \u201ciOS 1.2.*\u201d\n<\/code><\/pre>\n<ol>\n<li>Create a new native build that uses the new Live Update channel:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">$ ionic-cloud build ios --live-update-channel-name &lt;NEW CHANNEL NAME&gt;\n\n$ ionic-cloud build ios --live-update-channel-name \u201ciOS 1.2.*\u201d\n<\/code><\/pre>\n<ol>\n<li>Create a new web build<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">$ ionic-cloud build web --app-id=&lt;APPFLOW APP ID&gt; --commit=&lt;GIT COMMIT SHA&gt;\n\n$ ionic-cloud build web --app-id=a3B921 --commit=99072aca\n<\/code><\/pre>\n<ol>\n<li>Deploy the Live Update<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">$ ionic-cloud deploy web --app-id=&lt;APPFLOW APP ID&gt; --build-id=&lt;BUILD ID FROM PREVIOUS COMMAND&gt; --destination=&lt;NEW CHANNEL NAME&gt;\n\n$ ionic-cloud deploy web --app-id=a3B921 --build-id=12345 --destination=\u201diOS 1.2.*\u201d\n<\/code><\/pre>\n<p>Later, when a change necessitates a new native build (such as a breaking change, new native plugin installed, etc.), go through the above steps again, this time with an incremental version number (like \u201c1.3.*\u201d). See the <a href=\"https:\/\/ionic.io\/docs\/appflow\/cli\/reference\/ionic-cloud_destination\">docs<\/a> for complete configuration details.<\/p>\n<h2>White Labeling Enhancements<\/h2>\n<p>A white label app is a generic application built by a company to resell to another business that, in turn, can rebrand it as their own. Given Ionic\u2019s products make it easy to build cross-platform apps using one codebase, it\u2019s no surprise that white-labeling is a popular use case for Appflow\u2019s cloud services.<\/p>\n<p>In this new feature, you can now pass native configuration variables dynamically to iOS and Android native builds, including app name and bundle ID. Previously, you would have to manually create each native configuration in the Appflow UI one by one. Of course, if you had dozens of apps, that would take a long time!<\/p>\n<p>Now, you can pass in the native config details that you likely already have set up in your CI\/CD system to your various application builds. In practice, this looks like this:<\/p>\n<pre><code class=\"language-bash\">$ ionic-cloud build ios --app-bundle-id com.company.apples --app-name Apples\n$ ionic-cloud build ios --app-bundle-id com.company.bananas --app-name Bananas\n$ ionic-cloud build ios --app-bundle-id com.company.carrots --app-name Carrots\n<\/code><\/pre>\n<p>In the above example, you have a template app deployed to the app stores as three separate apps: Apples, Bananas, and Carrots. Bundle IDs and app names are unique, so specify those while reusing the same web build. See the docs on <a href=\"https:\/\/ionic.io\/docs\/appflow\/cli\/reference\/ionic-cloud_build_android\">Android builds<\/a> and <a href=\"https:\/\/ionic.io\/docs\/appflow\/cli\/reference\/ionic-cloud_build_ios\">iOS builds<\/a> for more configuration options.<\/p>\n<h2>Connect Appflow to your CI\/CD Platform Today<\/h2>\n<p>To use the latest version of the Ionic Cloud CLI, simply install it as the first step in your CI\/CD pipeline:<\/p>\n<pre><code class=\"language-bash\">curl -fsSL https:\/\/ionic.io\/blog\/get-ionic-cloud-cli | bash\n<\/code><\/pre>\n<p>If you&#8217;d like to lock the version of Ionic Cloud CLI in place for your pipeline, use the following command to install the Ionic Cloud CLI instead, replacing X.X.X with your desired version number. This new version is v0.4.0.<\/p>\n<pre><code class=\"language-bash\">export IONIC_CLOUD_VERSION=X.X.X; curl -fsSL https:\/\/ionic.io\/blog\/get-ionic-cloud-cli | bash\n<\/code><\/pre>\n<p>Since we introduced the Ionic Cloud CLI last year, we\u2019ve loved hearing from customers about all the ways they are using it in their CI\/CD systems. Curious to integrate Appflow into your CI\/CD processes? <a href=\"https:\/\/ionic.io\/contact\/sales\">Reach out to get access.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019m happy to announce the addition of two new features to the Ionic Cloud CLI: Live Update channel creation for easier native versioning and native configuration creation for white label enhancements. These additions make it easier to automate the deployment of your Ionic, Cordova, and Capacitor apps.<\/p>\n","protected":false},"author":62,"featured_media":4140,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"0","publish_post_category":"20","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"544469","discourse_permalink":"https:\/\/forum.ionicframework.com\/t\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli\/221770","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[120],"tags":[128],"class_list":["post-4139","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","tag-appflow"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Improved Native Versioning and White Labeling Enhancements<\/title>\n<meta name=\"description\" content=\"We&#039;re happy to announce two new Ionic Cloud CLI features: Improved native versioning and white labeling enhancements\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Improved Native Versioning and White Labeling Enhancements with the Ionic Cloud CLI\" \/>\n<meta property=\"og:description\" content=\"We&#039;re happy to announce two new Ionic Cloud CLI features: Improved native versioning and white labeling enhancements\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-25T19:06:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-25T21:53:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"880\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matt Netkow\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dotNetkow\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matt Netkow\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli\"},\"author\":{\"name\":\"Matt Netkow\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/93c8b2fe110f183510c6285b0de40790\"},\"headline\":\"Improved Native Versioning and White Labeling Enhancements with the Ionic Cloud CLI\",\"datePublished\":\"2022-03-25T19:06:47+00:00\",\"dateModified\":\"2022-03-25T21:53:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli\"},\"wordCount\":758,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png\",\"keywords\":[\"Appflow\"],\"articleSection\":[\"Announcements\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli\",\"url\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli\",\"name\":\"Improved Native Versioning and White Labeling Enhancements\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png\",\"datePublished\":\"2022-03-25T19:06:47+00:00\",\"dateModified\":\"2022-03-25T21:53:59+00:00\",\"description\":\"We're happy to announce two new Ionic Cloud CLI features: Improved native versioning and white labeling enhancements\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png\",\"width\":1600,\"height\":880,\"caption\":\"Improved Native Versioning and White Labeling Enhancements with the Ionic Cloud CLI\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Improved Native Versioning and White Labeling Enhancements with the Ionic Cloud CLI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/93c8b2fe110f183510c6285b0de40790\",\"name\":\"Matt Netkow\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/07\/mattnetkow-150x150.jpg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/07\/mattnetkow-150x150.jpg\",\"caption\":\"Matt Netkow\"},\"sameAs\":[\"https:\/\/x.com\/dotNetkow\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/mattnetkow\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Improved Native Versioning and White Labeling Enhancements","description":"We're happy to announce two new Ionic Cloud CLI features: Improved native versioning and white labeling enhancements","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli","og_locale":"en_US","og_type":"article","og_title":"Improved Native Versioning and White Labeling Enhancements with the Ionic Cloud CLI","og_description":"We're happy to announce two new Ionic Cloud CLI features: Improved native versioning and white labeling enhancements","og_url":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli","og_site_name":"Ionic Blog","article_published_time":"2022-03-25T19:06:47+00:00","article_modified_time":"2022-03-25T21:53:59+00:00","og_image":[{"width":1600,"height":880,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png","type":"image\/png"}],"author":"Matt Netkow","twitter_card":"summary_large_image","twitter_creator":"@dotNetkow","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Matt Netkow","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli"},"author":{"name":"Matt Netkow","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/93c8b2fe110f183510c6285b0de40790"},"headline":"Improved Native Versioning and White Labeling Enhancements with the Ionic Cloud CLI","datePublished":"2022-03-25T19:06:47+00:00","dateModified":"2022-03-25T21:53:59+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli"},"wordCount":758,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png","keywords":["Appflow"],"articleSection":["Announcements"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli","url":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli","name":"Improved Native Versioning and White Labeling Enhancements","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png","datePublished":"2022-03-25T19:06:47+00:00","dateModified":"2022-03-25T21:53:59+00:00","description":"We're happy to announce two new Ionic Cloud CLI features: Improved native versioning and white labeling enhancements","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png","width":1600,"height":880,"caption":"Improved Native Versioning and White Labeling Enhancements with the Ionic Cloud CLI"},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/improved-native-versioning-and-white-labeling-enhancements-with-the-ionic-cloud-cli#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Improved Native Versioning and White Labeling Enhancements with the Ionic Cloud CLI"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/93c8b2fe110f183510c6285b0de40790","name":"Matt Netkow","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/07\/mattnetkow-150x150.jpg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/07\/mattnetkow-150x150.jpg","caption":"Matt Netkow"},"sameAs":["https:\/\/x.com\/dotNetkow"],"url":"https:\/\/ionic.io\/blog\/author\/mattnetkow"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/cloud-cli-versioning-feature-image.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=4139"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4139\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/4140"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=4139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=4139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=4139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}