whatisgithub

What is metro?

gaearon/metro — explained in plain English

Analysis updated 2026-07-17 · repo last pushed 2024-11-17

7JavaScriptAudience · developerComplexity · 3/5StaleSetup · easy

In one sentence

Metro is the JavaScript bundler that packages React Native app code for iOS and Android, with fast reloads.

Mindmap

mindmap
  root((metro))
    What it does
      Bundles JS code
      Fast reload
      Handles large projects
    Tech stack
      JavaScript
      React Native
    Use cases
      Build React Native apps
      Development server
      Release builds
    Audience
      React Native developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Bundle a React Native app's code for iOS and Android without extra configuration.

USE CASE 2

Run a development server that reloads changes almost instantly.

USE CASE 3

Build large React Native projects with thousands of files without slowdowns.

What is it built with?

JavaScriptReact Native

How does it compare?

gaearon/metroboneskull/promwrapbrunosimon/ecole-multimedia-fi-dev2-2019
Stars777
LanguageJavaScriptJavaScriptJavaScript
Last pushed2024-11-172020-07-212021-08-12
MaintenanceStaleDormantDormant
Setup difficultyeasyeasyhard
Complexity3/52/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

Comes built into React Native projects, no extra configuration needed.

So what is it?

Metro is the tool that packages up JavaScript code for React Native apps. Think of it like a compiler: when you write your app's code across multiple files, Metro takes all those pieces and bundles them together into a format that can run on iOS and Android phones. The key advantage of Metro is speed. It's designed to reload your code almost instantly when you make changes during development, which means you can see what you're building without waiting around. It also handles large projects well, apps with thousands of individual code files, without getting bogged down. Because it's built specifically for React Native (not adapted from a general-purpose tool), it works with every React Native project out of the box, with no extra configuration needed. If you're a React Native developer, you're probably already using Metro without thinking about it. When you run your development server or build an app for release, Metro is the thing doing the heavy lifting behind the scenes. The tool was originally part of React Native itself, but the team split it out into its own project to make it easier to improve and fix bugs faster. The README itself points to [the Metro website](https://facebook.github.io/metro/) for the actual documentation and setup instructions, so this repository is the source code rather than a beginner-friendly tutorial.

Copy-paste prompts

Prompt 1
Explain what Metro does when I run my React Native development server.
Prompt 2
Help me troubleshoot why Metro's fast reload isn't picking up my code changes.
Prompt 3
Show me how Metro bundles a React Native project for release.

Frequently asked questions

What is metro?

Metro is the JavaScript bundler that packages React Native app code for iOS and Android, with fast reloads.

What language is metro written in?

Mainly JavaScript. The stack also includes JavaScript, React Native.

Is metro actively maintained?

Stale — no commits in 1-2 years (last push 2024-11-17).

How hard is metro to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is metro for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.