rescript-lang.org Ship great products!

Crossroad of design and code
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!
3
36
1,413
In the next version of our vscode plugin 🚀: github.com/rescript-lang/res…
6
23
1,887
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🚀
2
9
41
2,078
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).
2
9
38
2,314
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: piped.video/watch?v=yKl2fSdn…
10
29
2,511
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.
2
6
50
3,158
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.
4
39
4,071
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.
5
37
2,460
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.
1
3
25
1,784
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.
1
4
27
1,310
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.
1
8
42
3,897
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.
3
9
41
2,958
In ReScript you can put expressions almost anywhere. Assign expressions to variables, put them anywhere in JSX, put them directly into function arguments, etc. Massive readability and productivity boosters, and you'll love it if you haven't written in a language with it before.
2
6
40
3,507
Since v11, ReScript has support for explicit partial application of functions using the "..." syntax at the end of the function call. Partial application of functions is useful in many scenarios, and this explicit syntax makes code easier to read and reason about.
1
5
22
1,911
Pipes are one of the most powerful concepts in ReScript. Pipes let you build function chains easily, with great support for type inference, and great editor support like autocomplete. It's just a syntax transform, so it compiles to regular, efficient JS function calls.
4
5
46
4,715
ReScript has first class support for tagged template literals since v11.1. A useful JS technique that's important for interop, and lends itself well to some pretty interesting use cases!
1
5
22
2,586
Dynamic imports shipped in ReScript v11. You can easily import both entire file modules, as well as single functions. For file modules, you simply await the module itself. For single functions, you use the `import` function. Makes things like React.lazy easy to use.
1
4
33
3,312
JSX is a 1st class language feature in ReScript. Since v11.1 you've been able to use any createElement-style JSX transform you'd like with ReScript. Image shows Preact, but there are examples in the community even for non-client side fws, like emitting plain HTML server side.
1
5
34
3,811
ReScript ships with native async/await support that also compiles to async/await in JavaScript. You can pattern match directly on the await, and handle errors in the pattern match as well. No need to wrap things manually in try/catch, the compiler still emits the right thing.
1
15
79
4,275
We shipped a %todo extension point in v11.1. It makes it easy to postpone implementing something but not have the compiler block you continuing working. It'll produce a warning by default, and it's easy to configure the compiler so that it emits a hard error in for example CI.
1
2
26
1,589
We'll ship our new standard library Core by default in v12. Core replaces the current standard lib and most of Belt, with one unified experienced that's built to look and feel more like the JavaScript APIs you're used to, while not sacrificing ergonomics.
2
9
44
2,788
We're further closing the syntax gap between ReScript and JavaScript in in v12: - First class regex syntax (previously needed wrapping in %re("<pattern>")) - Remainder operator - Use +, -, / and * for any number type, dedicated operators per type not needed And more coming!
2
11
44
1,900
Another new feature in v12 - variant type spreads in pattern matching! This allows you to refine variant types and easily match on a whole subset type without having to enumerate it. This was always possible with polyvariants, and now also with regular variants.
4
10
57
2,665
In v12, several new features come together to enable powerful new use cases. Dict pattern matching and with untagged variants make it easy to hand write JSON decoders/encoders with great DX, and also get efficient and readable JS output. More power, less complexity.
2
10
63
3,338
Quite a few new useful features coming to ReScript in v12. For example, first class syntax and pattern matching for dicts! In parallell, @ccrisccris has done massive work improving the efficiency of the emitted JS, which can be seen in the output here.
1
13
51
2,457
Replying to @kevanantha

ALT Breaking Bad Right GIF

3
187
We wanna thank everyone who joined us, putting so much time and effort into this project. We are already looking forward to another ReScript Retreat in 2025!
3
7
41
5,681
Our retreat slowly comes to an end... We were quite busy and didn't really get to live tweet, BUT the outcome was outstanding and we can't wait to share what we will be up to in the next few months while working towards ReScript 12 🚀 Good energy and enthusiasm in the team!
5
8
58
4,138
Thanks to Paul and Florian our new online playground finally runs compiled code! #ReScriptRetreat2024
So proud and happy to be part of #RescriptRetreat2024! Today, we shipped with @fham_r the long awaited console output in @rescriptlang playground!
2
5
42
3,452
Topics and work groups have been established. We overheard some discussions about "for of" & iterator support. Meanwhile the online playground is about to be extended, and rescript-core is on its way into the compiler.
1
4
21
3,979
Let's go! Our ReScript Retreat started out with an amazing intro talk about our syntax parser and printer implementation by our syntax connoisseur @_binary_search himself. Time to turn "let" into "var" amiright?
Retreat! 14 contributors from 9 nations (including Korea and South Africa) joined us in Vienna to closely work together on @rescriptlang topics. We want to thank our main supporter cca.io for sponsoring our amazing work & coffee space!
1
3
29
2,357
Replying to @ChShersh
Well, well, well... talking of doc headers with proper examples 😎
1
3
10
897
Replying to @siematos
Our forum post has a localized date posted as well for different major regions: forum.rescript-lang.org/t/re…
1
147
Unbelievable.
1
13
1,874
Replying to @samwightt
Or write some bindings. Usually it's a quick one liner whenever some lodash function is needed. Our language also allows piping regular lodash functions, so we have all the upsides of "fp-like" pipe operations and traditional JS interfaces.
4
Good morning! How's everyone's JS today? piped.video/watch?v=Uo3cL4nr…
2
1
20
Our Syntax Lookup Widget just got an update! Thanks to kevanstannard, you can now look up builtin extension points with short description and examples 🚀 Check it out: rescript-lang.org/syntax-loo…
1
25
The latest version of VSCode now comes with a new custom file icon for .res and .resi files!
1
6
61
Woohoo! We just launched our brand new landing page 🚀 rescript-lang.org/
5
77
328
A simple, solid type system that doesn't get confused while you refactor your code. Change the right field in the right record, and leave the superficially similar ones alone! Works across files too.
8
41
259
How long has your ReScript watcher been running flawlessly?
1
29
Time flies!
1
1
8
About time we've achieved this =)
5
61
For example, TypeScript-like import? Or Rust-like extern?
1
3
Small editor plugin update 1.0.2: snippet autocompletes to ease up a few syntax features (loop, externals)!
3
19
72
Who's liking the even faster build speed in 8.3.0? Clean build:
1
5
52
Replying to @_paulshen
Yep, more importantly, the inferred types are guaranteed to be correct. Gives you peace of mind. New ReScript syntax for the snippet above:
9