Most routine steps are executed on the server. They retrieve or update the necessary server data, perform business logic and calculations, and then your application’s screen is re-rendered with the latest server information.
However, you can also specify client-side actions (like showing a hidden widget, for example), which do not make requests to the server. Client-side actions are grouped together in the list of plugins and are clearly labeled as "Client-side".
Usually, your routine will either have all client-side or all server-side steps. In other words, it is either a client-side routine or a server-side routine. However, sometimes it may make sense to mix the two types of steps. For example, this would allow you to enforce client-side validation or to update client-side values before they are sent to the server.
For event-driven routines, all client-side steps will occur before control is passed to the server, regardless of how they are arranged in the routine. For screen initialization routines, the server-side steps occur before client-side steps.
The start routine is a server-side only routine and cannot utilize client-side steps. To execute client-side steps, use the initial routine property on a screen.