{"id":4102,"date":"2022-03-30T16:39:13","date_gmt":"2022-03-30T16:39:13","guid":{"rendered":"https:\/\/ionicframework.com\/blog\/?p=4102"},"modified":"2022-03-30T16:39:13","modified_gmt":"2022-03-30T16:39:13","slug":"debugging-tips-for-your-ionic-app","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app","title":{"rendered":"Debugging Tips For Your Ionic App"},"content":{"rendered":"<blockquote><p>\n  This is a guest post from Simon Grimm, Ionic Insider and educator at <a href=\"https:\/\/ionicacademy.com\/\">the Ionic Academy<\/a>. Simon also created the <a href=\"https:\/\/builtwithionic.com\/\">Built with Ionic<\/a> book where he breaks down popular apps like Netflix and rebuilds them completely with Ionic styling and interactions!\n<\/p><\/blockquote>\n<p>Debugging Ionic apps is not always easy, as apps usually behave differently on the browser and when deployed as a native mobile app.<\/p>\n<p>This also means you need to be proficient in different debugging tools and understand when you need to apply which technique to confidently spot and fix every bug in your code.<\/p>\n<p>In this guide we will go through different ways to debug Ionic apps, inspect API calls inside your app and figure out how to access the underlying database and even explore the stored app files, which are some of the most challenging tasks when debugging your Ionic app.<\/p>\n<p>But before we do all of that, let&#8217;s start with the basics for debugging.<\/p>\n<p><!--more--><\/p>\n<h2>Browser Debugging Tools<\/h2>\n<p>Since our Ionic app is basically a website, most of our debugging is like debugging a standard website. I usually use Google Chrome, but Firefox or Safari and other major browsers offer mostly the same capabilities for debugging web applications these days.<\/p>\n<p>Within Chrome you can toggle the developer tools by pressing <kbd>CMD<\/kbd>+ <kbd>option<\/kbd> + <kbd>i<\/kbd> on a Mac (<kbd>Control<\/kbd>+<kbd>Shift<\/kbd>+<kbd>I<\/kbd> on Windows) to toggle the developer tools area, which is your essential view for all further actions.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"848\" height=\"1024\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview-848x1024.png\" alt=\"\" class=\"alignnone size-large wp-image-4111 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview-848x1024.png 848w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview-248x300.png 248w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview-768x928.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview.png 899w\" data-sizes=\"auto, (max-width: 848px) 100vw, 848px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 848px; --smush-placeholder-aspect-ratio: 848\/1024;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"848\" height=\"1024\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview-848x1024.png\" alt=\"\" class=\"alignnone size-large wp-image-4111\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview-848x1024.png 848w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview-248x300.png 248w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview-768x928.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ionic-browser-debugging-obverview.png 899w\" sizes=\"auto, (max-width: 848px) 100vw, 848px\" \/><\/noscript><\/p>\n<p>These options not only help to see your console message but do basically allow every debugging task from setting breakpoints to <a href=\"https:\/\/youtu.be\/vNGWpZlUOPM\">inspecting your memory consumption<\/a>. Yes, the web has come a long way!<\/p>\n<h3>Remote Debugging iOS Apps<\/h3>\n<p>Even if we deploy our app to a native device, it&#8217;s still a <strong>web application<\/strong> and as such we can continue to use the browser debugging tools!<\/p>\n<p>This process is known as <strong>remote debugging<\/strong> and we now even got access to all the real native device logs that happen inside our apps!<\/p>\n<p>It is called like that because we need to connect our browser debugging tools to a <strong>remote webview<\/strong>, so let&#8217;s do this for iOS first.<\/p>\n<p>Get started by deploying your Ionic app to either your connected device or a simulator, which you can do even with livereload when using Capacitor like this:<\/p>\n<pre><code class=\"language-bash\">ionic cap run ios --livereload --external\n<\/code><\/pre>\n<p>Now the fun begins when you open Safari because <strong>this is not working with Chrome for iOS<\/strong>.<\/p>\n<p>First, enable <strong>Show Develop menu in menu bar<\/strong> within the preferences of Safari.<\/p>\n<p>Next select from the top <strong>develop<\/strong> menu that you now have the device and the running <strong>webview<\/strong> inside the device!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"246\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging-1024x246.png\" alt=\"\" class=\"alignnone size-large wp-image-4110 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging-1024x246.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging-300x72.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging-768x184.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging.png 1130w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/246;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"246\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging-1024x246.png\" alt=\"\" class=\"alignnone size-large wp-image-4110\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging-1024x246.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging-300x72.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging-768x184.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-remote-debugging.png 1130w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/p>\n<p>Voil\u00e0 &#8211; a new window with all the known browser debugging tools comes up. Within this window you can now debug your running Ionic application just like you would do inside your normal browser preview.<\/p>\n<h3>Remote Debugging Android Apps<\/h3>\n<p>The process to connect with a running Android application is mostly the same, so again begin by deploying your app to a connected device:<\/p>\n<pre><code class=\"language-bash\">ionic cap run android --livereload --external\n<\/code><\/pre>\n<p>To inspect your app with remote debugging, open Chrome and now navigate to <a href=\"chrome:\/\/inspect\/**devices**\">chrome:\/\/inspect\/devices<\/a>, which will show you all connected devices.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"661\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-remote-debugging.png\" alt=\"\" class=\"alignnone size-full wp-image-4109 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-remote-debugging.png 855w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-remote-debugging-300x232.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-remote-debugging-768x594.png 768w\" data-sizes=\"auto, (max-width: 855px) 100vw, 855px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 855px; --smush-placeholder-aspect-ratio: 855\/661;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"661\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-remote-debugging.png\" alt=\"\" class=\"alignnone size-full wp-image-4109\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-remote-debugging.png 855w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-remote-debugging-300x232.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-remote-debugging-768x594.png 768w\" sizes=\"auto, (max-width: 855px) 100vw, 855px\" \/><\/noscript><\/p>\n<p>Click on <strong>inspect<\/strong> for the instance you want to debug and a new window with the familiar Chrome debugging tools comes up.<\/p>\n<p>I recommend hiding the app preview since it\u2019s not really adding any benefit to your debugging unless you want to select a DOM element, and it just feels clumsy and laggy.<\/p>\n<p>Anyway, at this point you are ready to debug an Ionic app on every platform using the browser debugging tools, so let&#8217;s take a look at some concrete examples that will improve your Ionic debugging skills.<\/p>\n<p>It&#8217;s also worth noting that if you prefer to use browsers like <a href=\"https:\/\/www.microsoft.com\/en-us\/edge\">Edge<\/a> or <a href=\"https:\/\/brave.com\">Brave<\/a>, the same technique applies here since these browsers are based on Chromium.<\/p>\n<h2>Debugging API Calls<\/h2>\n<p>If your app connects to any kind of API, you might (<em>or might not<\/em>) send and receive data. The trouble starts when you see a red error inside the log that indicates something with <strong>your<\/strong> API call went wrong.<\/p>\n<p>At that point you can dive into the <strong>Network<\/strong> tab of the debugging tools to inspect all the outgoing API calls from your application.<\/p>\n<p>On the left hand side you can see the names of the different endpoints that your app is calling, on the right you got more tabs to drill down into the <strong>header<\/strong> information, the <strong>preview<\/strong> of your outgoing call and the actual <strong>response<\/strong> from the server.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"899\" height=\"906\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls.png\" alt=\"\" class=\"alignnone size-full wp-image-4108 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls.png 899w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls-298x300.png 298w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls-150x150.png 150w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls-768x774.png 768w\" data-sizes=\"auto, (max-width: 899px) 100vw, 899px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 899px; --smush-placeholder-aspect-ratio: 899\/906;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"899\" height=\"906\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls.png\" alt=\"\" class=\"alignnone size-full wp-image-4108\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls.png 899w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls-298x300.png 298w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls-150x150.png 150w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-network-calls-768x774.png 768w\" sizes=\"auto, (max-width: 899px) 100vw, 899px\" \/><\/noscript><\/p>\n<p><strong>If any of the elements inside the list on the left side is red<\/strong>, you should inspect that call in detail.<\/p>\n<p>Why your API call fails is something you need to figure out now, based on the <strong>status code<\/strong> you get back, or a potential <strong>error message<\/strong> that you can find inside the response from the server (<em>if your app received a response!<\/em>).<\/p>\n<p>One of the most common issues you still see is a CORs error &#8211; but this is something that needs to be changed inside the server and can&#8217;t be easily fixed inside the Ionic app unless you add a proxy server to your API calls.<\/p>\n<p>Check out the <a href=\"https:\/\/ionicframework.com\/docs\/troubleshooting\/cors\">Ionic CORS troubleshooting guide<\/a> for help on this specific topic!<\/p>\n<h2>Debugging Ionic Storage<\/h2>\n<p>When you store data in either the simple browser localStorage or using Ionic Storage, you might want to inspect the stored data or even manually change it while developing and debugging your Ionic app.<\/p>\n<p>In order to find your data, you can dive into the <strong>Application<\/strong> tab of the debugging tools to bring up all possible storage locations.<\/p>\n<p>From the list you can now select the location that your app is using. If you are using <a href=\"https:\/\/github.com\/ionic-team\/ionic-storage\">Ionic Storage<\/a>, you can most likely find your data under <strong>IndexedDB<\/strong> and then the name of your database.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"848\" height=\"1024\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage-848x1024.png\" alt=\"\" class=\"alignnone size-large wp-image-4107 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage-848x1024.png 848w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage-248x300.png 248w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage-768x928.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage.png 899w\" data-sizes=\"auto, (max-width: 848px) 100vw, 848px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 848px; --smush-placeholder-aspect-ratio: 848\/1024;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"848\" height=\"1024\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage-848x1024.png\" alt=\"\" class=\"alignnone size-large wp-image-4107\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage-848x1024.png 848w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage-248x300.png 248w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage-768x928.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/browser-debug-storage.png 899w\" sizes=\"auto, (max-width: 848px) 100vw, 848px\" \/><\/noscript><\/p>\n<p>If you are using <a href=\"https:\/\/capacitorjs.com\/docs\/apis\/storage\">Capacitor Storage<\/a> instead the data will be inside <strong>localStorage<\/strong>.<\/p>\n<p>Not sure about the different storing mechanisms? Check out my video about <a href=\"https:\/\/www.youtube.com\/watch?v=a3ZluaLcv3Y\">differences between Ionic Storage, Capacitor Storage and SQLite<\/a>!<\/p>\n<h2>Debugging SQLite Database Files<\/h2>\n<p>While we can debug Ionic Storage or Capacitor storage easily on the browser, it becomes more challenging if our tools use the native implementation on a real device like the underlying <strong>SQLite database<\/strong>.<\/p>\n<p>Debugging the underlying SQLite database can be scary, as you need to <strong>extract the SQL database from your app<\/strong> to see its content.<\/p>\n<p>Nonetheless, this is possible and you should know how to do it in case something goes wrong with your data saving logic.<\/p>\n<h3>SQLite on iOS<\/h3>\n<p>We need to <strong>download<\/strong> our apps container on iOS first, for this we nee to open Xcode -> Window -> Devices &amp; Simulators to bring up a list of our connected devices.<\/p>\n<p>Under the <strong>devices<\/strong> tab you should see your device and the installed apps. From here, select the Ionic app, click the settings wheel at the bottom of the list and pick Download Container<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"503\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container-1024x503.png\" alt=\"\" class=\"alignnone size-large wp-image-4106 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container-1024x503.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container-300x147.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container-768x377.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container.png 1181w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/503;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"503\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container-1024x503.png\" alt=\"\" class=\"alignnone size-large wp-image-4106\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container-1024x503.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container-300x147.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container-768x377.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-download-app-container.png 1181w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/p>\n<p>Hold on, we are not yet finished!<\/p>\n<p>Find the container you just saved to your drive and right click it <strong>and<\/strong> pick <strong>Show Package Contents<\/strong> which will let you dive into the application data. From there you can find the database file like in the image below, or on a slightly different path if you used a specific location for the SQLite database inside your configuration.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"392\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location-1024x392.png\" alt=\"\" class=\"alignnone size-large wp-image-4105 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location-1024x392.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location-300x115.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location-768x294.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location.png 1075w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/392;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"392\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location-1024x392.png\" alt=\"\" class=\"alignnone size-large wp-image-4105\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location-1024x392.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location-300x115.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location-768x294.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-database-location.png 1075w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/p>\n<p>Now you can open the database file with a tool like the <a href=\"https:\/\/sqlitebrowser.org\/\">SQLite Browser<\/a> and inspect all the data which your Ionic application stored inside the database!<\/p>\n<h3>SQLite on Android<\/h3>\n<p>For Android you can do all of the work from the command line. Simply build and deploy your app like alway and once you want to get the database you can use the ADB shell to extract it from your app to your local filesystem like this:<\/p>\n<pre><code class=\"language-bash\">adb shell &#039;run-as io.ionic.starter sh -c &quot;cat ~\/databases\/mydb&quot;&#039; &gt; db-file.sqlite\n<\/code><\/pre>\n<p><strong>Note<\/strong>: The previous command might not work correctly on Windows, so use this one instead:<\/p>\n<pre><code class=\"language-bash\">run-as io.ionic.starter sh -c &quot;cat ~\/databases\/mydb&quot; &gt; \/sdcard\/db-file.sqlite\n<\/code><\/pre>\n<p>Just make sure that you are using the right <strong>bundle ID<\/strong> of your application and also the correct name that you used for your database in both cases!<\/p>\n<p>With the SQLite database file on your drive you can inspect it like you would do with any other database file.<\/p>\n<h2>Access Device Files<\/h2>\n<p>If you app is creating its own files, like writing some settings or keeping track of user generated content, you might need to see even more information and access the actual <strong>file system<\/strong>.<\/p>\n<p>Sounds scary, but good news everyone &#8211; it&#8217;s actually quite easy!<\/p>\n<p>For iOS you can follow the same process like before to <strong>extract the app container<\/strong> and simply navigate into the folder that you picked for storing your documents on the filesystem.<\/p>\n<p>As an example I used this code to create a folder and write two files using the <a href=\"https:\/\/capacitorjs.com\/docs\/apis\/filesystem\">Capacitor Filesystem plugin<\/a>:<\/p>\n<pre><code class=\"language-ts\">  async writeFiles() {\n    await Filesystem.mkdir({\n      path: &#039;secrets\/cool-folder&#039;,\n      directory: Directory.Documents,\n      recursive: true,\n    });\n\n    await Filesystem.writeFile({\n      path: &#039;secrets\/simonstext.txt&#039;,\n      data: &#039;This is a test message from Simon&#039;,\n      directory: Directory.Documents,\n    });\n\n    await Filesystem.writeFile({\n      path: &#039;secrets\/cool-folder\/another.txt&#039;,\n      data: &#039;This is a test message from Simon&#039;,\n      directory: Directory.Documents,\n    });\n  }\n<\/code><\/pre>\n<p>This is the resulting path of the app container with our created files:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"310\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files-1024x310.png\" alt=\"\" class=\"alignnone size-large wp-image-4104 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files-1024x310.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files-300x91.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files-768x232.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files.png 1286w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/310;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"310\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files-1024x310.png\" alt=\"\" class=\"alignnone size-large wp-image-4104\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files-1024x310.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files-300x91.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files-768x232.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/ios-app-files.png 1286w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/p>\n<p>For Android, the data is by default not written to the apps folder but a global documents folder that all apps can access (<em>unless you pick a different directory<\/em>).<\/p>\n<p>But that&#8217;s not a big deal because there&#8217;s actually a great tool called <strong>Device file explorer<\/strong> which lets you browse all the files of your connected device right from Android Studio!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"524\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer-1024x524.png\" alt=\"\" class=\"alignnone size-large wp-image-4103 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer-1024x524.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer-300x153.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer-768x393.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer.png 1371w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/524;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"524\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer-1024x524.png\" alt=\"\" class=\"alignnone size-large wp-image-4103\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer-1024x524.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer-300x153.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer-768x393.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/android-device-file-explorer.png 1371w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/p>\n<p>After bringing up the tool using the <strong>View<\/strong> menu you can scroll down until you find your documents folder, which should have your created data.<\/p>\n<h2>Teardown<\/h2>\n<p>These were some of the most challenging topics for debugging Ionic apps (<em>next to memory leaks<\/em>), and understanding how to find the right information or files is crucial to debug Ionic apps.<\/p>\n<p>Being able to use all available tools means you can be <strong>confident in your problem solving skills<\/strong>, which means you can be <strong>confident in developing Ionic apps<\/strong> in general!<\/p>\n<p>If you want to get even more support for your apps, check out <a href=\"https:\/\/ionicacademy.com\/\">the Ionic Academy<\/a> in which I helped thousands of Ionic developers to build amazing Ionic apps and support them through our private community.<\/p>\n<p>Now, would you like to see a second part about breakpoints and diving into native code from Xcode and Android Studio?<\/p>\n<p>Leave a comment on what you would like to see and we will make it happen!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is a guest post from Simon Grimm, Ionic Insider and educator at the Ionic Academy. Simon also created the Built with Ionic book where he breaks down popular apps like Netflix and rebuilds them completely with Ionic styling and interactions! Debugging Ionic apps is not always easy, as apps usually behave differently on the [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":4112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"0","publish_post_category":"23","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":[124],"tags":[248,249],"class_list":["post-4102","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-debugging","tag-ionic-storage"],"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>Debugging Tips For Your Ionic App - Ionic Blog<\/title>\n<meta name=\"description\" content=\"Curious how to diagnose issues in your Ionic app? Take a look at three different ways to debug your app to root cause of any issue.\" \/>\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\/debugging-tips-for-your-ionic-app\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Debugging Tips For Your Ionic App\" \/>\n<meta property=\"og:description\" content=\"Curious how to diagnose issues in your Ionic app? Take a look at three different ways to debug your app to root cause of any issue.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-30T16:39:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-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=\"Simon Grimm\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@schlimmson\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon Grimm\" \/>\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\/debugging-tips-for-your-ionic-app#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app\"},\"author\":{\"name\":\"Simon Grimm\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/24d44b251756bd6488dcb741eec0bef6\"},\"headline\":\"Debugging Tips For Your Ionic App\",\"datePublished\":\"2022-03-30T16:39:13+00:00\",\"dateModified\":\"2022-03-30T16:39:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app\"},\"wordCount\":1698,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png\",\"keywords\":[\"Debugging\",\"Ionic Storage\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app\",\"url\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app\",\"name\":\"Debugging Tips For Your Ionic App - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png\",\"datePublished\":\"2022-03-30T16:39:13+00:00\",\"dateModified\":\"2022-03-30T16:39:13+00:00\",\"description\":\"Curious how to diagnose issues in your Ionic app? Take a look at three different ways to debug your app to root cause of any issue.\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png\",\"width\":1600,\"height\":880},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Debugging Tips For Your Ionic App\"}]},{\"@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\/24d44b251756bd6488dcb741eec0bef6\",\"name\":\"Simon Grimm\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/08\/simon-150x150.jpg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/08\/simon-150x150.jpg\",\"caption\":\"Simon Grimm\"},\"sameAs\":[\"https:\/\/x.com\/schlimmson\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/schlimmson\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Debugging Tips For Your Ionic App - Ionic Blog","description":"Curious how to diagnose issues in your Ionic app? Take a look at three different ways to debug your app to root cause of any issue.","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\/debugging-tips-for-your-ionic-app","og_locale":"en_US","og_type":"article","og_title":"Debugging Tips For Your Ionic App","og_description":"Curious how to diagnose issues in your Ionic app? Take a look at three different ways to debug your app to root cause of any issue.","og_url":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app","og_site_name":"Ionic Blog","article_published_time":"2022-03-30T16:39:13+00:00","og_image":[{"width":1600,"height":880,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png","type":"image\/png"}],"author":"Simon Grimm","twitter_card":"summary_large_image","twitter_creator":"@schlimmson","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Simon Grimm","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app"},"author":{"name":"Simon Grimm","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/24d44b251756bd6488dcb741eec0bef6"},"headline":"Debugging Tips For Your Ionic App","datePublished":"2022-03-30T16:39:13+00:00","dateModified":"2022-03-30T16:39:13+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app"},"wordCount":1698,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png","keywords":["Debugging","Ionic Storage"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app","url":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app","name":"Debugging Tips For Your Ionic App - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png","datePublished":"2022-03-30T16:39:13+00:00","dateModified":"2022-03-30T16:39:13+00:00","description":"Curious how to diagnose issues in your Ionic app? Take a look at three different ways to debug your app to root cause of any issue.","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png","width":1600,"height":880},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/debugging-tips-for-your-ionic-app#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Debugging Tips For Your Ionic App"}]},{"@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\/24d44b251756bd6488dcb741eec0bef6","name":"Simon Grimm","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/08\/simon-150x150.jpg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/08\/simon-150x150.jpg","caption":"Simon Grimm"},"sameAs":["https:\/\/x.com\/schlimmson"],"url":"https:\/\/ionic.io\/blog\/author\/schlimmson"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/03\/debug-feature-image.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4102","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\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=4102"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4102\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/4112"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=4102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=4102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=4102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}