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

storeshot

v0.3.0

Published

A local-first, agent-native CLI for creating App Store screenshots.

Readme

StoreShot

StoreShot is a local-first, agent-native CLI and visual editor for creating App Store screenshots. Run it in a folder, edit screenshot sets in the browser, and keep the complete project as ordinary assets and JSON files that humans, scripts, and AI coding agents can all inspect and change.

Pre-release: StoreShot is under active development, changes quickly, and does not yet promise backward compatibility. It supports Apple App Store screenshots today; Google Play support is planned.

StoreShot is already used in production for the iOS app Lokimaps.

StoreShot visual editor showing an App Store screenshot set for Lokimaps

Why StoreShot?

Many existing screenshot tools were designed as closed, manual design silos. Their project data is difficult to inspect, version, automate, or hand to an AI agent, which makes routine localization and release work unnecessarily awkward.

StoreShot keeps the workflow open and file-based. The visual editor is useful for hands-on design, while the same project can be reviewed, generated, or updated by an agent through normal filesystem tools. There is no account, database, hosted project, or remote backend.

What it can do

  • Organize raw screenshots, brand assets, and other reusable imagery.
  • Create ordered screenshot sets for a locale and Apple device family.
  • Arrange text, shapes, images, recolorable artwork, and device mockups on a free-form canvas.
  • Group and ungroup layers, with multi-selection on the canvas and in the layer list.
  • Use undo/redo, multi-layer copy/paste and duplication, alignment guides, layers, keyboard movement, and canvas zoom.
  • Export an entire set as full-resolution PNG files in a ZIP archive.
  • Inspect, validate, edit, and render projects from the CLI with stable JSON output for scripts and AI agents.
  • Import portable device-mockup bundles with explicit frame geometry and license metadata.
  • Persist everything inside the selected project directory.

Quick start

StoreShot requires Node.js 22.12 or newer.

npm install --global storeshot
mkdir app-store-screenshots
storeshot init app-store-screenshots --app-name "Example App" --platform ios
storeshot dev app-store-screenshots

The command opens a local workspace at http://127.0.0.1:4173. To use a different port or avoid opening the browser:

storeshot dev ./app-store-screenshots --port 4174 --no-open

The default server is bound to the loopback interface. Be deliberate when using --host to expose it to another interface.

CLI and AI agents

StoreShot supports the full screenshot workflow without requiring browser automation. Commands can inspect the project, create and update sets, manage assets, validate direct JSON edits, and render real PNG previews or final output. Global -C/--project selects the project and --json provides stable machine-readable results.

storeshot -C ./app-store-screenshots status --json
storeshot -C ./app-store-screenshots validate --json
storeshot -C ./app-store-screenshots set show <set-id>
storeshot -C ./app-store-screenshots render --set <set-id> --scale 0.25 --json

When storeshot dev is open, CLI and direct filesystem changes are streamed to the browser so the selected set and preview update in realtime. See the CLI and agent workflow for the complete command surface and a recommended inspect-edit-validate-render loop.

Project format

StoreShot creates a transparent, portable project structure:

app-store-screenshots/
├── storeshot.json
├── assets/
│   ├── screenshots/
│   ├── brand/
│   └── other/
├── mockup-bundles/
│   └── my-device-frames/
│       ├── storeshot-mockups.json
│       ├── LICENSE
│       └── assets/
└── sets/
    ├── english-iphone-a1b2c3d4.json
    └── finnish-iphone-e5f6g7h8.json

CLI renders are written to renders/<set-id>/ by default. They are generated output; teams can commit or ignore them according to their release workflow.

Each set stores its locale, device, output dimensions, ordered screenshots, and canvas layers. StoreShot only serves files inside the selected project boundary. Project assets and imported bundles remain subject to their own licenses.

The editor and CLI renderer load fonts from Bunny Fonts on demand. The project itself remains local, but the first browser or CLI render of a hosted font requires a network request to Bunny Fonts. The CLI caches the downloaded font files in the operating system's temporary directory.

Device mockups

The built-in Apple frames come from the MIT-licensed FrameUp Free project. StoreShot also supports project-local bundles and lets users import all or selected frames.

See the mockup bundle format for the manifest and geometry specification.

Develop from source

From a checkout of this repository or your fork:

npm ci
npm run dev

npm run dev starts the CLI in watch mode against the ignored playground/ project and serves the React UI with Vite hot reload.

Useful commands:

| Command | Purpose | | --- | --- | | npm run dev | Run the development CLI and UI against playground/ | | npm run dev:website | Preview the static website with Vite hot reload | | npm run storeshot -- dev <dir> --no-open | Run the unbuilt CLI against another folder | | npm run typecheck | Type-check the project | | npm run build | Build the CLI and browser UI | | npm run licenses | Regenerate bundled dependency license texts | | npm run check | Run license, type, and production-build validation |

The repository also includes AGENTS.md and project-local Codex configuration for agent-assisted development.

Maintainers can follow the release guide to publish a new version through npm trusted publishing and GitHub Actions.

Contributing and security

StoreShot is early software, and focused issues and pull requests are welcome. Read CONTRIBUTING.md before making a substantial change. Please report vulnerabilities according to SECURITY.md, not in a public issue.

License

StoreShot is released under the MIT License.

Third-party packages, fonts, icons, and device frames retain their own licenses. See THIRD_PARTY_NOTICES.md and THIRD_PARTY_LICENSES.txt for attribution and license details. StoreShot is not affiliated with or endorsed by Apple Inc. Apple, App Store, iPhone, iPad, Apple Watch, and Mac are trademarks of Apple Inc.