
Cycle.js
A JavaScript framework for building apps with reactive streams and pure functions.
- Stars
- 10.2k
- Forks
- 424
- Licence
- MIT
- Language
- TypeScript
- Last update
- 5 months ago
- Type
- Framework
What it is
Cycle.js is a JavaScript framework for building web apps in a functional, reactive style. Your app is written as a pure function that takes input streams (such as user events or HTTP responses) and returns output streams, which keeps side effects separated and the code easier to predict. The project is split into small packages, such as @cycle/dom and @cycle/run, that you combine as needed.
- Build a browser UI whose state is driven by streams of user events
- Make HTTP requests with @cycle/http and feed responses back into the UI
- Structure an app as isolated components using @cycle/isolate
Great for
- Developers who already know reactive streams such as RxJS, xstream, or most.js
- Teams that want explicit, testable data flow in front-end code
- Developers interested in functional programming applied to user interfaces
Not ideal for
- Beginners looking for a large, widely documented ecosystem, since the README points mainly to official docs and a chat channel
- Projects that need a mainstream framework with many off-the-shelf components, because the README does not describe one
How to get it
- 1
Install with a package manager
You'll need: Node.js and npm
Clone the repository
git clone https://github.com/cyclejs/cyclejs.git - 2
Run it
- Read the official documentation at cycle.js.org
- Install the packages you need, such as @cycle/run and @cycle/dom, from npm
- Write a main function that takes sources and returns sinks
- Run it with @cycle/run and a DOM driver
- 3
Get the most out of it
- Use @cycle/isolate to keep components' state separate
- Pick a stream library (RxJS, xstream, or most) that matches your team's experience
- Use @cycle/http for network requests as a driver rather than calling fetch inside components
Downloads
Strengths
- Side effects are pushed to the edges through driver packages, which the README presents as the core design
- Built from separate packages, so you install only the parts you need
- MIT licensed and actively maintained, with a recent push to the repository
Trade-offs
- Requires understanding of reactive streams before the code feels natural
- The README is short and defers most learning to the external documentation site
- Release is listed only as a tag with no downloadable binaries, so it is used as a library through npm
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| cyclejs (this) | 10.2k | Framework | advanced | 5 months ago | Developers who already know reactive streams such as RxJS, xstream, or most.js |
| react | 252k | Library | intermediate | 6 days ago | Developers building interactive web interfaces with JavaScript |
| vue | 212k | Library | intermediate | 2.1 years ago | Maintaining an existing Vue 2 application that cannot yet be upgraded |
| textual | 37.6k | Framework | beginner | 27 days ago | Python developers who want a terminal app with buttons, tables and forms |
| slate | 31.7k | Framework | advanced | 8 days ago | Developers building a custom rich text editor inside a web app |
| langchain | 149k | Framework | intermediate | 4 days ago | Python developers building LLM-powered applications |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.