At Callstack, we keep challenging ourselves on how to write better mobile apps in a cross-platform way. In fact, it is our mission to help you and companies to launch their products for everyone, at the same time.

For the past few months we have been experimenting with Reason at Callstack. We were so excited by the opportunities it gives when it comes to developing mobile apps that we wanted to share our excitement with the community!

As a first step, we focused on making the on-boarding process as easy as possible.

🎉 It's been never so easy to use ReasonML with React Native, thanks to bs-react-native! We, at @callstackio, wanted to lower the barrier for newcomers and wrote some docs for it and will continue adding more and more support. https://t.co/pCviMSHbd1

— Mateusz Zatorski (@matzatorski) June 18, 2018

All in all, it shouldn’t be any harder to use React Native with other languages than Javascript. As a next step, we created a special Reason project template that can be used with <rte-code>react-native init<rte-code> to make a different than standard Hello World application out of the box.

If you ever wanted to start writing React Native apps in Reason but were scared of all the steps to do, worry not, there's a script for that!

Run `react-native init MyApp --template rebolt` and you are all set!

— Mike Grabowski (@grabbou) June 19, 2018

That was just the beginning.

Today, we are really happy to announce an initial release of Rebolt — our take on developing React Native applications in Reason. Initially started as a fork of <rte-code>bs-react-native<rte-code>, it became an independent project as differences in both APIs and future roadmap started to become noticeable.

It ships with bindings to almost all React Native APIs and contains minor, but backwards-compatible, differences focused on developer’s efficiency. That means the upgrade path from <rte-code>bs-react-native<rte-code> should be rather trivial and free from any advanced code modifications.

Why forking?

First stable release of Rebolt (v1) will always be a fork of <rte-code>bs-react-native<rte-code>, that is, bindings to React Native with a slightly different API. We will continue to maintain that version for the foreseeable future and keep it up to date as new React Native versions get released.

We decided to fork the project to be able to accelerate its development in accordance with our view on its future. We would like to thank all 44 contributors that spent their time to make what bs-react-native became at the time of our fork. The whole project is still MIT licensed and we are more than happy to see our work back-ported, forked and improved further by the community.

The future of Rebolt

We have ambitious plans for the next release of Rebolt (v2) that we plan to announce later this fall (hint: React Native EU that we organise at Callstack is naturally aspirated date for such announcement to happen. Make sure you have your ticket). As an open-source first company, the entire development will be done in public, including meeting notes and roadmap. You can subscribe to our repository to track further updates and join our Discord to stay up to date. You are all invited to contribute!

Long story short, our plan is to create a whole-new framework written in Reason that shares native part with React Native (hence it is fully compatible with React Native existing ecosystem). Functional capabilities of Reason and its OCaml build environment make it a really interesting playground for experimenting with native development. We want to keep the things that JavaScript does well and replace the bad parts with Reason and use its power (native compilation) to solve the problems that react native can’t solve because of JS. We will keep exploring those ideas in the repository while we complete our work on the v1 of Rebolt.

Given the absence of Javascript, Rebolt is going to use Haul — an alternative packager for React Native, developed at Callstack — for bundling your source code. It’s based on Webpack and provides a much more universal workflow than Metro bundler. Community is already using it for bundling their web and mobile applications and it’s yet another building block to make our vision real.

It is also going to feature a whole-new command line tool that is easy to get started and offer beautiful DX across available commands. This is what rnpm was meant to be from the very beginning. I never managed to finish it with Kureev Alexey and the only part that we created, link command, was merged to the core and became react-native link. We now wanted to use this as an opportunity to improve the link itself to support the latest native capabilities that were developed over the course of the past 3 years inside the React Native repository. We also want to make the experience working with native code more seamless, bringing it closer to CRNA or Expo, but without 3rd party software. This part is going to be compatible with React Native (in Javascript) as well. That means, regardless of your view on Reason, you are still going to get a whole-new experience when it comes to building mobile apps.

Promises, promises

We know the plan is ambitious. Everything that we do is defined by our mission. We want to make the cross-platform development as easy and stable as possible, learning from our experience in this field and from what other companies have recently shared.

We hope that Reason is what brings us closer to achieving this goal. If Rebolt does not make it happen, I will not consider this as a failure. It’s going to be a sign that there is a better alternative on the market for solving that problem.

And we will keep chasing that solution.

Insights

Learn more about Open Source

cover

Aug 7Article

Visualizing Open Source Licenses to Analyze Compliance and Reduce Legal Risk

Discover how license-kit visualize maps and analyzes your dependency graph, helping you spot license issues, duplicates, and restrictive packages with interactive views, stats, and AI-powered summaries.

cover

Mar 26Podcast

How Definitely Typed Changed TypeScript Forever

Discover the story behind Definitely Typed with its creator, Boris Yankov, and learn how it became essential for type-safe JavaScript in the TypeScript ecosystem.

cover

Oct 14Article

Introducing the OMH Cloud Storage Module

Discover the OMH Cloud Storage Module. This open-source solution simplifies cloud storage integration for React Native apps.

cover

Jul 12Article

Introduction to the React Native OMH Maps Library

Discover how the React Native OMH Maps library simplifies map integration with cross-platform compatibility, ease of use, and customization options.

cover

Apr 22Podcast

Behind the Scenes of React Native 0.74 Release

Join the release crew members to find out what new features and improvements React Native 0.74 brings to the cross-platform development world.

cover

Apr 27Podcast

Callstack OSS Update

April 2023 Callstack OSS Update: RFC for Expo Config Plugins, Re.Pack & Paper news.

cover

Dec 6Article

React Native Paper 5.0 - What’s New?

React Native Paper 5.0 is here! Dive into the latest updates and improvements.

cover

Feb 8Article

Stripe React Native: the Most Common Questions - Tipsi Migration Guide, Part 5

Check out the list of the most common questions about Stripe react Native Library prepared by Jakub Kłobus, software engineer at Callstack.

cover

Feb 6Article

Stripe React Native Migration Function by Function - Tipsi Migration Guide, Part 3

In the third part of the Tipsi Migration Guide we describe the Stripe React Native migration function by function.

cover

Mar 19Tutorial

The Hard Way vs. The React Native AI SDK Way: Stop Writing Custom Modules for Every Model

Learn how React Native AI uses a unified provider model to switch between cloud and on-device LLMs without rewriting application logic, enabling reliable AI experiences online and offline.

cover

Mar 12Tutorial

Build Smarter Apps: Tool Calling & AI Orchestration Explained

Learn how on-device models in React Native can call tools, interact with external APIs, and return structured outputs you can use directly in application logic.

cover

Mar 5Tutorial

MLC LLM + React Native: On-Device AI Without the Pain

Learn how to run third-party on-device LLMs in React Native using MLC LLM. Choose your models, run them efficiently across platforms, and keep a unified JavaScript API with React Native AI.

cover

Feb 24Tutorial

Intelligent Fallbacks with Apple Intelligence in React Native

Learn how to use Apple’s built-in Foundation Models in React Native apps, reduce memory usage, and enable fast, fully on-device AI with React Native AI Apple.

cover

Feb 10Tutorial

What Is the React Native AI SDK? A Complete Intro & Quickstart

Learn why on-device AI matters for React Native apps, how local LLMs behave offline, and what problems React Native AI is designed to solve from day one.

cover

Jan 29Tutorial

Implementing an Android TurboModule with Kotlin

Learn how to implement a React Native TurboModule on Android, from the TypeScript spec and Codegen to the Kotlin implementation and package registration.

cover

Jan 19Tutorial

Working with Different Threads in Swift TurboModules

Learn how JavaScript, native module, background, and main threads interact in React Native TurboModules, and how to use GCD queues to run async work safely in Swift.

cover

Jan 9Tutorial

How to Add Type-Safe Constants to Swift TurboModules

Learn how to expose typed, immutable constants from a Swift TurboModule using Codegen, and get full end-to-end type safety between native and JavaScript.

cover

Dec 30Tutorial

Adding Event Emitters to Your TurboModule in Swift

Learn how to emit native events from a Swift TurboModule and subscribe to them in JavaScript, including proper memory management and Codegen integration.

cover

Dec 22Tutorial

Writing Your First TurboModule in Swift

Learn how to build a fully working TurboModule in Swift, integrate it with Codegen, and bridge it through Objective‑C inside an Expo app.