{"id":3626,"date":"2021-03-23T15:42:52","date_gmt":"2021-03-23T15:42:52","guid":{"rendered":"https:\/\/ionicframework.com\/blog\/?p=3626"},"modified":"2021-03-23T15:48:38","modified_gmt":"2021-03-23T15:48:38","slug":"announcing-ionic-storage-v3","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3","title":{"rendered":"Announcing Ionic Storage v3"},"content":{"rendered":"<p>Photo by <a href=\"https:\/\/unsplash.com\/@switch_dtp_fotografie?utm_source=unsplash&#038;utm_medium=referral&#038;utm_content=creditCopyText\">Lucas van Oort<\/a> on <a href=\"\/?utm_source=unsplash&#038;utm_medium=referral&#038;utm_content=creditCopyText\">Unsplash<\/a><\/p>\n<p>Today I\u2019m thrilled to announce the release of Ionic Storage v3, an open-source library that offers an easy way to store simple data in Ionic apps. Ionic Storage is useful for building single code-base apps on iOS, Android, and the Web, while automatically using the best storage engine available on the platform the app is running on.<\/p>\n<p>Introduced several years ago, Ionic Storage was originally built with only Angular support in mind. However, given its popularity with the Ionic community, we knew it was time for an update and to bring it to the rest of the Ionic ecosystem.<\/p>\n<p>Read on to learn what\u2019s new in v3 and how to migrate if you\u2019re using Ionic Storage 2.x today.<\/p>\n<p><!--more--><\/p>\n<h2>What\u2019s New?<\/h2>\n<p>We\u2019re excited to open up Ionic Storage to more developers. To achieve this, v3 adds support for React, Vue, or any JavaScript project. The existing Angular implementation is still there, of course. See usage instructions below.<\/p>\n<p>Older versions of Ionic Storage had a driver called <code>localforage-cordovaSQLiteDriver<\/code> hardcoded into the library. While this made it easier to use SQLite when running on native mobile, it restricted options for other storage engines. This dependency has been removed, but you can still install it by following <a href=\"https:\/\/github.com\/ionic-team\/ionic-storage#sqlite-installation\">the SQLite instructions here<\/a>.<\/p>\n<p>The <code>ready()<\/code> function, originally built for a manual promises-based approach, has been removed. Since the async\/await pattern is now available, Ionic Storage v3 replaces <code>ready()<\/code> with a cleaner <code>create()<\/code> function which instantiates the database immediately. If you happen to call other Storage functions before the database has been created, an exception will be thrown. Each call to <code>create()<\/code> creates a separate instance of the underlying storage engine, though we recommend using a different name for multiple active database instances. More on this below.<\/p>\n<p>For teams looking for encryption support, we also added integration with Ionic&#8217;s <a href=\"https:\/\/ionic.io\/products\/secure-storage\">Secure Storage<\/a> premium solution. There\u2019s a new <code>setEncryptionKey<\/code> method available for security-sensitive use cases using Secure Storage.<\/p>\n<p>Finally, we closed over 30+ issues to improve the overall stability and health of the plugin.<\/p>\n<h2>Usage<\/h2>\n<p>Add data storage capabilities to your Ionic app with a few lines of code.<\/p>\n<p><strong>With React, Vue, or Vanilla JavaScript<\/strong><\/p>\n<pre><code class=\"language-javascript\">import { Storage } from &#039;@ionic\/storage&#039;;\nconst store = new Storage({\/* config *\/});\nawait store.create();\n<\/code><\/pre>\n<p><strong>With Angular<\/strong><\/p>\n<p>Usage in Angular using Services and Dependency Injection requires importing the <code>IonicStorageModule<\/code> and then injecting the <code>Storage<\/code> class.<\/p>\n<p>First, edit your NgModule declaration in <code>src\/app\/app.module.ts<\/code> or in the module for the page you&#8217;ll use the storage library in, and add <code>IonicStorageModule<\/code> as an import:<\/p>\n<pre><code class=\"language-javascript\">import { IonicStorageModule } from &#039;@ionic\/storage-angular&#039;;\n\n@NgModule({\n  declarations: [\n    ...\n  ],\n  imports: [\n    IonicModule.forRoot(MyApp),\n    IonicStorageModule.forRoot({\/* config *\/})\n  ],\n  bootstrap: [IonicApp],\n  entryComponents: [\n    ...\n  ],\n  providers: [\n    ...\n  ]\n})\n\nexport class AppModule { }\n<\/code><\/pre>\n<p>Next, inject <code>Storage<\/code> into a component:<\/p>\n<pre><code class=\"language-javascript\">import { Component } from &#039;@angular\/core&#039;;\nimport { Storage } from &#039;@ionic\/storage&#039;;\n\n@Component({\n  selector: &#039;page-home&#039;,\n  templateUrl: &#039;home.html&#039;\n})\n\nexport class HomePage {\n\n  constructor(private storage: Storage) {  }\n\n  async ngOnInit() {\n    \/\/ If using a custom driver:\n    \/\/ await this.storage.defineDriver(MyCustomDriver)\n    await this.storage.create();\n  }\n}\n<\/code><\/pre>\n<p>Once that is complete, begin using the Storage API to set, get, and remove values associated with a key. Some basic examples:<\/p>\n<pre><code class=\"language-javascript\">\/\/ Set an item\nawait storage.set(&#039;name&#039;, &#039;Mr. Ionitron&#039;);\n\n\/\/ Get an item back\nconst name = await storage.get(&#039;name&#039;);\n\n\/\/ Remove an item\nawait storage.remove(\u2018name\u2019);\n<\/code><\/pre>\n<p>To enable encryption when using the <a href=\"https:\/\/ionic.io\/docs\/secure-storage\">Ionic Secure Storage<\/a> driver:<\/p>\n<pre><code class=\"language-javascript\">storage.setEncryptionKey(&#039;mykey&#039;);\n<\/code><\/pre>\n<p>For complete info including code examples, configuration options, and more, see the <a href=\"https:\/\/github.com\/ionic-team\/ionic-storage\">Ionic Storage repository<\/a>.<\/p>\n<h2>Migrating to v3<\/h2>\n<p>Have an existing Angular app that uses Ionic Storage? There are just a few steps to migrate to the new version.<\/p>\n<p>Angular users should now use the <code>@ionic\/storage-angular<\/code> package:<\/p>\n<pre><code class=\"language-bash\"># Remove Ionic Storage v2\nnpm uninstall @ionic\/storage\n\n## Install v3\nnpm install @ionic\/storage-angular\n<\/code><\/pre>\n<p>If you\u2019d like to use SQLite as a storage engine, follow the <a href=\"https:\/\/github.com\/ionic-team\/ionic-storage#sqlite-installation\">new SQLite installation instructions<\/a> to install the previously used SQLite engine or Ionic Secure Storage for enterprise encrypted SQLite use cases.<\/p>\n<p>The <code>ready()<\/code> method has been removed. Instead, use the storage <code>create()<\/code> method:<\/p>\n<pre><code class=\"language-javascript\">export class HomePage {\n  constructor(private storage: Storage) { }\n\n  async ngOnInit() {\n    \/\/ v2 and below syntax\n    storage.ready().then(() =&gt; {\n       this.storage.set(&#039;name&#039;, &#039;Mr. Ionitron&#039;);\n    });\n\n    \/\/ v3 syntax\n    await this.storage.create();\n    await storage.set(&#039;name&#039;, &#039;Mr. Ionitron&#039;);\n  }\n}\n<\/code><\/pre>\n<p>If you have existing data stored in an app, you\u2019ll want to be sure to use the same database <strong>name<\/strong> as before. If you didn\u2019t provide an explicit name, no changes need to be made.<\/p>\n<p>If you previously named the database explicitly, then ensure the <code>name<\/code> remains the same:<\/p>\n<pre><code class=\"language-javascript\">\/\/ src\/app\/app.module.ts\nimports: [\n   IonicStorageModule.forRoot({\n     \/\/ Ensure name is the same here\n     name: &#039;__mydb&#039;,\n     driverOrder: [Drivers.IndexedDB, Drivers.LocalStorage]\n   })\n ],\n<\/code><\/pre>\n<p>Finally, instead of using explicit strings for <code>driverOrder<\/code>, a new <code>Drivers<\/code> enum should be used:<\/p>\n<pre><code class=\"language-javascript\">\/\/ src\/app\/app.module.ts\nimport { Drivers } from &#039;@ionic\/storage&#039;;\n\nimports: [\n   IonicStorageModule.forRoot({\n     driverOrder: [Drivers.IndexedDB, Drivers.LocalStorage]\n   })\n ],\n<\/code><\/pre>\n<p>The actual storage API is essentially unchanged, so your remaining app code should port over with minimal modifications.<\/p>\n<p>Also note: Web SQL is deprecated and should no longer be used. Make sure to remove any references to Web SQL in your <code>driverOrder<\/code> configuration.<\/p>\n<h2>What about the Capacitor Storage plugin?<\/h2>\n<p>Fans of <a href=\"https:\/\/capacitorjs.com\/\">Capacitor<\/a>, our open-source native runtime for building cross-platform web and mobile apps, might be wondering how the <a href=\"https:\/\/capacitorjs.com\/docs\/apis\/storage\">Capacitor Storage plugin<\/a> fits in. Yes, it\u2019s similar to Ionic Storage in that it provides a key\/value API for storing simple data objects. Its implementation is slightly different: on the web, it uses LocalStorage and on mobile, <code>UserDefaults<\/code> on iOS and <code>SharedPreferences<\/code> on Android.<\/p>\n<p>Here\u2019s how to decide which one to pick: For apps with very simple storage needs that want the most lightweight option, use Capacitor Storage. Examples of appropriate data here include user preferences or app settings. For medium-sized apps and above that require storage engine flexibility but don\u2019t require relational or high-performance query support for large datasets, Ionic Storage is a great option. Finally, for apps with large data sets, a relational data model, or encryption requirements, we recommend <a href=\"https:\/\/ionic.io\/products\/secure-storage\">Ionic Secure Storage<\/a>.<\/p>\n<h2>Building a security-sensitive app?<\/h2>\n<p>For teams building security-sensitive applications requiring encryption, v3 now supports encryption through <a href=\"https:\/\/ionic.io\/products\/secure-storage\">Ionic Secure Storage<\/a>, an enterprise-ready, high-performance data store with SQL or key\/value support and offering 256-bit AES encryption. When used in tandem with <a href=\"https:\/\/ionic.io\/products\/identity-vault\">Ionic Identity Vault<\/a>, developers can securely manage encryption keys and build fully offline-enabled apps with biometric authentication using the full security capabilities available on modern mobile devices and operating systems.<\/p>\n<p>Ionic Secure Storage is an enterprise product and requires an active enterprise subscription or trial. To learn more and request a demo, visit the <a href=\"https:\/\/ionic.io\/products\/secure-storage\">Secure Storage product page<\/a>.<\/p>\n<h2>Add data storage to your apps now<\/h2>\n<p>We\u2019re thrilled to roll out this new version of Ionic Storage and hope you enjoy using it in your Angular, React, and Vue apps. Happy app building!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Photo by Lucas van Oort on Unsplash Today I\u2019m thrilled to announce the release of Ionic Storage v3, an open-source library that offers an easy way to store simple data in Ionic apps. Ionic Storage is useful for building single code-base apps on iOS, Android, and the Web, while automatically using the best storage engine [&hellip;]<\/p>\n","protected":false},"author":62,"featured_media":3627,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"0","publish_post_category":"30","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"501212","discourse_permalink":"https:\/\/forum.ionicframework.com\/t\/announcing-ionic-storage-v3\/207045","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[120],"tags":[60,136,147],"class_list":["post-3626","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","tag-angular","tag-react","tag-vue"],"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 Ionic Storage v3 - Ionic Blog<\/title>\n<meta name=\"description\" content=\"Ionic Storage is an easy way to store simple data in Ionic apps. Now available for Angular, React, and Vue apps.\" \/>\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-ionic-storage-v3\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Announcing Ionic Storage v3\" \/>\n<meta property=\"og:description\" content=\"Ionic Storage is an easy way to store simple data in Ionic apps. Now available for Angular, React, and Vue apps.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-23T15:42:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-03-23T15:48:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1602\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matt Netkow\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dotNetkow\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matt Netkow\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3\"},\"author\":{\"name\":\"Matt Netkow\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/93c8b2fe110f183510c6285b0de40790\"},\"headline\":\"Announcing Ionic Storage v3\",\"datePublished\":\"2021-03-23T15:42:52+00:00\",\"dateModified\":\"2021-03-23T15:48:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3\"},\"wordCount\":928,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg\",\"keywords\":[\"Angular\",\"react\",\"Vue\"],\"articleSection\":[\"Announcements\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3\",\"url\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3\",\"name\":\"Announcing Ionic Storage v3 - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg\",\"datePublished\":\"2021-03-23T15:42:52+00:00\",\"dateModified\":\"2021-03-23T15:48:38+00:00\",\"description\":\"Ionic Storage is an easy way to store simple data in Ionic apps. Now available for Angular, React, and Vue apps.\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg\",\"width\":2400,\"height\":1602},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Announcing Ionic Storage v3\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/93c8b2fe110f183510c6285b0de40790\",\"name\":\"Matt Netkow\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/07\/mattnetkow-150x150.jpg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/07\/mattnetkow-150x150.jpg\",\"caption\":\"Matt Netkow\"},\"sameAs\":[\"https:\/\/x.com\/dotNetkow\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/mattnetkow\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Announcing Ionic Storage v3 - Ionic Blog","description":"Ionic Storage is an easy way to store simple data in Ionic apps. Now available for Angular, React, and Vue apps.","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-ionic-storage-v3","og_locale":"en_US","og_type":"article","og_title":"Announcing Ionic Storage v3","og_description":"Ionic Storage is an easy way to store simple data in Ionic apps. Now available for Angular, React, and Vue apps.","og_url":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3","og_site_name":"Ionic Blog","article_published_time":"2021-03-23T15:42:52+00:00","article_modified_time":"2021-03-23T15:48:38+00:00","og_image":[{"width":2400,"height":1602,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg","type":"image\/jpeg"}],"author":"Matt Netkow","twitter_card":"summary_large_image","twitter_creator":"@dotNetkow","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Matt Netkow","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3"},"author":{"name":"Matt Netkow","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/93c8b2fe110f183510c6285b0de40790"},"headline":"Announcing Ionic Storage v3","datePublished":"2021-03-23T15:42:52+00:00","dateModified":"2021-03-23T15:48:38+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3"},"wordCount":928,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg","keywords":["Angular","react","Vue"],"articleSection":["Announcements"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3","url":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3","name":"Announcing Ionic Storage v3 - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg","datePublished":"2021-03-23T15:42:52+00:00","dateModified":"2021-03-23T15:48:38+00:00","description":"Ionic Storage is an easy way to store simple data in Ionic apps. Now available for Angular, React, and Vue apps.","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg","width":2400,"height":1602},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/announcing-ionic-storage-v3#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Announcing Ionic Storage v3"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/93c8b2fe110f183510c6285b0de40790","name":"Matt Netkow","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/07\/mattnetkow-150x150.jpg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/07\/mattnetkow-150x150.jpg","caption":"Matt Netkow"},"sameAs":["https:\/\/x.com\/dotNetkow"],"url":"https:\/\/ionic.io\/blog\/author\/mattnetkow"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/03\/metal-storage-containers.jpg","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/3626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=3626"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/3626\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/3627"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=3626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=3626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=3626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}