Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork197
⚡ Native, high-performance, cross-platform desktop apps - built with Reason!
License
revery-ui/revery
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Buildnative,high-performance,cross-platform desktop apps withreason!
🚧NOTE: Revery is a work-in-progress and in active development! 🚧
To get a taste of Revery, check out our JavaScript + WebGL build on theplayground. For the best experience, though, you'll want to try anative build.
Today,Electron is one of the most popular tools for building desktop apps - using an HTML, JS, CSS stack. However, it has a heavy footprint in terms of both RAM and CPU -essentially packing an entire browser into the app. Even with that tradeoff, it has a lot of great aspects - it's the quickest way to build a cross-platform app & it provides a great development experience - as can be testified by its usage in popular apps like VSCode, Discord, and Slack.
Revery is kind of like super-fast,native code Electron - with bundled React-like/Redux-like libraries and a fast build system - all ready to go!
Revery is built withreasonml, which is a javascript-like syntax on top ofOCaml This means that the language is accessible to JS developers.
Your apps are compiled to native code with the Reason / OCaml toolchain - withinstant startup andperformance comparable to native C code. Revery features platform-accelerated, GPU-accelerated rendering. The compiler itself is fast, too!
Revery is an experiment - can we provide a great developer experience and help teams be productive, without making sacrifices on performance?
- Consistent cross-platform behavior
A major value prop of Electron is that you can build for all platforms at once. You have great confidence as a developer that your app will look and work the same across different platforms. Revery is the same - aside from platform-specific behavior, if your app looks or behaves differently on another platform, that's a bug! As a consequence, Revery is likeflutter in that itdoes not use native widgets. This means more work for us, but also that we have more predictable functionality cross-platform!
NOTE: If you're looking for something that does leverage native widgets, check outbriskml. Another alternative is thecuite OCaml binding forQt.
- High performance
Performance should be at the forefront, and not a compromise - we need to develop and build benchmarks that help ensure top-notch performance and start-up time.
- Type-safe, functional code
We might have some dirty mutable objects for performance - but our high-level API should be purely functional. You should be able to follow the React model of modelling your UI as apure function of application state -> UI.
- Check outrevery-quick-start to get up and running with your own Revery app!
- Try out ourinteractive playground
- Read through ourdocs
We'd love your help, and welcome PRs and contributions.
Some ideas for getting started:
- Build and run Revery
- View ourRoadmap
- Help us improve ourdocumentation
- Help us buildexamples
- Help usfix bugs andbuild features
- Help uslog bugs and open issues
- Support the project onOpenCollective
- Follow us onTwitter or chat with us onDiscord!
Revery is provided under theMIT License.
Revery bundles several dependencies under their own license terms - please refer toThirdPartyLicenses.txt.
Thanks to everyone who hascontributed to Revery!
Thank you to all our backers! 🙏 [Become a backer]
revery would not be possible without a bunch of cool tech:
- ocaml made these tools possible - thanksInria &OCaml Labs!
- reasonml made revery possible - thanks @jordwalke!
- flex by @jordwalke
- briskml
- brisk-reconciler - the "native React" implementation.
- reason-sdl2
- reason-fontkit
- reason-gl-matrix
- @reason-native/console
revery was inspired by someawesome projects:
We don't have a Hot Reload yet but it is on our roadmap. In the meantime, you can check branchfeat/hot-reload to see the progression.
In the meantime @mbernat has done ascript that allow to relaunch the APP when the binary changed.
About
⚡ Native, high-performance, cross-platform desktop apps - built with Reason!
Topics
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.


