---
description: Ionic Secure Storage reaches end of life on December 31, 2027. Discover Capacitor alternatives like the Secure Preferences, SQLite, and Vault plugins.
title: Alternative to the Ionic Secure Storage Plugin - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/alternative-to-ionic-secure-storage-plugin.png
---

<!doctype html> 

[Skip to content ](#alternative-to-the-ionic-secure-storage-plugin) 

[🖥️ Introducing the **Capacitor Electron Platform** — build desktop apps for macOS, Windows, and Linux. Free & open source. ](/blog/announcing-the-capacitor-electron-platform/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Intercom ](/docs/sdks/capacitor/intercom/)
* [ Intune ](/docs/sdks/capacitor/intune/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Tauri ](/docs/sdks/capacitor/tauri/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ YouTube Player ](/docs/sdks/capacitor/youtube-player/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ SQLite ](#sqlite)
* [ Can I keep using Ionic Secure Storage? ](#can-i-keep-using-ionic-secure-storage)
* [ FAQ ](#faq)
* [ Need Help Migrating? ](#need-help-migrating)
* [ Conclusion ](#conclusion)

* Related links

# Alternative to the Ionic Secure Storage Plugin[¶](#alternative-to-the-ionic-secure-storage-plugin "Permanent link")

Looking for an Ionic Secure Storage alternative for your Capacitor app? Ionic [announced the discontinuation of its commercial products](https://ionic.io/blog/important-announcement-the-future-of-ionics-commercial-products) on February 11, 2025, and Secure Storage reaches its end of life on December 31, 2027\. Depending on your use case, the [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/) (key-value data), the [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/) (encrypted SQL databases via SQLCipher), and the [Capacitor Vault plugin](/docs/sdks/capacitor/vault/) (biometric-protected secrets) provide modern, actively maintained replacements that close the gap left by Ionic Secure Storage.

[ ![Build and deploy your Capacitor app with Capawesome Cloud](https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1) ](https://capawesome.io/) 

## Key Takeaways[¶](#key-takeaways "Permanent link")

* Ionic announced the discontinuation of its commercial products on February 11, 2025\. Ionic Secure Storage sunsets on December 31, 2027.
* For key-value data, migrate to the [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/), which uses the Android Keystore and iOS Keychain.
* For encrypted databases, migrate to the [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/), which offers the same 256-bit AES encryption via SQLCipher.
* For biometric-protected secrets, use the [Capacitor Vault plugin](/docs/sdks/capacitor/vault/), which stores key-value pairs in lockable vaults.
* All three plugins are actively maintained and stay current with the latest Capacitor versions.
* The Capawesome team offers a dedicated migration service if you'd rather not handle it yourself.

## Why migrate from Ionic Secure Storage?[¶](#why-migrate-from-ionic-secure-storage "Permanent link")

Ionic Secure Storage has been a go-to solution for developers requiring encrypted local storage in their Capacitor applications. However, following Ionic's acquisition by OutSystems, Ionic [announced on February 11, 2025](https://ionic.io/blog/important-announcement-the-future-of-ionics-commercial-products) that it would discontinue its commercial products: new sales stopped immediately, and maintenance is winding down over multiple years. For Secure Storage, the sunset takes effect on December 31, 2027 — after that end-of-life date, the plugin receives no further updates. Since the plugin offered both key-value storage and SQLite database functionality with 256-bit AES encryption, teams handling sensitive data need a replacement.

The Capawesome plugins cover every Ionic Secure Storage use case:

* **Key-value data**: The [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/) stores key-value pairs using the Android Keystore and iOS Keychain — matching the security model developers relied on with Ionic Secure Storage.
* **Encrypted SQL databases**: The [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/) encrypts databases with 256-bit AES via SQLCipher, a like-for-like replacement for Secure Storage's headline feature.
* **Biometric-protected secrets**: The [Capacitor Vault plugin](/docs/sdks/capacitor/vault/) stores secrets in lockable vaults that can require biometric authentication to unlock — the use case previously covered by pairing Secure Storage with Ionic Identity Vault.

AI-Assisted Migration

For a more guided experience, add the [Capawesome skills](https://github.com/capawesome-team/skills) to your project with `npx skills add capawesome-team/skills --skill ionic-enterprise-sdk-migration` and use the following prompt with your preferred AI coding assistant:

`` [](#%5F%5Fcodelineno-0-1)Use the `ionic-enterprise-sdk-migration` skill from `capawesome-team/skills` to help me migrate from Ionic Secure Storage to Capawesome alternatives.
 ``

## Migration from Ionic Secure Storage[¶](#migration-from-ionic-secure-storage "Permanent link")

Migrating from Ionic Secure Storage requires choosing the appropriate replacement based on your storage needs: key-value storage or SQLite database functionality. If you also need to protect individual secrets behind biometric authentication, take a look at the [Capacitor Vault plugin](/docs/sdks/capacitor/vault/).

### Key-Value Store[¶](#key-value-store "Permanent link")

For applications using Ionic Secure Storage's key-value functionality, migrate to the [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/). If you'd rather keep key-value data in an encrypted SQLite database, the [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/) also ships a built-in key-value store — see [Key-Value Storage Made Simple with the SQLite Plugin](/blog/key-value-storage-made-simple-with-the-sqlite-plugin/).

#### Installation[¶](#installation "Permanent link")

Begin by removing the existing Ionic Secure Storage dependency and installing the Capawesome alternative, if you haven't already. To install the [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/), please refer to the [Installation](/docs/sdks/capacitor/secure-preferences/#installation) section in the plugin documentation.

#### Create a store[¶](#create-a-store "Permanent link")

Unlike Ionic Secure Storage, the Capacitor Secure Preferences plugin doesn't require explicit store creation. The secure storage is automatically available after installation. Values are encrypted using the Android Keystore and stored in the iOS Keychain, so the plugin handles key management for you.

**Ionic Secure Storage:**

`[](#%5F%5Fcodelineno-1-1)import { KeyValueStorage } from '@ionic-enterprise/secure-storage';
[](#%5F%5Fcodelineno-1-2)
[](#%5F%5Fcodelineno-1-3)const createStore = async () => {
[](#%5F%5Fcodelineno-1-4)  await KeyValueStorage.create('my-secret-key');
[](#%5F%5Fcodelineno-1-5)};
`

**Capacitor Secure Preferences:**

`[](#%5F%5Fcodelineno-2-1)import { SecurePreferences } from '@capawesome-team/capacitor-secure-preferences';
[](#%5F%5Fcodelineno-2-2)
[](#%5F%5Fcodelineno-2-3)// No store creation needed - ready to use immediately
`

#### Set a value[¶](#set-a-value "Permanent link")

**Ionic Secure Storage:**

`[](#%5F%5Fcodelineno-3-1)import { KeyValueStorage } from '@ionic-enterprise/secure-storage';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const setValue = async () => {
[](#%5F%5Fcodelineno-3-4)  await KeyValueStorage.set('username', 'john_doe');
[](#%5F%5Fcodelineno-3-5)};
`

**Capacitor Secure Preferences:**

`[](#%5F%5Fcodelineno-4-1)import { SecurePreferences } from '@capawesome-team/capacitor-secure-preferences';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const setValue = async () => {
[](#%5F%5Fcodelineno-4-4)  await SecurePreferences.set({
[](#%5F%5Fcodelineno-4-5)    key: 'username',
[](#%5F%5Fcodelineno-4-6)    value: 'john_doe'
[](#%5F%5Fcodelineno-4-7)  });
[](#%5F%5Fcodelineno-4-8)};
`

#### Get a value[¶](#get-a-value "Permanent link")

**Ionic Secure Storage:**

`[](#%5F%5Fcodelineno-5-1)import { KeyValueStorage } from '@ionic-enterprise/secure-storage';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const getValue = async () => {
[](#%5F%5Fcodelineno-5-4)  const value = await KeyValueStorage.get('username');
[](#%5F%5Fcodelineno-5-5)  return value;
[](#%5F%5Fcodelineno-5-6)};
`

**Capacitor Secure Preferences:**

`[](#%5F%5Fcodelineno-6-1)import { SecurePreferences } from '@capawesome-team/capacitor-secure-preferences';
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const getValue = async () => {
[](#%5F%5Fcodelineno-6-4)  const { value } = await SecurePreferences.get({ key: 'username' });
[](#%5F%5Fcodelineno-6-5)  return value;
[](#%5F%5Fcodelineno-6-6)};
`

#### Remove a value[¶](#remove-a-value "Permanent link")

**Ionic Secure Storage:**

`[](#%5F%5Fcodelineno-7-1)import { KeyValueStorage } from '@ionic-enterprise/secure-storage';
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const removeValue = async () => {
[](#%5F%5Fcodelineno-7-4)  await KeyValueStorage.remove('username');
[](#%5F%5Fcodelineno-7-5)};
`

**Capacitor Secure Preferences:**

`[](#%5F%5Fcodelineno-8-1)import { SecurePreferences } from '@capawesome-team/capacitor-secure-preferences';
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)const removeValue = async () => {
[](#%5F%5Fcodelineno-8-4)  await SecurePreferences.remove({ key: 'username' });
[](#%5F%5Fcodelineno-8-5)};
`

#### Clear the store[¶](#clear-the-store "Permanent link")

**Ionic Secure Storage:**

`[](#%5F%5Fcodelineno-9-1)import { KeyValueStorage } from '@ionic-enterprise/secure-storage';
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const clearStore = async () => {
[](#%5F%5Fcodelineno-9-4)  await KeyValueStorage.clear();
[](#%5F%5Fcodelineno-9-5)};
`

**Capacitor Secure Preferences:**

`[](#%5F%5Fcodelineno-10-1)import { SecurePreferences } from '@capawesome-team/capacitor-secure-preferences';
[](#%5F%5Fcodelineno-10-2)
[](#%5F%5Fcodelineno-10-3)const clearStore = async () => {
[](#%5F%5Fcodelineno-10-4)  await SecurePreferences.clear();
[](#%5F%5Fcodelineno-10-5)};
`

### SQLite[¶](#sqlite "Permanent link")

For applications using Ionic Secure Storage's SQLite functionality, migrate to the [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/).

#### Installation[¶](#installation%5F1 "Permanent link")

Begin by removing the existing Ionic Secure Storage dependency and installing the Capawesome alternative, if you haven't already. To install the [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/), please refer to the [Installation](/docs/sdks/capacitor/sqlite/#installation) section in the plugin documentation.

#### Opening a database[¶](#opening-a-database "Permanent link")

Database initialization differs between the two solutions. Here's how to adapt your database setup:

**Ionic Secure Storage:**

`[](#%5F%5Fcodelineno-11-1)import { SQLite } from '@ionic-enterprise/secure-storage';
[](#%5F%5Fcodelineno-11-2)
[](#%5F%5Fcodelineno-11-3)const openDatabase = async () => {
[](#%5F%5Fcodelineno-11-4)  const db = await SQLite.create({
[](#%5F%5Fcodelineno-11-5)    name: 'database.db',
[](#%5F%5Fcodelineno-11-6)    location: 'default',
[](#%5F%5Fcodelineno-11-7)  });
[](#%5F%5Fcodelineno-11-8)  await db.executeSql('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)', []);
[](#%5F%5Fcodelineno-11-9)  return db;
[](#%5F%5Fcodelineno-11-10)};
`

The Capacitor SQLite plugin encrypts databases with 256-bit AES via SQLCipher. Pass an `encryptionKey` to `open(...)` to keep the same encryption guarantee Ionic Secure Storage provided:

`[](#%5F%5Fcodelineno-12-1)import { Sqlite } from '@capawesome-team/capacitor-sqlite';
[](#%5F%5Fcodelineno-12-2)
[](#%5F%5Fcodelineno-12-3)const openDatabase = async () => {
[](#%5F%5Fcodelineno-12-4)  const { databaseId } = await Sqlite.open({
[](#%5F%5Fcodelineno-12-5)    path: 'database.db',
[](#%5F%5Fcodelineno-12-6)    encryptionKey: 'your-secret-key',
[](#%5F%5Fcodelineno-12-7)    upgradeStatements: [
[](#%5F%5Fcodelineno-12-8)      {
[](#%5F%5Fcodelineno-12-9)        version: 1,
[](#%5F%5Fcodelineno-12-10)        statements: [
[](#%5F%5Fcodelineno-12-11)          'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)'
[](#%5F%5Fcodelineno-12-12)        ]
[](#%5F%5Fcodelineno-12-13)      }
[](#%5F%5Fcodelineno-12-14)    ]
[](#%5F%5Fcodelineno-12-15)  });
[](#%5F%5Fcodelineno-12-16)  return databaseId;
[](#%5F%5Fcodelineno-12-17)};
`

Enabling encryption

Encryption requires bundling SQLCipher in your native projects. See the [Encryption](/docs/sdks/capacitor/sqlite/#encryption) section in the plugin documentation for the platform setup, or follow the step-by-step guide in [Encrypting SQLite databases in Capacitor](/blog/encrypting-capacitor-sqlite-database/). Don't hard-code the key — store it with the [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/).

#### Executing SQL statements[¶](#executing-sql-statements "Permanent link")

SQL execution patterns are streamlined in the Capacitor SQLite plugin:

**Ionic Secure Storage:**

`[](#%5F%5Fcodelineno-13-1)import { SQLiteObject } from '@ionic-enterprise/secure-storage';
[](#%5F%5Fcodelineno-13-2)
[](#%5F%5Fcodelineno-13-3)const insertUser = async (db: SQLiteObject, name: string, email: string) => {
[](#%5F%5Fcodelineno-13-4)  await db.executeSql(
[](#%5F%5Fcodelineno-13-5)    'INSERT INTO users (name, email) VALUES (?, ?)',
[](#%5F%5Fcodelineno-13-6)    [name, email]
[](#%5F%5Fcodelineno-13-7)  );
[](#%5F%5Fcodelineno-13-8)};
`

**Capacitor SQLite:**

`[](#%5F%5Fcodelineno-14-1)import { Sqlite } from '@capawesome-team/capacitor-sqlite';
[](#%5F%5Fcodelineno-14-2)
[](#%5F%5Fcodelineno-14-3)const insertUser = async (databaseId: string, name: string, email: string) => {
[](#%5F%5Fcodelineno-14-4)  await Sqlite.execute({
[](#%5F%5Fcodelineno-14-5)    databaseId,
[](#%5F%5Fcodelineno-14-6)    statement: 'INSERT INTO users (name, email) VALUES (?, ?)',
[](#%5F%5Fcodelineno-14-7)    values: [name, email]
[](#%5F%5Fcodelineno-14-8)  });
[](#%5F%5Fcodelineno-14-9)};
`

#### Querying data[¶](#querying-data "Permanent link")

Data retrieval follows similar simplification patterns:

**Ionic Secure Storage:**

`[](#%5F%5Fcodelineno-15-1)import { SQLiteObject } from '@ionic-enterprise/secure-storage';
[](#%5F%5Fcodelineno-15-2)
[](#%5F%5Fcodelineno-15-3)const getUsers = async (db: SQLiteObject) => {
[](#%5F%5Fcodelineno-15-4)  return new Promise((resolve) => {
[](#%5F%5Fcodelineno-15-5)    db.transaction(tx => {
[](#%5F%5Fcodelineno-15-6)      tx.executeSql('SELECT * FROM users WHERE name LIKE ?', ['%John%'], (tx, result) => {
[](#%5F%5Fcodelineno-15-7)        resolve(result.rows);
[](#%5F%5Fcodelineno-15-8)      });
[](#%5F%5Fcodelineno-15-9)    });
[](#%5F%5Fcodelineno-15-10)  });
[](#%5F%5Fcodelineno-15-11)};
`

**Capacitor SQLite:**

`[](#%5F%5Fcodelineno-16-1)import { Sqlite } from '@capawesome-team/capacitor-sqlite';
[](#%5F%5Fcodelineno-16-2)
[](#%5F%5Fcodelineno-16-3)const getUsers = async (databaseId: string) => {
[](#%5F%5Fcodelineno-16-4)  const result = await Sqlite.query({
[](#%5F%5Fcodelineno-16-5)    databaseId,
[](#%5F%5Fcodelineno-16-6)    statement: 'SELECT * FROM users WHERE name LIKE ?',
[](#%5F%5Fcodelineno-16-7)    values: ['%John%']
[](#%5F%5Fcodelineno-16-8)  });
[](#%5F%5Fcodelineno-16-9)  return result.rows;
[](#%5F%5Fcodelineno-16-10)};
`

## Can I keep using Ionic Secure Storage?[¶](#can-i-keep-using-ionic-secure-storage "Permanent link")

For a while, yes. Ionic has offered active subscribers perpetual, self-support licenses in 2026, so existing apps won't stop working overnight. However, the code is effectively frozen: there are no new features, no compatibility updates for future Android, iOS, or Capacitor releases, and no patches. With the end of life set for December 31, 2027, it's worth planning your migration before an OS or Capacitor update introduces an incompatibility that can no longer be fixed.

## FAQ[¶](#faq "Permanent link")

### Which plugin should I migrate to — Secure Preferences, SQLite, or Vault?[¶](#which-plugin-should-i-migrate-to-secure-preferences-sqlite-or-vault "Permanent link")

It depends on what you were storing. If you only used Ionic Secure Storage's key-value API (tokens, small settings), the [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/) is the direct replacement. If you used its SQLite database functionality, migrate to the [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/) with an `encryptionKey` to keep the same SQLCipher-based encryption. If you also need to gate access behind biometric authentication rather than just encrypting at rest, add the [Capacitor Vault plugin](/docs/sdks/capacitor/vault/) on top of either.

### Are these three plugins free, or do they need a paid subscription?[¶](#are-these-three-plugins-free-or-do-they-need-a-paid-subscription "Permanent link")

All three — Secure Preferences, SQLite, and Vault — are part of [Capawesome Insiders](https://capawesome.io/insiders/), a paid subscription. There isn't a free-tier equivalent for encrypted storage in the Capawesome catalog; the Insiders subscription is what replaces Ionic Secure Storage's own enterprise licensing.

### Do I need to bundle SQLCipher myself for encrypted SQLite databases?[¶](#do-i-need-to-bundle-sqlcipher-myself-for-encrypted-sqlite-databases "Permanent link")

Yes, on native platforms. Encryption isn't automatic — it requires bundling SQLCipher in your Android and iOS projects, following the platform setup in the plugin's [Encryption](/docs/sdks/capacitor/sqlite/#encryption) documentation or the step-by-step [Encrypting SQLite databases in Capacitor](/blog/encrypting-capacitor-sqlite-database/) guide. Also don't hard-code the encryption key in your app's source — store it with the Secure Preferences plugin instead.

### Can I keep using Ionic Secure Storage until 2027?[¶](#can-i-keep-using-ionic-secure-storage-until-2027 "Permanent link")

For now, yes — existing apps keep working, and Ionic has offered active subscribers perpetual, self-support licenses. But the code is effectively frozen: no new features, no compatibility fixes for future Android, iOS, or Capacitor releases. It's safer to migrate before an OS update introduces an incompatibility that can no longer be patched than to wait for the December 31, 2027 end-of-life date.

### Is there a way to migrate stored data automatically, or do I need to re-encrypt everything by hand?[¶](#is-there-a-way-to-migrate-stored-data-automatically-or-do-i-need-to-re-encrypt-everything-by-hand "Permanent link")

There's no automatic converter between the two plugins' storage formats. For key-value data, the practical approach is reading each value out of Ionic Secure Storage and writing it into Secure Preferences at runtime (similar to the vault-to-vault migration pattern in [Alternative to the Ionic Identity Vault Plugin](/blog/alternative-to-ionic-identity-vault-plugin/)), while both dependencies are still installed. For SQLite databases, you're re-creating the schema with `upgradeStatements` and copying rows across, since the two plugins don't share a database file format.

## Need Help Migrating?[¶](#need-help-migrating "Permanent link")

If you'd rather not handle the migration yourself, the Capawesome team can take care of it for you. Whether you're dealing with a straightforward key-value store swap or a more complex SQLite setup, we offer dedicated migration services to get you up and running with minimal downtime and effort on your end.

[Book a Free Consultation](https://cal.com/team/capawesome/ionic-appflow-migration)

## Conclusion[¶](#conclusion "Permanent link")

The end of life of Ionic Secure Storage on December 31, 2027 doesn't have to disrupt your development workflow. The [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/) replaces the key-value store, the [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/) replaces the encrypted SQLite database with the same 256-bit AES encryption via SQLCipher, and the [Capacitor Vault plugin](/docs/sdks/capacitor/vault/) covers biometric-protected secrets.

By migrating to these Capawesome plugins, you gain access to actively maintained solutions that stay current with the latest Capacitor versions and platform updates, ensuring your applications remain secure and performant.

**Related reading:**

* [Alternatives to Ionic Enterprise Plugins](/blog/alternatives-to-ionic-enterprise-plugins/)
* [How to Securely Store Credentials with Capacitor](/blog/how-to-securely-store-credentials-with-capacitor/)

Have questions about your migration? Join the [Capawesome Discord server](https://discord.gg/VCXxSVjefW) to connect with the community, and subscribe to the [Capawesome newsletter](/newsletter/) to stay updated on the latest news about Capawesome, Capacitor, and the Ionic ecosystem.

If you need assistance with migrating from Ionic Secure Storage or implementing the [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/), [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/), or [Capacitor Vault plugin](/docs/sdks/capacitor/vault/), the Capawesome team is available to help you transition smoothly to these reliable alternatives. Just [contact us](mailto:support@capawesome.io) to get started.

July 17, 2026 

Back to top

```json
{
      "@context": "https://schema.org",
      "@type": "BlogPosting",
      "headline": "Alternative to the Ionic Secure Storage Plugin",
      "description": "Ionic Secure Storage reaches end of life on December 31, 2027. Discover Capacitor alternatives like the Secure Preferences, SQLite, and Vault plugins.",
      "image": "https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png",
      "datePublished": "2025-07-25T00:00:00+00:00",
      "dateModified": "2026-07-17T00:00:00+00:00",
      "author": [
        {
          "@type": "Person",
          "name": "Robin Genz",
          "url": "https://github.com/robingenz"
        }
      ],
      "publisher": {
        "@type": "Organization",
        "name": "Capawesome",
        "url": "https://capawesome.io",
        "logo": {
          "@type": "ImageObject",
          "url": "https://capawesome.io/assets/images/logo.svg"
        }
      },
      "articleSection": "Capacitor",
      "keywords": ["Capacitor", "Guides", "SDKs"],
      "isPartOf": {
        "@type": "Blog",
        "@id": "https://capawesome.io/blog/#blog"
      },
      "mainEntityOfPage": "https://capawesome.io/blog/alternative-to-ionic-secure-storage-plugin/",
      "url": "https://capawesome.io/blog/alternative-to-ionic-secure-storage-plugin/"
    }
{
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://capawesome.io/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://capawesome.io/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Alternative to the Ionic Secure Storage Plugin",
          "item": "https://capawesome.io/blog/alternative-to-ionic-secure-storage-plugin/"
        }
      ]
    }
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Why migrate from Ionic Secure Storage?", "acceptedAnswer": {"@type": "Answer", "text": "Ionic Secure Storage has been a go-to solution for developers requiring encrypted local storage in their Capacitor applications. However, following Ionic's acquisition by OutSystems, Ionic announced on February 11, 2025 that it would discontinue its commercial products: new sales stopped immediately, and maintenance is winding down over multiple years. For Secure Storage, the sunset takes effect on December 31, 2027 — after that end-of-life date, the plugin receives no further updates. Since the plugin offered both key-value storage and SQLite database functionality with 256-bit AES encryption, teams handling sensitive data need a replacement. The Capawesome plugins cover every Ionic Secure Storage use case: Key-value data: The Capacitor Secure Preferences plugin stores key-value pairs using the Android Keystore and iOS Keychain — matching the security model developers relied on with Ionic Secure Storage. Encrypted SQL databases: The Capacitor SQLite plugin encrypts databases with 256-bit AES via SQLCipher, a like-for-like replacement for Secure Storage's headline feature. Biometric-protected secrets: The Capacitor Vault plugin stores secrets in lockable vaults that can require biometric authentication to unlock — the use case previously covered by pairing Secure Storage with Ionic Identity Vault. AI-Assisted Migration For a more guided experience, add the Capawesome skills to your project with npx skills add capawesome-team/skills --skill ionic-enterprise-sdk-migration and use the following prompt with your preferred AI coding assistant: Use the `ionic-enterprise-sdk-migration` skill from `capawesome-team/skills` to help me migrate from Ionic Secure Storage to Capawesome alternatives."}}, {"@type": "Question", "name": "Can I keep using Ionic Secure Storage?", "acceptedAnswer": {"@type": "Answer", "text": "For a while, yes. Ionic has offered active subscribers perpetual, self-support licenses in 2026, so existing apps won't stop working overnight. However, the code is effectively frozen: there are no new features, no compatibility updates for future Android, iOS, or Capacitor releases, and no patches. With the end of life set for December 31, 2027, it's worth planning your migration before an OS or Capacitor update introduces an incompatibility that can no longer be fixed."}}, {"@type": "Question", "name": "Which plugin should I migrate to — Secure Preferences, SQLite, or Vault?", "acceptedAnswer": {"@type": "Answer", "text": "It depends on what you were storing. If you only used Ionic Secure Storage's key-value API (tokens, small settings), the Capacitor Secure Preferences plugin is the direct replacement. If you used its SQLite database functionality, migrate to the Capacitor SQLite plugin with an encryptionKey to keep the same SQLCipher-based encryption. If you also need to gate access behind biometric authentication rather than just encrypting at rest, add the Capacitor Vault plugin on top of either."}}, {"@type": "Question", "name": "Are these three plugins free, or do they need a paid subscription?", "acceptedAnswer": {"@type": "Answer", "text": "All three — Secure Preferences, SQLite, and Vault — are part of Capawesome Insiders, a paid subscription. There isn't a free-tier equivalent for encrypted storage in the Capawesome catalog; the Insiders subscription is what replaces Ionic Secure Storage's own enterprise licensing."}}, {"@type": "Question", "name": "Do I need to bundle SQLCipher myself for encrypted SQLite databases?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, on native platforms. Encryption isn't automatic — it requires bundling SQLCipher in your Android and iOS projects, following the platform setup in the plugin's Encryption documentation or the step-by-step Encrypting SQLite databases in Capacitor guide. Also don't hard-code the encryption key in your app's source — store it with the Secure Preferences plugin instead."}}, {"@type": "Question", "name": "Can I keep using Ionic Secure Storage until 2027?", "acceptedAnswer": {"@type": "Answer", "text": "For now, yes — existing apps keep working, and Ionic has offered active subscribers perpetual, self-support licenses. But the code is effectively frozen: no new features, no compatibility fixes for future Android, iOS, or Capacitor releases. It's safer to migrate before an OS update introduces an incompatibility that can no longer be patched than to wait for the December 31, 2027 end-of-life date."}}, {"@type": "Question", "name": "Is there a way to migrate stored data automatically, or do I need to re-encrypt everything by hand?", "acceptedAnswer": {"@type": "Answer", "text": "There's no automatic converter between the two plugins' storage formats. For key-value data, the practical approach is reading each value out of Ionic Secure Storage and writing it into Secure Preferences at runtime (similar to the vault-to-vault migration pattern in Alternative to the Ionic Identity Vault Plugin), while both dependencies are still installed. For SQLite databases, you're re-creating the schema with upgradeStatements and copying rows across, since the two plugins don't share a database file format."}}, {"@type": "Question", "name": "Need Help Migrating?", "acceptedAnswer": {"@type": "Answer", "text": "If you'd rather not handle the migration yourself, the Capawesome team can take care of it for you. Whether you're dealing with a straightforward key-value store swap or a more complex SQLite setup, we offer dedicated migration services to get you up and running with minimal downtime and effort on your end. Book a Free Consultation"}}], "url": "https://capawesome.io/blog/alternative-to-ionic-secure-storage-plugin/"}
```
