At cca.io, we are using ReScript for all our frontend development (React and React Native apps). We’ve been involved with it since its early days around 2019.
ReScript is a robustly typed language that compiles to efficient and human-readable JavaScript. Over the years, we’ve watched the project grow and helped expand its ecosystem with React Native bindings, MUI bindings, and improvements to the ReScript compiler itself.
As a small team building reliable software for public safety and public transport, we’ve found ReScript’s strong type system and developer-friendly design to be invaluable.
The ReScript Experience
This illustration from a ReScript forum post from 2022 explains it best:
There’s something special about the ReScript experience that never gets old. It’s hard to overstate how empowering it feels to take on a large refactoring or implement a complex new feature with complete confidence in your tools:
- You define the required types, sketching out the structure of your feature.
- You gradually flesh out the implementation, letting the compiler warnings and errors direct you to the next area that needs your attention.
- Hours later, you finish your work. The project compiles successfully.
- You run your app, and it works. The first time.
This experience is summed up beautifully by my colleague Florian:
If it compiles, it works.
ReScript’s strong type system deserves the credit for this. By defining the shape of your data and the constraints of your logic upfront, you eliminate whole classes of runtime errors. It’s a game-changer, especially when working on a large, complex codebase.
Why It Matters
For us, the confidence ReScript provides isn’t just a convenience—it’s a necessity. Working in high-stakes domains like public safety and public transport demands software that is not only reliable but also maintainable. ReScript helps us meet those demands with fewer bugs, clearer code, and faster development cycles.
In future posts, I’ll dive into practical examples of how ReScript helps us tackle complex problems, maintain clean and reliable code, and make our lives as frontend developers easier and more enjoyable.