{"id":3667,"date":"2021-05-19T12:38:42","date_gmt":"2021-05-19T12:38:42","guid":{"rendered":"https:\/\/ionicframework.com\/blog\/?p=3667"},"modified":"2021-05-19T13:42:28","modified_gmt":"2021-05-19T13:42:28","slug":"announcing-capacitor-3-0","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0","title":{"rendered":"Announcing Capacitor 3.0"},"content":{"rendered":"<p>Today I\u2019m thrilled to announce the 3.0 release of <a href=\"https:\/\/capacitorjs.com\">Capacitor<\/a>, Ionic\u2019s native runtime that makes it easy to build web apps that run on iOS, Android, Desktop, and on the web as Progressive Web Apps \u2014 all powered by a single codebase.<\/p>\n<p>Capacitor connects the web to native, enabling the best of both worlds by providing the tooling and runtime that make it possible to take any modern web app and deploy it natively to all the platforms you care about.<\/p>\n<p><iframe loading=\"lazy\" width=\"100%\" height=\"375\" data-src=\"https:\/\/www.youtube.com\/embed\/NZYLrHxFAkY\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<p>With the release of Capacitor 3.0, we\u2019re unlocking a new approach to building native apps with web technology \u2014 a category we\u2019re calling <a href=\"https:\/\/webnative.tech\">Web Native<\/a> apps.<\/p>\n<p>In fact, Capacitor is quickly becoming the de facto standard for web developers building for mobile. It\u2019s installed half a million times per month and growing rapidly, with thousands of new apps kicked off every week. It was also rated #1 in satisfaction among mobile development tools on the <a href=\"https:\/\/2020.stateofjs.com\/en-US\/technologies\/mobile-desktop\/\">latest State of JS survey<\/a>.<\/p>\n<p>With the release of Capacitor 3.0, we\u2019re planting a stake in the ground: Capacitor is now the standard for web developers building mobile apps. We\u2019re firmly committed to making mobile development just as good as web development, and that\u2019s exactly what Capacitor enables. Whether you have an existing web project or are curious about starting a new mobile project, we hope you\u2019ll check out Capacitor.<\/p>\n<p>Now, on to Capacitor 3.0\u2019s major updates, which include improved performance, enhanced developer experience, and greater community involvement.<\/p>\n<p><!--more--><\/p>\n<h2>Performance<\/h2>\n<p>Performance: everyone\u2019s favorite topic! As you know, when it comes to building world-class apps, especially those that run across multiple platforms, great performance is a must. The Ionic and Capacitor teams are always laser-focused on maintaining great performance and developer experience, and Capacitor 3.0 is no exception.<\/p>\n<p>We took a fresh look at Capacitor to find creative ways that we could further improve performance, including reduced app bundle size and improved app launch time.<\/p>\n<h3>Official Plugins Separated from Capacitor Core<\/h3>\n<p>First, to reduce app bundle size, the official Capacitor plugins have been <a href=\"https:\/\/github.com\/ionic-team\/capacitor-plugins\">separated from Capacitor Core<\/a>.<\/p>\n<p>This is a departure from previous versions of Capacitor. Until now, the 20+ official Capacitor plugins, which span everything from camera, to geolocation, filesystem and push notification support, were bundled together with Capacitor Core, the native runtime code that powers the ability to deploy your web app as a native app. This made getting started with Capacitor really easy, providing access to common native features out-of-the-box.<\/p>\n<p>However, since all plugins were bundled with Core, your app would contain code for all available native features \u2014 even those you weren\u2019t using. Additionally, plugin permissions were automatically configured in Capacitor-powered iOS and Android native projects. This meant it wasn\u2019t always apparent why native features were included if they weren\u2019t being used. This prompted questions like, \u201cWhy does my app ask for permission to use the camera if I\u2019m not using that feature?\u201d<\/p>\n<p>With Capacitor 3, you can use only the features you need. Simply import the exact plugin you\u2019d like to use and you\u2019re on your way. Most of the APIs have stayed the same too, so you can upgrade in <a href=\"https:\/\/capacitorjs.com\/docs\/v3\/updating\/3-0\">only a few steps<\/a>. View <a href=\"https:\/\/capacitorjs.com\/docs\/v3\/updating\/3-0#migrating-your-app-to-use-the-new-official-plugin-packages\">complete details here<\/a>, but in practice, here\u2019s what it looks like:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Capacitor 1 and 2\nimport { Plugins } from &#039;@capacitor\/core&#039;;\nconst { Camera, Filesystem } = Plugins;\n\n\/\/ Capacitor 3 - Camera and Filesystem plugins\nimport { Camera } from &#039;@capacitor\/camera&#039;;\nimport { Filesystem, Directory  } from &#039;@capacitor\/filesystem&#039;;\n\n\/\/ In most cases, no changes to the API\nconst imageData = await Camera.getPhoto({\n  resultType: CameraResultType.Uri, \n  source: CameraSource.Camera, \n  quality: 100\n});\n<\/code><\/pre>\n<h3>Lazy Load Web Plugins<\/h3>\n<p>Finally, plugins are now lazy loaded based on the platform the app is running on. For example, an app running on Electron will only load Electron-based plugins, and will not load plugins for other platforms that aren\u2019t required, such as iOS or Android. This helps keep bundle sizes down, and ensures platform-specific code is not accidentally executed on the wrong platform.<\/p>\n<h2>Enhanced Developer Experience<\/h2>\n<p>Capacitor 3 also adds a number of improvements to Capacitor\u2019s developer experience, starting with the native mobile tooling:<\/p>\n<h3>New CLI &#8220;run&#8221; Command<\/h3>\n<p>Capacitor\u2019s tooling has received a bunch of improvements too. By popular demand from the community, we\u2019ve created <a href=\"https:\/\/capacitorjs.com\/docs\/v3\/cli\/run\">a new \u201cRun\u201d command<\/a> that eliminates unnecessary context switching from code editor to native IDEs. It copies web assets into native projects, programmatically invokes a native debug build, then deploys the app to Android and iOS (physical or virtual) devices. Not only can you build and deploy faster, it frees up your computer\u2019s resources since you no longer need to have the native IDEs open while developing and testing apps.<\/p>\n<h3>TypeScript Configuration Files<\/h3>\n<p>The Capacitor configuration file, used to configure and set high-level options for Capacitor tooling as well as the native mobile apps in JSON format, <a href=\"https:\/\/capacitorjs.com\/docs\/v3\/config\">can now be written in TypeScript<\/a>. This means you can configure Capacitor in a type-safe manner (including autocomplete and inline documentation). One exciting benefit is the ability to specify different configurations based on the development environment (such as development, QA, and production), as well as leveraging environment variables to customize the app experience.<\/p>\n<h3>Updated Permissions API<\/h3>\n<p>In order to access certain native features, such as geolocation or camera access, apps need to request permission from users first. This is accomplished by a plugin permissions API, which has been reimagined in Capacitor 3.0 to offer a standardized mechanism for controlling plugin permissions.<\/p>\n<p>Prior to 3.0, permission prompts were presented when the user first interacted with a feature. For example, when first accessing camera functionality, the user would be prompted to grant permission to the app to use the camera feature. Now, Capacitor developers have the ability to prompt permission requests at any time. For example, the user may be prompted to grant access when the app is first installed. This provides more flexibility in the user experience by allowing the developer to decide when and how permission prompts are presented to the user, rather than when the feature requiring permissions is first accessed.<\/p>\n<p><a href=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions.png\"><img loading=\"lazy\" decoding=\"async\" width=\"542\" height=\"1024\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-542x1024.png\" alt=\"\" class=\"aligncenter size-large wp-image-3683 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-542x1024.png 542w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-159x300.png 159w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-768x1452.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-813x1536.png 813w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-1083x2048.png 1083w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions.png 1530w\" data-sizes=\"auto, (max-width: 542px) 100vw, 542px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 542px; --smush-placeholder-aspect-ratio: 542\/1024;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"542\" height=\"1024\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-542x1024.png\" alt=\"\" class=\"aligncenter size-large wp-image-3683\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-542x1024.png 542w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-159x300.png 159w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-768x1452.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-813x1536.png 813w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions-1083x2048.png 1083w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/ionifits-permissions.png 1530w\" sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><\/noscript><\/a><\/p>\n<h2>Community Investment<\/h2>\n<p>At Ionic, we\u2019ve always believed in the power of open source and the open source community. With the launch of Capacitor 3.0, we\u2019ve taken a fresh look at how we can improve our investment in our wonderful community through a new GitHub org, public milestones, and improved community support.<\/p>\n<h3>Capacitor Community GitHub Organization<\/h3>\n<p>Almost one year ago, we rolled out the <a href=\"https:\/\/github.com\/capacitor-community\/\">Capacitor Community GitHub organization<\/a>. It hosts plugins, tools, and other projects \u2014 all contributed and maintained by the community.<\/p>\n<p>Today, the org hosts many popular plugins and tools, and more are being added all the time. If there\u2019s a plugin you\u2019d like to see built, <a href=\"https:\/\/github.com\/capacitor-community\/proposals\">add a request<\/a> to the Proposals repository. We\u2019ve had a number of great plugins make it in so far, including <a href=\"https:\/\/github.com\/capacitor-community\/bluetooth-le\">Bluetooth Low Energy<\/a> and a <a href=\"https:\/\/github.com\/capacitor-community\/barcode-scanner\">barcode scanner<\/a>.<\/p>\n<p>Speaking of plugins, we\u2019ve also created a new <a href=\"https:\/\/github.com\/ionic-team\/capacitor-docgen\">documentation generation tool<\/a>, which standardizes how Capacitor plugins are documented on both the GitHub and npm landing pages.<\/p>\n<p>That\u2019s not all. Capacitor now supports community-maintained <em>platforms<\/em>.  The first platform is <a href=\"https:\/\/github.com\/capacitor-community\/electron\">Electron<\/a>; huge shout out to Mike Summerfeldt for leading this effort! Through a new standardized model and development template, other platforms can be added by the community in the future.<\/p>\n<p>Between the 20+ official Capacitor plugins and tons of community plugins, you can be confident you\u2019ll find the native features you need to build great apps.<\/p>\n<h3>Increased Transparency<\/h3>\n<p>Not only is our code open source, but our work is, too. Recently, we\u2019ve increased Capacitor\u2019s project transparency with <a href=\"https:\/\/github.com\/ionic-team\/capacitor\/milestones\">public milestones<\/a> and project planning all on GitHub.<\/p>\n<h3>Community Forum<\/h3>\n<p>Since Ionic\u2019s early days, we\u2019ve centered our focus on open source and community building. We\u2019re proud of how welcoming and inclusive our community is. That said, we\u2019re always looking for ways to do more, so recently we\u2019ve taken steps to increase our community presence even further on the <a href=\"https:\/\/forum.ionicframework.com\">Ionic Forum<\/a>. Our goal is to ensure you can build great apps by getting your questions answered by the Ionic team and the broader community, and in general, feel confident investing in Capacitor and its ecosystem. <a href=\"https:\/\/forum.ionicframework.com\">See you online!<\/a><\/p>\n<h2>Capacitor 3 Migration<\/h2>\n<p>Excited to try out Capacitor 3.0\u2019s great new features? We\u2019ve taken steps to ensure that migration is as smooth as possible. Check out the <a href=\"https:\/\/capacitorjs.com\/docs\/v3\/updating\/3-0\">migration guide<\/a>, featuring the required tooling to run Capacitor 3.0 apps as well as steps to update official plugins and your iOS and Android projects.<\/p>\n<p>If you\u2019re a plugin author looking to upgrade your plugins to Capacitor 3.0, see the <a href=\"https:\/\/capacitorjs.com\/docs\/v3\/updating\/plugins\/3-0\">Capacitor plugin upgrade guide<\/a>. It documents the migration steps for iOS, Android, the web, and adopting the <a href=\"https:\/\/capacitorjs.com\/docs\/v3\/plugins\/web#permissions\">new Permissions API<\/a>.<\/p>\n<h2>Introducing Ionic Portals: Power Up Existing Native Apps with Capacitor<\/h2>\n<p>As a bonus, we\u2019re excited to announce <a href=\"https:\/\/ionic.io\/portals\">Ionic Portals<\/a>, a supercharged Web View control for safely embedding rich web experiences into existing native apps built on top of Capacitor.<\/p>\n<p>With Portals, native and web teams can collaborate to bring existing web experiences and micro-apps to native, without getting in the way of the existing native app roadmap. Portals supplies a native API with the ability to extend the Web View with custom native functionality, providing robust web-to-native capabilities to embedded web apps.<\/p>\n<p>To learn more about Portals, watch a demo, and join the waitlist, visit the <a href=\"https:\/\/ionic.io\/portals\">Portals<\/a> announcement page.<\/p>\n<h2>What&#8217;s next for Capacitor?<\/h2>\n<p>With v3 out, we&#8217;re starting to think about what&#8217;s next for Capacitor. When we created Capacitor, one of our goals was to make it the most stable native runtime on the market, so stability is an ongoing focus for us. We want Capacitor to Just Work and always be a joy to use. That work is never-ending and is a major focus for us.<\/p>\n<p>Beyond stability, we are investigating a number of features that we think will be much appreciated by the community. One of which is making testing easier. We know that testing <a href=\"https:\/\/webnative.tech\">Web Native<\/a> apps today can be difficult, since most solutions focus on testing either the web side or the native side but rarely both together. We think this is an area we can improve and are exploring options for doing that. We&#8217;re also building out <a href=\"https:\/\/ionic.io\/portals\">Ionic Portals<\/a> to bring Capacitor to existing native apps in a way that native developers will love.<\/p>\n<p>Once we catch our breath after the v3 launch we&#8217;ll share more insight into Capacitor&#8217;s roadmap, so stay tuned for that. Your feedback on areas you want to see us improve is always appreciated and helps us figure out where to focus.<\/p>\n<h2>Build Apps with Capacitor 3.0 Now<\/h2>\n<p>More developers than ever are migrating to Capacitor, or joining us for their very first app. We hope you\u2019ll check it out for your next cross-platform project. You can drop Capacitor into any existing web app, framework, or library, including <a href=\"https:\/\/capacitorjs.com\/solution\/react\">React<\/a>, <a href=\"https:\/\/capacitorjs.com\/solution\/svelte\">Svelte<\/a>, <a href=\"https:\/\/capacitorjs.com\/solution\/vue\">Vue<\/a>, <a href=\"https:\/\/capacitorjs.com\/blog\/mobile-apps-with-tailwind-css-nextjs-ionic-and-capacitor\">Tailwind<\/a> (or your preferred Web Framework) projects.<\/p>\n<p><a href=\"https:\/\/capacitorjs.com\/docs\/getting-started\">Start building awesome Capacitor 3 apps now.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I\u2019m thrilled to announce the 3.0 release of Capacitor, Ionic\u2019s native runtime that makes it easy to build web apps that run on iOS, Android, Desktop, and on the web as Progressive Web Apps \u2014 all powered by a single codebase. Capacitor connects the web to native, enabling the best of both worlds by [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":3674,"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":"505832","discourse_permalink":"https:\/\/forum.ionicframework.com\/t\/announcing-capacitor-3-0\/209733","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[120],"tags":[125,151,100,33],"class_list":["post-3667","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","tag-android","tag-capacitor","tag-ios","tag-pwa"],"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 3.0 - Ionic Blog<\/title>\n<meta name=\"description\" content=\"Capacitor 3.0 includes improved performance, enhanced developer experience, and greater community involvement.\" \/>\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-3-0\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Announcing Capacitor 3.0\" \/>\n<meta property=\"og:description\" content=\"Capacitor 3.0 includes improved performance, enhanced developer experience, and greater community involvement.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-19T12:38:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-19T13:42:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-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=\"Max Lynch\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@maxlynch\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Max Lynch\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 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-3-0#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0\"},\"author\":{\"name\":\"Max Lynch\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/91f360cffbd804a464b0c4a87b5c5f1e\"},\"headline\":\"Announcing Capacitor 3.0\",\"datePublished\":\"2021-05-19T12:38:42+00:00\",\"dateModified\":\"2021-05-19T13:42:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0\"},\"wordCount\":1778,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png\",\"keywords\":[\"Android\",\"Capacitor\",\"iOS\",\"PWA\"],\"articleSection\":[\"Announcements\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0\",\"url\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0\",\"name\":\"Announcing Capacitor 3.0 - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png\",\"datePublished\":\"2021-05-19T12:38:42+00:00\",\"dateModified\":\"2021-05-19T13:42:28+00:00\",\"description\":\"Capacitor 3.0 includes improved performance, enhanced developer experience, and greater community involvement.\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png\",\"width\":1600,\"height\":880,\"caption\":\"Capacitor 3 Image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Announcing Capacitor 3.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\/91f360cffbd804a464b0c4a87b5c5f1e\",\"name\":\"Max Lynch\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/05\/max-avatar-150x150.jpg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/05\/max-avatar-150x150.jpg\",\"caption\":\"Max Lynch\"},\"description\":\"CEO\",\"sameAs\":[\"http:\/\/twitter.com\/maxlynch\",\"https:\/\/x.com\/maxlynch\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/max\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Announcing Capacitor 3.0 - Ionic Blog","description":"Capacitor 3.0 includes improved performance, enhanced developer experience, and greater community involvement.","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-3-0","og_locale":"en_US","og_type":"article","og_title":"Announcing Capacitor 3.0","og_description":"Capacitor 3.0 includes improved performance, enhanced developer experience, and greater community involvement.","og_url":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0","og_site_name":"Ionic Blog","article_published_time":"2021-05-19T12:38:42+00:00","article_modified_time":"2021-05-19T13:42:28+00:00","og_image":[{"width":1600,"height":880,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png","type":"image\/png"}],"author":"Max Lynch","twitter_card":"summary_large_image","twitter_creator":"@maxlynch","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Max Lynch","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0"},"author":{"name":"Max Lynch","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/91f360cffbd804a464b0c4a87b5c5f1e"},"headline":"Announcing Capacitor 3.0","datePublished":"2021-05-19T12:38:42+00:00","dateModified":"2021-05-19T13:42:28+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0"},"wordCount":1778,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png","keywords":["Android","Capacitor","iOS","PWA"],"articleSection":["Announcements"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0","url":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0","name":"Announcing Capacitor 3.0 - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png","datePublished":"2021-05-19T12:38:42+00:00","dateModified":"2021-05-19T13:42:28+00:00","description":"Capacitor 3.0 includes improved performance, enhanced developer experience, and greater community involvement.","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/announcing-capacitor-3-0"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png","width":1600,"height":880,"caption":"Capacitor 3 Image"},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/announcing-capacitor-3-0#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Announcing Capacitor 3.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\/91f360cffbd804a464b0c4a87b5c5f1e","name":"Max Lynch","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/05\/max-avatar-150x150.jpg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/05\/max-avatar-150x150.jpg","caption":"Max Lynch"},"description":"CEO","sameAs":["http:\/\/twitter.com\/maxlynch","https:\/\/x.com\/maxlynch"],"url":"https:\/\/ionic.io\/blog\/author\/max"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/05\/capacitor-3-feature-image.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/3667","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\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=3667"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/3667\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/3674"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=3667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=3667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=3667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}