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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@appspacer/capacitor

v1.0.1

Published

AppSpacer OTA live updates for Capacitor apps

Readme

@appspacer/capacitor

Over-The-Air (OTA) live updates for Capacitor apps. Ship JavaScript, HTML, and CSS changes to your web build instantly — no app store review required.

The plugin checks AppSpacer for a newer web bundle, verifies its SHA-256, unzips it, and serves your app from the updated bundle on the next launch. Push releases with the AppSpacer CLI.

Full documentation: docs.appspacer.com


Installation

npm install @appspacer/capacitor
npx cap sync

Requirements: Capacitor 6.


Quick Start

Initialize the SDK early in your app's startup (e.g. in your root component or main.ts), then sync:

import { AppSpacer } from '@appspacer/capacitor';

await AppSpacer.init({
  deploymentKey: 'your-deployment-key',
  appVersion: '1.0.0',
});

// Check for, download, and apply an update in one call.
const result = await AppSpacer.sync();
if (result.updateAvailable) {
  console.log('Update applied:', result.label);
}

After a bundle is downloaded and applied, call AppSpacer.reload() (or relaunch) to load it.


Publishing an update

Build your web app, then push the output with the CLI:

# Android — auto-detects www/dist/build
appspacer release-capacitor -p android -a my-app -d Production -t 1.0.0

# iOS — explicit build directory, mandatory update
appspacer release-capacitor -p ios -a my-app -d Production -t 1.0.0 --mandatory -f ./dist

Zip the contents of the web build (with index.html at the top level). The plugin verifies the SHA-256, unzips the bundle, and serves it from the new path.


API

AppSpacer.init(config)

Initialize the plugin. Must be called before any other method.

interface AppSpacerConfig {
  deploymentKey: string;   // Deployment key from your AppSpacer dashboard
  appVersion: string;      // The native app store version this build targets
  serverUrl?: string;      // Override the API base URL (self-hosted). Default: https://api.appspacer.com/api
  debugLogging?: boolean;  // Verbose logging. Default: false
}

AppSpacer.sync(): Promise<UpdateCheckResult>

Check for an update and, if one is available, download and apply it. Returns the check result.

AppSpacer.checkForUpdate(): Promise<UpdateCheckResult>

Check whether an update is available without downloading it.

interface UpdateCheckResult {
  updateAvailable: boolean;
  releaseId?: string;
  packageUrl?: string;
  hash?: string;
  mandatory?: boolean;
  description?: string;
  label?: string;
  packageSize?: number;
}

AppSpacer.reload(): Promise<void>

Reload the WebView to load the most recently applied bundle.

AppSpacer.resetToBuiltIn(): Promise<void>

Discard any downloaded bundle and revert to the bundle shipped inside the binary.

AppSpacer.getDeviceId(): Promise<{ deviceId: string }>

Return the stable per-install device identifier used for staged rollouts.


Links


License

MIT