npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@0x330a/tauri-plugin-keystore-api

v2.1.0-alpha.5

Published

Interact with the device-native key storage (Android Keystore, iOS Keychain). perform ecdh operations for generating symmetric keys

Downloads

15

Readme

Tauri Plugin Keystore

semantic-release: angular Crates.io Version NPM Version


Interact with the device-native key storage (Android Keystore, iOS Keychain).

[!NOTE]
This plugin is scoped to interact with the device-specific keystore. It assumes that biometrics are set up on the user's device and performs no preflight check before trying to interact with the keystore. You should use the official biometric plugin to checkStatus before, if you want to make sure (see Usage below).

| Platform | Supported | | -------- | :-------: | | Linux | ❌ | | Windows | ❌ | | macOS | ❌ | | Android | ✅ | | iOS | ✅ |

Installation

Add the following to your src-tauri/Cargo.toml:

[dependencies]
tauri-plugin-keystore = "2"

Then install the JS guest bindings:

pnpm add @impierce/tauri-plugin-keystore

This also works for npm and yarn.

Requirements

  • This plugin requires a Rust version of 1.77.2 or higher.
  • The minimum supported Tauri version is 2.0.0.
  • Android 9 (API level 28) and higher are supported.

Usage

First you need to register the plugin with your Tauri app:

src-tauri/src/lib.rs

fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_keystore::init())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

Afterwards all the plugin's APIs are available through the JavaScript guest bindings:

import { remove, retrieve, store } from "@impierce/tauri-plugin-keystore";

await store("secr3tPa$$w0rd");
const password = await retrieve();
await remove();

The provided functions will fail if the device has no biometrics set up, so you should check the biometric status with the official tauri-plugin-biometric before using them:

import { checkStatus, type Status } from "@tauri-apps/plugin-biometric";

const biometricsStatus: Status = await checkStatus();
assert(biometricsStatus.biometryType !== BiometryType.None);

Release strategy

This plugin is semantically versioned, but there are some caveats:

  • Versioning starts at v2.0.0 to match the Tauri version it supports (common practice for Tauri plugins).
  • Breaking changes should be avoided as they would make the plugin go out-of-sync with the Tauri major version.

Conflicting release approaches

The next version is determined by semantic-release which does not recommend making commits during the release process. When publishing a new npm package to npmjs.com this is circumvented by semantic-release by pushing the version in the release metadata, so the version field in package.json is ignored. However, crates.io uses the version field from Cargo.toml to determine the version. There seems to be no easy way to replace the version number during the publish to crates.io.

Solution

This repository provides a workaround for this issue by using a semi-automated release process which decouples building a new release from pushing it to the package registries:

  1. Run the release --dry-run Action to let semantic-release determine the next version. Take note of the version it produces.

  2. Manually update the version fields in the Cargo.toml and package.json files (omit the "v", so just 2.1.0 instead of v2.1.0).

  3. Commit the changes using the following commit message (replace the version):

build: release version v1.1.0-alpha.1
  1. Open a pull request with the same title as the commit message.

  2. After the PR is merged, the actual release Action will run which creates a new release on GitHub and adds a git tag.

  3. The publish Action then publishes the packages to npm and crates.io.