Handling UI elements at client side

Greetings!


Has anyone tried to handle the UI element changes at the client side itself instead of using platform's default behavior where everything gets compiled on the server and then renders on the UI. For example, if I want to change a value of the text-box dynamically with code, my client side code should handle this. The server calls are inevitable otherwise and they impact the performance. Even the AJAX refresh is a post call which sends across the viewstate to server and doesn't feel like an AJAX in case of complex pages. Should platform look to generate code which can transfer JSON data from client to server so that the server calls can be asynchronous and user can still continue to use the application while the server calls are being made?

Hi Akshay,

For Web Apps, the Platform uses a client-server model, so inevitably this means communication back and forth. If you want to solve that differently, you need a lot of JavaScript, which would defeat the purpose of a low-code tool.

On Mobile, things are different: the Platform code is compiled to JavaScript, and you can easily extend that with your own, even though that is indeed not very low-code...

Hello Akshay, 

1. Ajax is asynchronous. 

2. Any server call will have to send the views tate, so you need to adopt best practices to handle this aspect, and for sure complex pages are not even good practices, not to mention usually bad UI/UX. 

3. A lot of people have being doing OutSystems applications and the default practices, in general, do not cause performance problems. Again, adopting the best practices help a lot in here. 

4. The biggest advantage of the platform, IMHO, is exactly that you don't need to think like if you were writing code for an old 8086 with 640K of memory. It allows for easy maintenance of the code, scalability, etc. 

You still can work client side through javascript if after adopting all the best practices you still have performance problems due your code, with the cost of increasing complexity and maintenance costs. 

So, no, I don't think so.

Lets avoid creating problems for ourselves increasing complexity where it is not required. 

Just my opinion. 

Cheers

Hi Eduardo,


Not all customers would agree to the UI/UX suggestions and at times they are very specific with the UI/UX even though they are really complex. I am not of the opinion to code things on my own and defeat the purpose of using OutSystems at first place. However, if platform can generate the code such that we get HTML templates, Client and Server side code then it can improve things. Transfer of viewstate/pages versus json data can make a difference. 

Kilian Hekhuis wrote:

Hi Akshay,

For Web Apps, the Platform uses a client-server model, so inevitably this means communication back and forth. If you want to solve that differently, you need a lot of JavaScript, which would defeat the purpose of a low-code tool.

On Mobile, things are different: the Platform code is compiled to JavaScript, and you can easily extend that with your own, even though that is indeed not very low-code...


Thank you, Kilian. 

Surely you can write your own code and handle certain things at client side but when you try mixing it with outsystem approach them there might be chance of spending good amount of time in making it working. 


Akshay Puri wrote:

Not all customers would agree to the UI/UX suggestions and at times they are very specific with the UI/UX even though they are really complex. I am not of the opinion to code things on my own and defeat the purpose of using OutSystems at first place. However, if platform can generate the code such that we get HTML templates, Client and Server side code then it can improve things. Transfer of viewstate/pages versus json data can make a difference. 

Yes, there are clients that are stubborn. They usually do not understand how things work. It's the company job to guide them.

But OutSystems is good at doing what it does exactly because it does not provide what you are asking for. As Kilian said, this is a LOW code platform. The idea is to deliver very fast and keep maintenance complexity at a minimum. Deal with JavaScript is not LOW code. It is complex, error-prone and causes much more trouble than it solves. So, you should use ONLY in very specific situations when there is a REAL impact on performance.

I think in the future, eventually (just guessing here for the last 3 years, since the Mobile applications were launched), OutSystems will launch a version unifying Web and Mobile programming models, and so you will have more flexibility. But IF this happens, for sure they will not do what you are proposing, as this would completely break a very fine machine because of some edge use cases.

Again, this is only my opinion.

Cheers.

Excellent answer Eduardo Jauch