Based on the blog post, I wrote a short historical overview of reactive programming. Reactive programming seems to come in two flavours:
A resource that explains the difference well can be found in video.
Year | Month | Framework | Version | Flavour | Description | Link |
---|---|---|---|---|---|---|
1970 | Smalltalk | Observable | ValueHolder: a class that holds a mutable value and notifies its dependents whenever its value changes | Link | ||
1994 | Observable | Publisher-subscriber design pattern. | Link | |||
2003 | QT | Signals | Properties | |||
2010 | Knockout.JS | Observable | Link | |||
2010 | 11 | ReactiveX | Observable | Provides a powerful way to manage sequences of asynchronous events. Introduces operators on observables. | ||
2012 | 03 | Elm | Signals | Functional reactive programming language for declaratively creating web browser-based graphical user interfaces | ||
2012 | QT | Signals | Bindable properties | Link | ||
2013 | 10 | RxJS | Observable | Behaviour subject | ||
2014 | 01 | S.JS | Signals | Origin of modern meaning of “signals”. Introduced concept of reactive ownership | ||
2014 | 02 | Vue | Observable | All changes are collected but not processed until the effects queue is run on the next microtask | ||
2015 | MobX | Observable | Push-pull hybrid system | |||
2016 | 09 | Angular | Observable | Observables become a core part | ||
2019 | 03 | SolidJS | Signals | Simple and performant reactivity system | Link | |
2019 | 03 | Svelte | 3 | Observable | The store contract, compile away the reactivity completely. In Svelte, a behavior subject is called a writable store. | |
2022 | 12 | Leptos | Signals | A framework for WebAssembly in Rust | Link | |
2023 | 09 | Svelte | 5 | Signals | Switched from compile-time reactivity to run-time reactivity. Subscription happens inside effects. |
I wrote a library that does some things similar to what RxJS does.