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

@_molaidrislabs/rn-mt

v0.1.4

Published

Manifest-driven multitenancy conversion platform for React Native and Expo apps.

Readme

rn-mt

rn-mt converts an existing Expo or React Native app into a manifest-driven multi-tenant workspace.

Install it once, then use the rn-mt CLI to analyze the app, create the manifest, convert the repo, add tenants, sync generated output, and run the selected target.

Install

pnpm add -D @_molaidrislabs/rn-mt

You can also use npm or yarn, but the examples below use pnpm.

Before you start

Check these first:

  • Node.js is installed
  • your app already runs normally without rn-mt
  • you are inside the app root

Step 1: check the app type

Run this first so rn-mt can tell you what it is looking at:

rn-mt analyze

This tells you:

  • whether the app looks like Expo managed, Expo prebuild, or bare React Native
  • whether the repo is supported or near-supported
  • whether you need to pass --app-kind

If the repo shape is ambiguous, pass the kind yourself:

rn-mt analyze --app-kind expo-prebuild

Step 2: create the manifest file

Run this when you want rn-mt to write the first config file:

rn-mt init

That creates rn-mt.config.json. This file becomes the control center for:

  • tenants
  • environments
  • default target
  • config overrides

Step 3: convert the app

Run this when you want to turn the app into the rn-mt workspace shape:

rn-mt convert

This creates:

src/
  rn-mt/
    shared/
    tenants/
    current/

It also writes the generated metadata files that rn-mt uses later for sync, audit, and handoff.

Step 4: add your tenants

Run tenant add for each app variant you want:

rn-mt tenant add --id northstar --display-name "Northstar"
rn-mt tenant add --id orchid --display-name "Orchid"
rn-mt tenant add --id volt --display-name "Volt"

At this point the tenant folders exist. The app still stays mostly shared until you start creating overrides.

Step 5: choose the default target

Pick the tenant and environment you want the default workflow to use:

rn-mt target set --tenant northstar --environment dev

Step 6: generate the active output

Run sync when you want rn-mt to resolve the current target and write the generated files:

rn-mt sync

If you also need platform output, run:

rn-mt sync --platform ios
rn-mt sync --platform android

Step 7: run the app

Once sync completes, run the app through the rn-mt workflow commands:

rn-mt start
rn-mt run --platform ios
rn-mt run --platform android

Step 8: create tenant-specific overrides

When one tenant needs its own version of a shared file, run:

rn-mt override create config/theme.ts

That copies the shared file into the active tenant and updates the generated current surface so the app keeps importing from one stable place.

Step 9: check the repo

Run audit when you want to catch drift or tenant leakage:

rn-mt audit
rn-mt audit --fail-on P0

Run doctor when you want release-facing checks:

rn-mt doctor

Runtime and Expo subpaths

The public package also exposes:

  • @_molaidrislabs/rn-mt/runtime
  • @_molaidrislabs/rn-mt/expo-plugin

Use the runtime subpath when the app needs stable accessors for generated runtime state.

Use the Expo plugin subpath when an Expo config bridge needs target-context resolution.

Quick success checklist

You are in a good place if all of these are true:

  • rn-mt analyze returns the right repo kind
  • rn-mt.config.json exists
  • src/rn-mt/shared exists
  • src/rn-mt/current exists
  • rn-mt sync completes
  • rn-mt start launches the selected target

Docs

Full developer docs:

  • https://kanmi-idris.github.io/rn-mt/

Repository:

  • https://github.com/kanmi-idris/rn-mt