For years server-side build systems have helped developers compile their projects, execute unit tests, create notifications, and deploy build artifacts, as well as many other tasks. The client-side (browser) was left relatively unattended as the predominant method of communicating from the client to the server was using the request-response design pattern.

With request-response HTML forms are submitted to the server for processing, and new HTML is returned. This cycle repeats for the duration of the user’s workflow. JavaScript was introduced shortly thereafter to perform form field validations, such as ensuring values for required fields were supplied. This technique helped reduce the number of server-side requests and, in addition, provided a snappier, more responsive, experience for the user.