

Developers started writing significant amounts of code that was executed in the browser before a request was sent to the server. We needed a quick, snappy, and responsive interaction with immediate impact on the UI.

Reloading the whole page, when just one part of it changes, was ineffective and slow. However, web applications grew in their complexity and user demands of the UI/UX were advancing as well. Applications did not have to worry about the user state and each view could be regenerated by sending a new request to the server. Subsequent user actions (such as clicks, form submissions, etc.) would trigger the same flow again. The browser would send a request to the server, all application logic would be executed on the server, and a full HTML view would be sent back to the browser for presentation to the user.

Not that long ago, web applications had a much simpler data flow.
