Skip to content

πŸš€ Boost your React Native app's performance with a single line of code

License

Notifications You must be signed in to change notification settings

kuatsu/react-native-boost

Repository files navigation

πŸš€ react-native-boost

npm bundle size GitHub GitHub last commit

A powerful Babel plugin that automatically optimizes React Native apps through static source code analysis. It replaces standard React Native components with their native counterparts where possible, leading to significant performance improvements.

Warning

The library and its Babel plugin are still experimental. You should expect things to break. Please report any issues you encounter in the issues tab with reproducible examples, and use the library's ignore mechanisms to disable optimizations for problematic files or lines of code.

  • ⚑ Automatic performance optimization through source code analysis
  • πŸ”’ Safe optimizations that don't break your app
  • 🎯 Virtually zero runtime overhead
  • πŸ“± Cross-platform compatible
  • πŸ§ͺ Works seamlessly with Expo
  • 🎨 Configurable optimization strategies

Documentation

The documentation is available at react-native-boost.oss.kuatsu.de.

Benchmark

The app in the apps/example directory serves as a benchmark for the performance of the plugin.

More benchmarks are available in the docs.

Installation

Install the package using your favorite package manager. Please do not install the package as a dev dependency. While the Babel plugin itself would work as a dev dependency, it relies on importing the runtime library (react-native-boost/runtime) into your code, which requires the package to be installed as a regular dependency. Read more here.

npm install react-native-boost
# or
yarn add react-native-boost

Then, add the plugin to your Babel configuration (babel.config.js):

module.exports = {
  plugins: ['react-native-boost/plugin'],
};

If you're using Expo and don't see the babel.config.js file, run the following command to create it:

npx expo customize babel.config.js

Finally, restart your React Native development server and clear the bundler cache:

npm start --clear
# or
yarn start --clear

That's it! No imports in your code, rebuilding, or anything else is required.

Optionally, you can configure the Babel plugin with a few options described in the documentation.

How it works

A technical rundown of how the plugin works can be found in the docs.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT