kefirjs/kefir
A Reactive Programming library for JavaScript
{ "createdAt": "2014-05-04T14:52:16Z", "defaultBranch": "master", "description": "A Reactive Programming library for JavaScript", "fullName": "kefirjs/kefir", "homepage": "https://kefirjs.github.io/kefir/", "language": "JavaScript", "name": "kefir", "pushedAt": "2024-06-20T00:40:05Z", "stargazersCount": 1881, "topics": [ "frp", "functional-programming", "javascript", "kefir", "observable", "reactive", "stream" ], "updatedAt": "2025-11-10T21:57:25Z", "url": "https://github.com/kefirjs/kefir"}Kefir — is an Reactive Programming library for JavaScript inspired by Bacon.js and RxJS with focus on high performance and low memory usage.
For docs visit kefirjs.github.io/kefir. See also Deprecated API docs.
Installation
Section titled “Installation”Kefir available as NPM and Bower packages, as well as simple files download.
npm install kefirbower install kefirDownload
Section titled “Download”See downloads section in the docs.
Also available on jsDelivr.
Browsers support
Section titled “Browsers support”We don’t support IE8 and below, aside from that Kefir should work in any browser.
The NPM package ships with Flow definitions. So you can do something like this if you use Flow:
// @flow
import Kefir from 'kefir'
function foo(numberStream: Kefir.Observable<number>) { numberStream.onValue(x => { // Flow knows x is a number here })}
const s = Kefir.constant(5)// Flow can automatically infer the type of values in the stream and determine// that `s` is of type Kefir.Observable<number> here.foo(s)Development
Section titled “Development”npm run prettify # makes source code pretty (you must run it before a PR could be merged)npm run build-js # builds js bundlersnpm run test # runs all the checksnpm run test-only # runs only unit tests without other checksnpm run test-debug # runs tests with a chrome inspector connected to the node processnpm run build-docs # builds the documentation html file