Development of ReScript V13 is going well. We now have ways to make sense of a PR diff much quicker. We call it "semantic diff".
Example attached.
This year's retreat was a huge success!
For 3 days, our contributors had time to connect, work on their agentic ReScript ideas, push forward big new syntax features, do talks, and most importantly, have a traditional Schnitzel dinner.
Already looking forward to Retreat 2027!
Let's go #ReScriptRetreat2025!
Thanks to CCA.io for supporting us to get everyone together to work on the ReScript language and tooling.
Goal for this weekend: Get ReScript v12 ready for production and talk about the roadmap for 2025🚀
We just landed a new (experimental) feature for v12 - nested record definitions!
Records is a corner stone in ReScript. However, they can't be nested without explicit definitions. Until now!
Will be especially useful for deeply nested records (like options objects).
One of our core contributors were on the Developer Voices podcast talking about ReScript - what ReScript is, who it targets, and how it relates to JavaScript and TypeScript.
Check out the conversation here:
youtube.com/watch?v=yKl2fSdn…
Records are powerful, but you need explicit definitions for them. We're experimenting with allowing inline record definitions nested inside a record type definition.
This will make some of the common use cases for records more ergonomic.
The new dot completion also works for objects.
Objects are structurally typed, doesn't need a type definition, and are quite useful in some scenarios.
Completion for object fields will be more ergonomic and get better discoverability with this addition.
With the new dot completion enhancements in our editor tooling you'll now get completions from the Option module when autocompleting on a record field that's an optional value, instead of just no completions like before.
You'll now also get pipe completions when you do dot completion on any type, not just records.
And additionally, you can even configure per type to have the editor give completions from additional modules, not just the module it belongs to.
For newcomers, one of the differences to JS is using pipes where you'd normally use method chaining. This takes a bit of time to learn.
To fix this, you now get pipe completions from dots as well.
So the experience is like in JS, but an actual pipe is inserted on completion.
Type inference is simple but powerful. The compiler will infer each type that's unknown by usage.
A consequence of this is that prop drilling is really simple, because you rarely have to annotate props. Just using the prop in the component defining it is usually enough.
In ReScript, pipes are normally used for chaining fn calls instead of method chaining with dots like in JS.
This is a common gotcha for JS/TS devs who come to ReScript. To ease the transition we're experimenting with letting the editor tooling complete pipes also via dots.












