Elliott Chen logo single outlinedElliott Chen logo solidElliott Chen logo text

ui = f(data)(state)

by Elliott Chen, a developer

Dan's tweet on ui = f(data)(state) prompted reflection on the evolution of UI paradigms, particularly the transition from DOM manipulation in the jQuery era to functional programming in modern web development.

During the jQuery era, developers leveraged its simplicity and cross-browser compatibility for direct DOM manipulation using imperative statements. This constituted the prevailing paradigm. However, the increasing demand for dynamic UIs led to the rise of frameworks like React, Vue, and Angular, advocating a declarative approach where UI is described in terms of desired state. This paradigm shift is encapsulated by the formula ui = f(data)(state), emphasizing functional programming principles for enhanced maintainability, scalability, and clearer separation of concerns.

In a recent blog post , Dan delves into the debate surrounding the runtime environment for React components – client-side or server-side. The author presents arguments for both scenarios, highlighting the advantages of client-side components in achieving instantaneous interactivity and server-side components in efficiently processing data. The challenge at hand is to devise a method for effectively splitting components between client and server environments, capitalizing on the strengths of each approach.

Adding my perspective, I believe that regardless of the technology employed, UX remains the guiding principle, and the rendering strategy serves that principle. Amidst the current functional programming era, developers are embracing the ui = f(data)(state) formula to construct sophisticated, modular, and scalable UIs. This departure from direct DOM manipulation signals a future dominated by the functional paradigm. To prepare for forthcoming developments, developers are advised to stay informed about emerging technologies, refine their functional programming skills, and adopt modular development practices. Navigating these shifts positions developers at the forefront of crafting state-of-the-art digital experiences.


In the paradigm of declarative programming, ui = f(date)(state) will always be the fundamentals.

More articles

Consistently bad is better than inconsistently good

Ultimately, the quintessential quality that defines a stellar engineer is unquestionably consistency.

Read more

Oh My Developer Experience

What I think DX is and how to improve it in a short-term and a long-term run.

Read more

Let’s talk.

My location

  • Elliott Chen | Studio
    Pudong APT #213
    Shanghai, China