{"id":4328,"date":"2022-07-29T18:20:45","date_gmt":"2022-07-29T18:20:45","guid":{"rendered":"https:\/\/ionicframework.com\/blog\/?p=4328"},"modified":"2022-07-29T18:21:06","modified_gmt":"2022-07-29T18:21:06","slug":"announcing-capacitor-4-0","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0","title":{"rendered":"Announcing Capacitor 4.0"},"content":{"rendered":"<p>Today, we&#8217;re thrilled to announce the release of Capacitor 4.0 \ud83c\udf89. This new major version brings not only a bunch of bug fixes and improvements to the overall codebase, but also bumps the minimum SDK targets to support <a href=\"https:\/\/developer.android.com\/google\/play\/requirements\/target-sdk\">new Google Play policies<\/a>. For folks with existing apps, fear not, upgrading to Capacitor 4.0 is nothing like past releases. Given the rock solid base we created in v3, Capacitor 4.0 only requires a few changes to existing code.<\/p>\n<p><!--more--><\/p>\n<h2>Migrating an Existing App<\/h2>\n<p>For folks with existing apps, migrating to Capacitor 4.0 should only require a few changes to your overall codebase. A full migration guide <a href=\"https:\/\/capacitorjs.com\/docs\/updating\/4-0\">can be found on the docs<\/a>, which will walk you through the whole process. Install the latest version of the Capacitor CLI to your project using:<\/p>\n<pre><code class=\"language-bash\">npm i -D @capacitor\/cli@latest\n<\/code><\/pre>\n<p>Once installed, simply run <code>npx cap migrate<\/code> to have the CLI handle the migration for you. If any of the steps for the migration are not able to be completed, additional information will be made available in the output in the terminal.<\/p>\n<p>Or, for anyone using VS Code, install our <a href=\"https:\/\/ionic.link\/vscode\">Ionic Extension<\/a> for a 1-click migration. Simply click the &#8220;Migrate to Capacitor 4&#8221; in your Recommendations and the extension will take care of the rest.<\/p>\n<div class=\"video-container\">\n          <video controls playsinline autoplay muted loop src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/cap-4-migrate.mp4\"><\/video>\n        <\/div>\n<p>For Plugins, there are a few changes that have been made, so I&#8217;d suggest reviewing the <a href=\"https:\/\/next.capacitorjs.com\/docs\/updating\/4-0#plugins\">Plugins section of the migration docs<\/a>.<\/p>\n<p>That&#8217;s all now, folks! We&#8217;re thrilled to ship this new version of Capacitor and can&#8217;t wait for you all to update your apps. Cheers!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we&#8217;re thrilled to announce the release of Capacitor 4.0 \ud83c\udf89. This new major version brings not only a bunch of bug fixes and improvements to the overall codebase, but also bumps the minimum SDK targets to support new Google Play policies. For folks with existing apps, fear not, upgrading to Capacitor 4.0 is nothing [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":4330,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"0","publish_post_category":"26","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"550571","discourse_permalink":"https:\/\/forum.ionicframework.com\/t\/announcing-capacitor-4-0\/225507","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[81,151,98],"class_list":["post-4328","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all","tag-announcements","tag-capacitor","tag-release"],"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>Announcing Capacitor 4.0 - Ionic Blog<\/title>\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\/announcing-capacitor-4-0\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Announcing Capacitor 4.0\" \/>\n<meta property=\"og:description\" content=\"Today, we&#8217;re thrilled to announce the release of Capacitor 4.0 \ud83c\udf89. This new major version brings not only a bunch of bug fixes and improvements to the overall codebase, but also bumps the minimum SDK targets to support new Google Play policies. For folks with existing apps, fear not, upgrading to Capacitor 4.0 is nothing [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-29T18:20:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-29T18:21:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-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=\"Mike Hartington\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mhartington\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mike Hartington\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0\"},\"author\":{\"name\":\"Mike Hartington\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b\"},\"headline\":\"Announcing Capacitor 4.0\",\"datePublished\":\"2022-07-29T18:20:45+00:00\",\"dateModified\":\"2022-07-29T18:21:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0\"},\"wordCount\":260,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png\",\"keywords\":[\"announcements\",\"Capacitor\",\"release\"],\"articleSection\":[\"All\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0\",\"url\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0\",\"name\":\"Announcing Capacitor 4.0 - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png\",\"datePublished\":\"2022-07-29T18:20:45+00:00\",\"dateModified\":\"2022-07-29T18:21:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png\",\"width\":1600,\"height\":880},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Announcing Capacitor 4.0\"}]},{\"@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\/c8c92b04d526adb925ea514c619a267b\",\"name\":\"Mike Hartington\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png\",\"caption\":\"Mike Hartington\"},\"description\":\"Director of Developer Relations\",\"sameAs\":[\"https:\/\/twitter.com\/mhartington\",\"https:\/\/x.com\/mhartington\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/mike\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Announcing Capacitor 4.0 - Ionic Blog","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\/announcing-capacitor-4-0","og_locale":"en_US","og_type":"article","og_title":"Announcing Capacitor 4.0","og_description":"Today, we&#8217;re thrilled to announce the release of Capacitor 4.0 \ud83c\udf89. This new major version brings not only a bunch of bug fixes and improvements to the overall codebase, but also bumps the minimum SDK targets to support new Google Play policies. For folks with existing apps, fear not, upgrading to Capacitor 4.0 is nothing [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0","og_site_name":"Ionic Blog","article_published_time":"2022-07-29T18:20:45+00:00","article_modified_time":"2022-07-29T18:21:06+00:00","og_image":[{"width":1600,"height":880,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png","type":"image\/png"}],"author":"Mike Hartington","twitter_card":"summary_large_image","twitter_creator":"@mhartington","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Mike Hartington","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0"},"author":{"name":"Mike Hartington","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b"},"headline":"Announcing Capacitor 4.0","datePublished":"2022-07-29T18:20:45+00:00","dateModified":"2022-07-29T18:21:06+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0"},"wordCount":260,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png","keywords":["announcements","Capacitor","release"],"articleSection":["All"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0","url":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0","name":"Announcing Capacitor 4.0 - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png","datePublished":"2022-07-29T18:20:45+00:00","dateModified":"2022-07-29T18:21:06+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/announcing-capacitor-4-0"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png","width":1600,"height":880},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-4-0#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Announcing Capacitor 4.0"}]},{"@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\/c8c92b04d526adb925ea514c619a267b","name":"Mike Hartington","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png","caption":"Mike Hartington"},"description":"Director of Developer Relations","sameAs":["https:\/\/twitter.com\/mhartington","https:\/\/x.com\/mhartington"],"url":"https:\/\/ionic.io\/blog\/author\/mike"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/07\/capacitor-4-feature-image.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4328","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\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=4328"}],"version-history":[{"count":1,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4328\/revisions"}],"predecessor-version":[{"id":4484,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4328\/revisions\/4484"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/4330"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=4328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=4328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=4328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}