haul
Haul is a command line tool for developing React Native apps, powered by Webpack
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.