Strange Loop

Sept 30 - Oct 2, 2021


Union Station


St. Louis, MO

Register for 2021!

Janus: Easy Complex UI with Declarative FRP

It has been gratifying to watch JS web development embrace functional paradigms and data flows in the past half decade or so. In adopting FRP-like semantics, React, Vue, and others have moved the needle on development and maintenance, clarifying data handling and embracing functional means for defining a user interface. However, while their particular blend of old and new paradigms and balance of familiarity to mainstream developers serve many purposes, there exist other approaches that go even further.

Janus ( is a plain-JS framework started in 2013 that makes complex user interfaces safe and easy to realize. Modular but opinionated, Janus is built on a strong formal base but provides familiar building blocks. Its emphasis on time-independence push it in almost more of a declarative than functional direction.

Janus provides data primitives (Varying, List, Map, and many others) with common and familiar interfaces, but which work declaratively: x is always this mapping of y, not x is right now this mapping of y. On top of this Janus builds powerful tools for context-free programming, a flexible and extensible declarative View and Template framework based on composition, established means to render interfaces on both client and server with the same code, and much more.

Through all this, Janus stays true to its core ideals. It is a tiny toolkit of independent customizable parts which work brilliantly together to create a simple, humanist development experience.

Issa Tseng

Issa Tseng

Issa lives in Seattle, WA, where they work on music, words, video, technology for the developing world, and silly things like this.