{"id":13394867,"url":"https://github.com/revery-ui/revery","last_synced_at":"2025-05-14T06:12:24.821Z","repository":{"id":37932597,"uuid":"149477929","full_name":"revery-ui/revery","owner":"revery-ui","description":":zap: Native, high-performance, cross-platform desktop apps - built with Reason!","archived":false,"fork":false,"pushed_at":"2022-02-13T22:31:10.000Z","size":7062,"stargazers_count":8068,"open_issues_count":114,"forks_count":197,"subscribers_count":78,"default_branch":"master","last_synced_at":"2025-05-07T08:44:30.492Z","etag":null,"topics":["app","cross-platform","desktop","desktop-apps","electron","native","ocaml","react","reason","reasonml","ui"],"latest_commit_sha":null,"homepage":"https://www.outrunlabs.com/revery/","language":"Reason","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/revery-ui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"open_collective":"revery"}},"created_at":"2018-09-19T16:09:22.000Z","updated_at":"2025-05-06T20:50:26.000Z","dependencies_parsed_at":"2022-07-16T09:30:48.429Z","dependency_job_id":null,"html_url":"https://github.com/revery-ui/revery","commit_stats":null,"previous_names":["bryphe/revery"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revery-ui%2Frevery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revery-ui%2Frevery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revery-ui%2Frevery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revery-ui%2Frevery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/revery-ui","download_url":"https://codeload.github.com/revery-ui/revery/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254080493,"owners_count":22011416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app","cross-platform","desktop","desktop-apps","electron","native","ocaml","react","reason","reasonml","ui"],"created_at":"2024-07-30T17:01:34.487Z","updated_at":"2025-05-14T06:12:24.766Z","avatar_url":"https://github.com/revery-ui.png","language":"Reason","readme":"\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://www.outrunlabs.com/revery\" title=\"Revery\"\u003e\n\t\t\u003cimg src=\"./assets/logo.png\" alt=\"Logo\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cspan\u003eBuild \u003cb\u003enative\u003c/b\u003e, \u003ci\u003ehigh-performance\u003c/i\u003e, \u003cb\u003ecross-platform\u003c/b\u003e desktop apps with \u003ca href=\"https://reasonml.github.io\"\u003ereason!\u003c/a\u003e\u003c/span\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/revery-ui/revery/actions\"\u003e\u003cimg src=\"https://github.com/revery-ui/revery/workflows/Validate%20Pull%20Request/badge.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://dev.azure.com/revery-ui/revery/_build/latest?definitionId=2?branchName=master\"\u003e\n    \u003cimg src=\"https://dev.azure.com/revery-ui/revery/_apis/build/status/revery-ui.revery?branchName=master\" alt=\"Build Status\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://badge.fury.io/js/revery\"\u003e\n    \u003cimg src=\"https://badge.fury.io/js/revery.svg\" alt=\"npm version\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://discord.gg/4pxY5Cp\"\u003e\n    \u003cimg src=\"https://img.shields.io/discord/526111832478449695.svg\" alt=\"Join the chat on discord!\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#backers\"\u003e\n    \u003cimg src=\"https://opencollective.com/revery/backers/badge.svg\" alt=\"Backers\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://www.outrunlabs.com/revery/playground\" title=\"Playground\"\u003e\n\t\t\u003cimg src=\"./assets/screenshot.png\" alt=\"Slider components\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n:construction: __NOTE:__ Revery is a work-in-progress and in active development! :construction:\n\nTo get a taste of Revery, check out our JavaScript + WebGL build on the [playground](https://outrunlabs.com/revery/playground). For the best experience, though, you'll want to try a [native build](https://github.com/revery-ui/revery/wiki/Building-\u0026-Installing).\n\n## Motivation\n\nToday, [Electron](https://electronjs.org/) 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 \u0026 it provides a great development experience - as can be testified by its usage in popular apps like VSCode, Discord, and Slack.\n\nRevery 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!\n\nRevery is built with [reasonml](https://reasonml.github.io), which is a javascript-like syntax on top of [OCaml](https://ocaml.org) This means that the language is accessible to JS developers.\n\nYour apps are compiled to native code with the Reason / OCaml toolchain - with __instant startup__ and __performance comparable to native C code.__ Revery features platform-accelerated, GPU-accelerated rendering. The compiler itself is fast, too!\n\nRevery is an experiment - can we provide a great developer experience and help teams be productive, without making sacrifices on performance?\n\n### Design Decisions\n\n- __Consistent cross-platform behavior__\n\nA 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 like [flutter](https://flutter.io) in that it __does not use native widgets__. This means more work for us, but also that we have more predictable functionality cross-platform!\n\n\u003e __NOTE:__ If you're looking for something that does leverage native widgets, check out [briskml](https://github.com/briskml/brisk). Another alternative is the [cuite](https://github.com/let-def/cuite) OCaml binding for [Qt](https://github.com/let-def/cuite).\n\n- __High performance__\n\nPerformance 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.\n\n- __Type-safe, functional code__\n\nWe 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 a _pure function_ of application state -\u003e UI.\n\n## Getting Started\n\n- Check out [revery-quick-start](https://github.com/revery-ui/revery-quick-start) to get up and running with your own Revery app!\n- Try out our [interactive playground](https://www.outrunlabs.com/revery/playground/)\n- Read through our [docs](https://www.outrunlabs.com/revery/api/revery/)\n\n## Contributing\n\nWe'd love your help, and welcome PRs and contributions.\n\nSome ideas for getting started:\n- [Build and run](https://github.com/revery-ui/revery/wiki/Building-\u0026-Installing) Revery\n- View our [Roadmap](https://github.com/revery-ui/revery/wiki/Roadmap)\n- Help us improve our [documentation](https://github.com/revery-ui/revery/blob/master/src/index.mld)\n- Help us build [examples](https://github.com/revery-ui/revery/tree/master/examples)\n- Help us [fix bugs](https://github.com/revery-ui/revery/issues?utf8=%E2%9C%93\u0026q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22+label%3A%22bug%22) and [build features](https://github.com/revery-ui/revery/issues?utf8=%E2%9C%93\u0026q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22++-label%3Abug)\n- Help us [log bugs and open issues](https://github.com/bryphe/revery/issues/new)\n- Support the project on [OpenCollective](https://opencollective.com/revery)\n- Follow us on [Twitter](https://twitter.com/reveryui) or chat with us on [Discord](https://discord.gg/UvQ2cFn)!\n\n## License\n\nRevery is provided under the [MIT License](LICENSE).\n\nRevery bundles several dependencies under their own license terms - please refer to [ThirdPartyLicenses.txt](./ThirdPartyLicenses.txt).\n\n## Contributors\n\nThanks to everyone who has [contributed](https://github.com/revery-ui/revery/graphs/contributors) to Revery!\n\n## Backers\n\nThank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/revery#backer)]\n\n\u003ca href=\"https://opencollective.com/revery#backers\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/revery/backers.svg?width=890\"\u003e\u003c/a\u003e\n\n## Built with Revery\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"https://v2.onivim.io/\"\u003e\n    \u003cimg src=\"./assets/onivim-logo.png\" alt=\"Onivim 2\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n## Special Thanks\n\n`revery` would not be possible without a bunch of cool tech:\n- [ocaml](https://ocaml.org) made these tools possible - thanks [Inria](http://gallium.inria.fr/) \u0026 [OCaml Labs](http://ocamllabs.io/)!\n- [reasonml](https://reasonml.github.io) made revery possible - thanks @jordwalke!\n- [flex](https://github.com/jordwalke/flex) by @jordwalke\n- [briskml](https://github.com/briskml)\n    - [brisk-reconciler](https://github.com/briskml/brisk-reconciler) - the \"native React\" implementation.\n- [reason-sdl2](https://github.com/revery-ui/reason-sdl2)\n    - [SDL2](https://www.libsdl.org)\n    - [stb-image](https://github.com/nothings/stb)\n- [reason-fontkit](https://github.com/bryphe/reason-fontkit)\n    - [freetype2](https://www.freetype.org)\n    - [harfbuzz](https://www.freedesktop.org/wiki/Software/HarfBuzz)\n- [reason-gl-matrix](https://github.com/bryphe/reason-gl-matrix)\n    - [gl-matrix](http://glmatrix.net)\n    - [glm](https://glm.g-truc.net/0.9.9/index.html)\n- [@reason-native/console](https://github.com/facebookexperimental/reason-native/tree/master/src/console)\n\n`revery` was inspired by some __awesome projects:__\n- [react-native](https://facebook.github.io/react-native/)\n- [ReactMini](https://github.com/reasonml/reason-react/tree/master/ReactMini)\n- [cuite](https://github.com/let-def/cuite)\n- [wall](https://github.com/let-def/wall)\n- [elm](https://elm-lang.org/)\n- [reprocessing](https://github.com/Schmavery/reprocessing)\n\n# Hot reload\n\nWe don't have a Hot Reload yet but it is on our roadmap. In the meantime, you can check branch [feat/hot-reload](https://github.com/revery-ui/revery/tree/feat/hot-reload) to see the progression.\n\nIn the meantime @mbernat has done a [script](https://gist.github.com/mbernat/abf651653c123374037c27377f41d0a0) that allow to relaunch the APP when the binary changed.\n","funding_links":["https://opencollective.com/revery"],"categories":["Reason","OCaml","\u003ca name='Repositories'\u003e\u003c/a\u003eRepositories","Framework","前端开发框架及项目","Tools","工具篇"],"sub_categories":["\u003ca name='NativeUI'\u003e\u003c/a\u003eNative UI","其他_文本生成、文本对话","WebTools","平台工具\u0026框架"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frevery-ui%2Frevery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frevery-ui%2Frevery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frevery-ui%2Frevery/lists"}