{"id":6554,"date":"2025-10-09T10:00:00","date_gmt":"2025-10-09T14:00:00","guid":{"rendered":"https:\/\/ionic.io\/blog\/?p=6554"},"modified":"2025-10-10T11:03:14","modified_gmt":"2025-10-10T15:03:14","slug":"swift-package-manager-and-capacitor","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor","title":{"rendered":"Swift Package Manager and Capacitor"},"content":{"rendered":"\n<p>As an iOS developer, I\u2019ve always found Dependency management for iOS to be a&nbsp;chore. For the first four years of the iPhone platform, we didn\u2019t have any options at all. That changed in September of 2011 with the creation and release of Cocoapods by Elon Dur\u00e1n. Written in Ruby, Cocoapods made it possible to properly manage your dependencies with a Podfile and a <code>pod install<\/code> typed at the command line. At the time I\u2019m writing this, Cocoapods has more than 962 thousand commits with over 105 thousand libraries available. <\/p>\n\n\n\n<p>However, the release by Apple of Swift Package Manager (SPM) in 2015 marked the beginning of the end for our long-time package manager. And in August of 2024, after 13 years of being the top package manager, Cocoapods announced that they were entering maintenance mode. By November of 2024, they had announced that the Cocoapods Specs repository would become read-only on December 2, 2026.<\/p>\n\n\n\n<p>What does that mean for you, as a Capacitor developer?&nbsp;<\/p>\n\n\n\n<p>The good news is that starting with Capacitor 8, SPM is going to be a first-class citizen alongside Cocoapods. We plan to update our libraries on Cocoapods right up until December 2, 2026 when we will no longer be allowed to update them.&nbsp;<\/p>\n\n\n\n<p>However, you cannot mix SPM and Cocoapods in one project. While all of the Ionic-maintained Capacitor plugins are supported for projects using SPM, 3rd party plugins will need to be updated before they can be used in an SPM Capacitor project. Cordova plugin support may be limited or may require some work to get everything working. We\u2019re working our hardest to make this a seamless transition, so reach out by <a href=\"https:\/\/github.com\/ionic-team\/capacitor\/issues\">creating an issue<\/a> if you run into any problems.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-application-development-with-swift-package-manager\">Application Development with Swift Package Manager<\/h2>\n\n\n\n<p>New projects provide the simplest way to get started. In fact, Capacitor 8, due to be released this fall, will default new projects to SPM dependency management. As soon as you run:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">npx cap add ios<\/code><\/pre>\n\n\n\n<p>you\u2019ll be ready to go. From there everything should work as you expect. The only real check you\u2019ll need to make is to see if a plugin you want to use supports SPM instead of Cocoapods. If you want to continue using Cocoapods for the time being, override this by running:&nbsp;  <\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">npx cap add ios --packagemanager Cocoapods<\/code><\/pre>\n\n\n\n<p>when you add iOS to your Capacitor project.<\/p>\n\n\n\n<p>If you have an existing project, there are a few more steps to migrate to SPM. We have a straightforward guide in our docs, <a href=\"https:\/\/capacitorjs.com\/docs\/ios\/spm#using-spm-in-an-existing-capacitor-project\">Using SPM in an Existing Capacitor Project<\/a>. The Capacitor CLI has a tool to assist you, npx cap spm-migration-assistant, along with some quick manual steps.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-getting-your-plugins-ready-for-swift-package-manager\">Getting your plugins ready for Swift Package Manager<\/h2>\n\n\n\n<p>If you develop Capacitor plugins, we created the <a href=\"https:\/\/github.com\/ionic-team\/capacitor-plugin-converter\">capacitor-plugin-converter<\/a> project to streamline this process. While this project is still under development it will eventually fully automate&nbsp;the conversion process.<\/p>\n\n\n\n<p>Currently, if your plugin only uses Swift aside from the required <code>Plugin.m<\/code> \/ <code>Plugin.h<\/code> files, our converter can be used&nbsp; to make the SPM conversion process easier. (This also works if you use <code>[PluginName]Plugin.m<\/code> and <code>[PluginName]Plugin.h<\/code> files)<\/p>\n\n\n\n<p>Using the <a href=\"https:\/\/github.com\/swiftlang\/swift-syntax\">swift-syntax<\/a> library, capacitor-plugin-converter will change your Plugin.swift file to match what the old <code>CAP_PLUGIN<\/code> macros did. It will add the conformances, generate, move, and delete files to bring your plugin to SPM. A detailed description and instructions can be found in the&nbsp;<a href=\"https:\/\/capacitorjs.com\/docs\/ios\/spm#converting-existing-plugins-to-spm\">Capacitor documentation<\/a>.<\/p>\n\n\n\n<p>However, If your plugin mixes Objective-C and Swift the automated tools will not work so manual conversion will be required. This is a limitation of Swift Package Manager as it does not allow mixing of Objective-C and Swift in the same target. One option is to rewrite all your Objective-C as Swift, which could take a while. Another option would be to manually split your work into two libraries. Detailed advice on how to do this will be coming to the blog and documentation soon, so stay tuned.&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-closing\">Closing<\/h2>\n\n\n\n<p>Capacitor 8 is well on its way, and we\u2019re working hard to make sure that the end of Cocoapods causes as little disruption as possible. Hopefully, as SPM gains traction in the Capacitor community we can use its functionality to offer cool new features.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As an iOS developer, I\u2019ve always found Dependency management for iOS to be a&nbsp;chore. For the first four years of the iPhone platform, we didn\u2019t have any options at all. That changed in September of 2011 with the creation and release of Cocoapods by Elon Dur\u00e1n. Written in Ruby, Cocoapods made it possible to properly [&hellip;]<\/p>\n","protected":false},"author":112,"featured_media":6185,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"","publish_post_category":"","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"","discourse_permalink":"","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1,120,121],"tags":[151,100,297,296],"class_list":["post-6554","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all","category-announcements","category-engineering","tag-capacitor","tag-ios","tag-spm","tag-swift-package-manager"],"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>Swift Package Manager and Capacitor - 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\/swift-package-manager-and-capacitor\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Swift Package Manager and Capacitor\" \/>\n<meta property=\"og:description\" content=\"As an iOS developer, I\u2019ve always found Dependency management for iOS to be a&nbsp;chore. For the first four years of the iPhone platform, we didn\u2019t have any options at all. That changed in September of 2011 with the creation and release of Cocoapods by Elon Dur\u00e1n. Written in Ruby, Cocoapods made it possible to properly [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-09T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-10T15:03:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image-1024x512.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mark Anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mark Anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor\"},\"author\":{\"name\":\"Mark Anderson\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/aa0f672c4e535ef1b52d494fce56270b\"},\"headline\":\"Swift Package Manager and Capacitor\",\"datePublished\":\"2025-10-09T14:00:00+00:00\",\"dateModified\":\"2025-10-10T15:03:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor\"},\"wordCount\":687,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image.png\",\"keywords\":[\"Capacitor\",\"iOS\",\"SPM\",\"Swift Package Manager\"],\"articleSection\":[\"All\",\"Announcements\",\"Engineering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor\",\"url\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor\",\"name\":\"Swift Package Manager and Capacitor - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image.png\",\"datePublished\":\"2025-10-09T14:00:00+00:00\",\"dateModified\":\"2025-10-10T15:03:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image.png\",\"width\":2240,\"height\":1120},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Swift Package Manager and Capacitor\"}]},{\"@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\/aa0f672c4e535ef1b52d494fce56270b\",\"name\":\"Mark Anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bf82b0f0fb960e8231e94fab687dbe167b1f074e9ddf23080ef7556821f77ed9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bf82b0f0fb960e8231e94fab687dbe167b1f074e9ddf23080ef7556821f77ed9?s=96&d=mm&r=g\",\"caption\":\"Mark Anderson\"},\"jobTitle\":\"Senior Software Engineer\",\"worksFor\":\"OutSystems\",\"url\":\"https:\/\/ionic.io\/blog\/author\/mark-anderson\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Swift Package Manager and Capacitor - 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\/swift-package-manager-and-capacitor","og_locale":"en_US","og_type":"article","og_title":"Swift Package Manager and Capacitor","og_description":"As an iOS developer, I\u2019ve always found Dependency management for iOS to be a&nbsp;chore. For the first four years of the iPhone platform, we didn\u2019t have any options at all. That changed in September of 2011 with the creation and release of Cocoapods by Elon Dur\u00e1n. Written in Ruby, Cocoapods made it possible to properly [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor","og_site_name":"Ionic Blog","article_published_time":"2025-10-09T14:00:00+00:00","article_modified_time":"2025-10-10T15:03:14+00:00","og_image":[{"width":1024,"height":512,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image-1024x512.png","type":"image\/png"}],"author":"Mark Anderson","twitter_card":"summary_large_image","twitter_creator":"@ionicframework","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Mark Anderson","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor"},"author":{"name":"Mark Anderson","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/aa0f672c4e535ef1b52d494fce56270b"},"headline":"Swift Package Manager and Capacitor","datePublished":"2025-10-09T14:00:00+00:00","dateModified":"2025-10-10T15:03:14+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor"},"wordCount":687,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image.png","keywords":["Capacitor","iOS","SPM","Swift Package Manager"],"articleSection":["All","Announcements","Engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor","url":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor","name":"Swift Package Manager and Capacitor - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image.png","datePublished":"2025-10-09T14:00:00+00:00","dateModified":"2025-10-10T15:03:14+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image.png","width":2240,"height":1120},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/swift-package-manager-and-capacitor#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Swift Package Manager and Capacitor"}]},{"@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\/aa0f672c4e535ef1b52d494fce56270b","name":"Mark Anderson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/bf82b0f0fb960e8231e94fab687dbe167b1f074e9ddf23080ef7556821f77ed9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bf82b0f0fb960e8231e94fab687dbe167b1f074e9ddf23080ef7556821f77ed9?s=96&d=mm&r=g","caption":"Mark Anderson"},"jobTitle":"Senior Software Engineer","worksFor":"OutSystems","url":"https:\/\/ionic.io\/blog\/author\/mark-anderson"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2024\/06\/risk-feature-image.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/6554","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\/112"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=6554"}],"version-history":[{"count":5,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/6554\/revisions"}],"predecessor-version":[{"id":6561,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/6554\/revisions\/6561"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/6185"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=6554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=6554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=6554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}