Skip to main content

Dev Server & Local Development

The myop dev command starts a local development server with file watching and hot module replacement (HMR).

Myop dev server with hot reload

Starting the Dev Server

npx myop dev
URLPurpose
http://localhost:9292Dev server — component preview
http://localhost:9293Management dashboard

How It Works

Single-file mode

If the project has only index.html (no package.json with a build script), the dev server serves the file directly. Edits to index.html trigger an instant HMR update — no build step.

Multi-file mode

If the project has a build script, the dev server watches source files and triggers builds automatically:

  • If build.js exists → runs node build.js
  • If package.json has a build script → runs npm run build

The built dist/index.html is served and refreshed after each build.

File watching

The dev server watches for changes to .js, .css, and .html files. When a change is detected, it either refreshes the served file (single-file mode) or triggers a rebuild (multi-file mode).

Monorepo Mode

When working with multiple components in a monorepo, use the -m flag:

npx myop dev -m

This scans for all myop.config.json files in nested directories (up to 3 levels deep) and presents a checkbox menu to select which components to serve simultaneously.

.myop-monorepo.json

Selected components are saved to .myop-monorepo.json so you don't have to pick them every time:

{
"selectedComponents": [
"./packages/components/sidebar",
"./packages/components/chart"
],
"lastUpdated": "2025-01-15T10:30:00.000Z"
}

Connecting to a Host App

To point your host app (React, Vue, Angular, React Native) at the local dev server instead of the Myop cloud:

React

import { enableLocalDev } from "@myop/react";
enableLocalDev(); // All <MyopComponent> instances load from localhost:9292

Vue

import { enableLocalDev } from "@myop/vue";
enableLocalDev();

Angular

import { enableLocalDev } from "@myop/angular";
enableLocalDev();

React Native

import { enableLocalDev } from "@myop/react-native";
enableLocalDev();

// Android emulator:
// import { setCloudRepositoryUrl } from "@myop/react-native";
// setCloudRepositoryUrl("http://10.0.2.2:9292");

// Physical device:
// setCloudRepositoryUrl("http://192.168.1.100:9292");

Now edits to component source files are reflected instantly in your host app.

tip

Remember to remove or comment out enableLocalDev() before deploying your host app to production.

Management Dashboard

Access the management dashboard at http://localhost:9293 for a real-time overview of your dev environment:

Myop DevTools Dashboard — network architecture, registered components, activity log, and metrics

Network Architecture

The network diagram visualizes how requests flow through the dev server — from your host app, through the local server for registered components, and proxied to cloud.myop.dev for everything else:

Network architecture — request origin, local dev server, cloud server

Registered Components

The panel shows all components currently served by the dev server, with their IDs, names, and local paths:

Registered components panel

Working on Existing Components Locally

When you need to modify a component that's already deployed:

# 1. Pull the component source
mkdir components/sidebar && cd components/sidebar
npx myop pull <componentId>

# 2. Start the dev server
npx myop dev

# 3. Enable local dev in your host app (see above)

# 4. Edit index.html — changes reflect instantly

# 5. Push when done
npx myop push

Multiple components

mkdir -p components && cd components
npx myop pull <sidebar-id> -o sidebar/index.html
npx myop pull <chart-id> -o chart/index.html
npx myop dev -m # Monorepo mode