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

@tiledev/tile-debug

v0.2.0

Published

Drop-in on-device debug overlay for Tile apps — binary, OTA and Live Layer state behind two floating buttons, plus a code push update modal.

Readme

@tiledev/tile-debug

On-device debug overlay for Tile apps, plus a code push update modal. Two components, neither of which takes props.

Install

npm i @tiledev/tile-debug

Use

import { TileDebug, TileUpdateModal } from '@tiledev/tile-debug';

<YourApp />
<TileDebug />
<TileUpdateModal />

Two components, no props. Mounting one turns it on; not mounting it turns it off. They are independent — mount either, both, or neither.

| component | what it is | | --- | --- | | <TileDebug /> | two floating buttons — ⓘ for binary / OTA / Live Layer state, ⇅ for the OTA resolver network log | | <TileUpdateModal /> | the modal shown while a code push is downloading or ready to apply |

Neither imports anything from your app, and neither needs a provider or a context above it. The app id and env come from expo-constants (extra.tile), OTA state from the TilePush static API, and Live Layer state from the cache the provider persists to AsyncStorage. Mount them anywhere in the tree.

The code push modal

<TileUpdateModal /> reads useTilePushUpdate() — the SDK's own state, not a second check against the server — and shows:

  • downloading — a bundle is coming, with percentage
  • downloaded — it is on disk and applies on next launch; offers Restart now

Both stages are dismissible. Dismissing "downloading" does not swallow the "ready to restart" that follows it, and a modal that cannot be closed is one crash-loop away from an app that cannot be used.

Without it, OTA is invisible: TilePush.wrap downloads in the background and applies on the NEXT launch, so the app on screen is a launch behind and nothing admits it.

Why these fields

Each one has been the answer to a real bug: liveLayerEnv is baked at Gradle time so a build can silently point at the wrong environment (the wrong env is live and serves different content, so it looks like it works); the NIL bundle id means you are on the embedded bundle, not an OTA one; a fingerprint mismatch means the device is served nothing, silently; and a wrong Live Layer app id makes every lookup return undefined while the app renders hardcoded defaults.

Installing before it is on npm

dist/ is committed on purpose, so the package can be installed straight from this repo — which is what lets an app depend on it without a registry:

npm i git+ssh://[email protected]/clearsight-dev/tile-debug-overlay.git

A file: path to a local tarball works on one machine only; a cloud bundler build resolving that dependency will fail. Prefer the git url (or npm, once published).

Android note

The floating buttons carry elevation as well as zIndex. Android paints by elevation before sibling order, so zIndex alone leaves them under the navigator's screen content — mounted and invisible.

OTA and this overlay

An applied OTA bundle replaces the bundle baked into the binary. If the overlay is in your APK but not in the save a push was built from, it will disappear the moment that push lands. Whatever you push has to contain it too.