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

@fullstacked-labs/pocketdev

v0.1.1

Published

Instant zero-config HTTPS tunnel for testing local web apps on mobile devices with working HMR and microphone/camera permissions.

Readme

📱 pocketdev

npm version License: MIT Node.js Built for AI Agents

Test local web apps on your phone in 3 seconds. Instant trusted HTTPS, working Hot Module Reloading (HMR), and mobile camera/microphone permissions with zero configuration.

npx @fullstacked-labs/pocketdev 3000
 📱 POCKETDEV 

  Target:       http://localhost:3000
  Mobile URL:   https://breeze-sunset-vintage-glade.trycloudflare.com

  ✔ Host & Origin Masquerade active (Next.js & Vite HMR Safe)
  ✔ Trusted HTTPS active (Microphone, Camera & WebCrypto Permitted)
  ✔ Zero configuration, no accounts or root certs required

  Scan with your iPhone or Android camera:
  [ QR Code ]

  Press Ctrl+C to stop the tunnel and disconnect.

The Problem: Mobile Web Dev is Broken in 2026

When you try testing your Next.js, Vite, Remix, or Astro app on a physical iPhone or Android device, you hit two brick walls:

1. The HMR Wall (Cross-Origin Blocking)

Modern frameworks have hardened their dev servers against Cross-Site WebSocket hijacking:

  • Next.js 14–16: Rejects WebSocket upgrades and dev chunk loading from external hostnames:
    Blocked cross-origin request to Next.js dev resource /_next/static/webpack/...
    To allow this host in development, add it to "allowedDevOrigins" in next.config.js
  • Vite & Webpack:
    [vite] connecting... failed to connect to websocket.
    Invalid Host header.

Editing allowedDevOrigins or hardcoding your LAN IP in config files breaks git branches, CI, and coffee shop Wi-Fi changes.

2. The Secure Context Wall (isSecureContext === false)

Mobile Safari and Android Chrome hard-disable modern Web APIs over plain LAN HTTP (http://192.168.x.x:3000):

  • navigator.mediaDevices.getUserMedia is undefined (Microphone and Camera tests fail immediately).
  • NotAllowedError: The request is not allowed by the user agent in the current context.
  • crypto.subtle and WebShare are disabled.

Why Existing Tools Don't Cut It

| Tool | Trusted HTTPS? | Fixes Next.js / Vite HMR? | Account / Signup? | Setup Friction | |---|---|---|---|---| | PocketDev | Yes (Cloudflare Edge) | Yes (Header Masquerade) | Zero (Anonymous) | npx pocketdev 3000 | | ngrok | Yes | No (passes external Host; HMR dies) | Yes (Auth token required) | High | | cloudflared | Yes | No (passes *.trycloudflare.com Host) | No | High (CLI install) | | Tailscale Serve | Yes | No (passes *.ts.net Host) | Yes | High (requires tailnet on phone) | | mkcert | Yes | No (still cross-origin IP) | No | Painful (iOS Root CA profile dance) |

Existing tunneling tools only solve the network pipe. They don't solve the framework security guard.


How PocketDev Works

PocketDev combines two things in one command:

┌─────────────────┐       HTTPS       ┌─────────────────────────────┐
│  iPhone Safari  │ ────────────────▶ │ *.trycloudflare.com (Edge)  │
└─────────────────┘                   └─────────────────────────────┘
                                                     │
                                                     ▼ HTTP
                                      ┌─────────────────────────────┐
                                      │    PocketDev Micro-Proxy    │
                                      │ (Rewrites Host -> localhost)│
                                      └─────────────────────────────┘
                                                     │
                                                     ▼ Loopback
                                      ┌─────────────────────────────┐
                                      │ Next.js / Vite (Port 3000)  │
                                      └─────────────────────────────┘
  1. Header Masquerading: Intercepts incoming requests and rewrites Host, Origin, and Referer to localhost:<port>. Next.js and Vite believe the mobile phone is a local browser tab on your laptop, bypassing all cross-origin security guards.
  2. Ephemeral Cloudflare Quick Tunnel: Creates an instant, trusted HTTPS tunnel without needing a Cloudflare account, credit card, or custom domain. iOS Safari sees a trusted Let's Encrypt certificate and grants camera/mic permissions without warnings.

Quickstart

Run directly via npx:

# Expose your dev server (e.g. Next.js on 3000, Vite on 5173)
npx @fullstacked-labs/pocketdev 3000

# Or install globally
npm install -g @fullstacked-labs/pocketdev
pocketdev 3000

Options

npx @fullstacked-labs/pocketdev <port>          Expose port with terminal QR code
npx @fullstacked-labs/pocketdev <port> --no-qr  Expose port without printing QR code
npx @fullstacked-labs/pocketdev --help          Show help message
npx @fullstacked-labs/pocketdev --version       Show version

Features

  • ⚡ Zero Config & Zero Signup: No accounts, no API tokens, no credit cards.
  • 🔄 Working HMR / Fast Refresh: Save code on your laptop and watch your mobile screen update instantly.
  • 🎙️ Full Web APIs Enabled: Test Speech-to-Text (getUserMedia), camera capture, WebCrypto, and WebShare.
  • 📱 Instant QR Code: Point your phone camera at the terminal to open the live URL.
  • 🧹 Zero Leftover Daemons: Clean teardown on Ctrl+C. No orphaned processes or persistent background services.
  • 💻 Cross-Platform: Works out of the box on macOS, Linux, and Windows.

License

MIT © Noor Latif · Fullstacked