User interfaces

History of reactive programming

Based on the blog post, I wrote a short historical overview of reactive programming. Reactive programming seems to come in two flavours:

  • observables
  • signals

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.

Personal contribution

I wrote a library that does some things similar to what RxJS does.