Bob - The React Native Library Builder

Authors
Satyajit Sahoo
Software Engineer
@
Callstack
No items found.

It’s a common practice to publish React Native libraries as source code without building them. Metro handles compiling JavaScript and TypeScript files by default, so it mostly works.

But there are many reasons you should compile your JavaScript and TypeScript code when publishing.

  • Jest doesn’t compile code under node_modules by default, so it’s extra work for users to configure Jest when testing.
  • It’s common to exclude node_modules when compiling for bundlers such as Webpack. If your library is cross-platform and supports web, it should have first-class support for other bundlers.
  • If your library supports web, you should pre-compile it so that the user can import it in Node for SSR.

The main reason many people don’t compile the code when publishing is because it’s not straightforward. We need to take care of many things, for example, different entry points and babel configuration for different targets. If we use a static type checker such as Flow or TypeScript, we also need to take care of generating and publishing the type definitions.

Bob's mission

We built Bob to simplify this and take care of it automatically. All the scripts and Babel config are abstracted away. It can also automatically configure your project to use it just by running yarn bob init.

Currently, it handles the following targets:

  • Generic CommonJS build
  • ES modules build for bundlers such as Webpack
  • Flow definitions (copies .js files to .flow files)
  • TypeScript definitions (uses tsc to generate declaration files)

Bob’s goal is to standardize these build scripts across the React Native libraries in the community. We plan to implement more things in the future, including a watch mode.

There's a repo with installation and usage instructions. If you face any issues with version, please report them on our Bob issue tracker, and don’t forget to star it.

Table of contents
Launching or scaling an open-source project?

We help teams bring new open-source projects to life and grow them within the React Native space.

Let’s chat
Link copied to clipboard!
//
Insights

Learn more about

Open Source

Here's everything we published recently on this topic.

Sort
No items found.
//
Open Source

We can help you move
it forward!

At Callstack, we work with companies big and small, pushing React Native everyday.

React Native Development

Hire expert React Native engineers to build, scale, or improve your app — from day one to production.

React Development

Develop high-performance React applications with advanced patterns and scalable architectures.

React Compiler Implementation

Use React Compiler to achieve instant performance benefits in your existing applications.

React Native Trainings

Equip your team with React Native skills through tailored training sessions.