whatisgithub

What is haul?

callstack/haul — explained in plain English

Analysis updated 2026-07-03

3,684TypeScriptAudience · developerComplexity · 3/5Setup · moderate

In one sentence

Haul is a command-line tool that replaces the Metro bundler in React Native projects with Webpack, giving developers access to the full Webpack plugin ecosystem. The team now recommends its successor Re.pack for new projects.

Mindmap

mindmap
  root((Haul))
    What it does
      Replaces Metro bundler
      Webpack for React Native
      RAM bundle support
    Benefits
      No Watchman needed
      Symlink support
      Better error messages
    Limits
      No Hot Module Replacement
      Limited Delta Bundles
      No Haste modules
    Successor
      Re.pack recommended
      Easy migration path
Click or tap to explore — scroll the page freely

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

Swap Metro for Webpack in a React Native project to use Webpack plugins and custom loaders not available in Metro.

USE CASE 2

Build a React Native app without needing Watchman installed by using Haul as the bundler.

USE CASE 3

Generate RAM bundles for a React Native production build to speed up app startup on some devices.

USE CASE 4

Use symlinks correctly in a React Native monorepo by replacing Metro with Haul.

What is it built with?

TypeScriptNode.jsWebpackReact Native

How does it compare?

callstack/haulkirodotdev/kirobqplot/bqplot
Stars3,6843,6863,689
LanguageTypeScriptTypeScriptTypeScript
Setup difficultymoderateeasyeasy
Complexity3/53/52/5
Audiencedeveloperdeveloperdata

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

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires Node 10 or newer, the team recommends Re.pack for new projects instead.

So what is it?

Haul is a command-line tool that replaces the default bundler used when building React Native mobile apps. React Native ships with its own bundler called Metro, and Haul swaps that out for Webpack, a widely used bundler from the broader JavaScript ecosystem. This gives developers access to the full Webpack plugin and loader system, which can make it easier to customize how an app's code is packaged. The main practical benefits listed in the README are that Haul does not require Watchman (a file-watching tool that Metro depends on), that symlinks work correctly, and that error messages are designed to be more helpful than the defaults. For production builds, Haul can also generate RAM bundles, a format that speeds up app startup on some devices by only loading the parts of the code the app actually needs at first. The README includes an important notice at the top: the team has released a successor project called Re.pack, which adds features Haul never had, including Hot Module Replacement and React Refresh support. The README recommends that anyone evaluating Haul start with Re.pack instead, and that existing Haul users migrate. The migration is described as straightforward because both tools use a standard webpack.config.js file. For those who still want to use Haul, setup involves adding the @haul-bundler/cli package to a React Native project, running haul init to generate a configuration file, and then starting the development server with haul start. The init command sets up version-specific presets for React Native 0.59 and 0.60. Node 10 or newer is required. Haul has known limitations: no support for Hot Module Replacement, limited support for the Delta Bundles format introduced in React Native 0.52, and no support for the Haste module system that some React Native internal code uses.

Copy-paste prompts

Prompt 1
I have a React Native project using Metro. Walk me through replacing it with Haul so I can use Webpack plugins, including installing @haul-bundler/cli and running haul init.
Prompt 2
Show me how to write a webpack.config.js for Haul that adds a custom SVG loader to my React Native project.
Prompt 3
I need to generate a RAM bundle for my React Native app using Haul for a production build. What configuration and command do I need?
Prompt 4
I'm migrating from Haul to Re.pack as recommended. What changes do I need to make to my webpack.config.js and package.json to complete the migration?

Frequently asked questions

What is haul?

Haul is a command-line tool that replaces the Metro bundler in React Native projects with Webpack, giving developers access to the full Webpack plugin ecosystem. The team now recommends its successor Re.pack for new projects.

What language is haul written in?

Mainly TypeScript. The stack also includes TypeScript, Node.js, Webpack.

How hard is haul to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is haul for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.