A Pessimistic Viewpoint on Optimistic UI
In a typical design that follows REST call patterns, the UI makes a call to the backend and updates based on the success or failure of that call. In an optimistic UI, however, the design assumes a successful call, makes the visual and behavior updates to the UI, and then reverts if there is a failure. When used appropriately, this will provide a much faster user experience.
The article Building an Optimistic User Interface in React does a wonderful job explaining the technical implementation of an optimistic UI in React. It doesn’t take much to imagine how we could adapt that functionality for an Angular implementation, or even using Ajax. But as with so many other things in technology, just because we can doesn’t mean we should.
Having a faster UI experience is wonderful, but it’s important to consider the trade-offs:
- For most users, a small lag in an action will not be something that affects their experience on your site; they may not even notice a difference.
- The large majority of site users are non-technical actors who may be easily confused by “magic tricks” in the background that result in behavior that is not easily understood.
Let us take a look at the example from the article. The user attempts to unclick a heart on a tweet. They see the red fill clear from the heart and assume their attempts have been successful. But when they move their cursor they will find that the heart is filled again.
In my imagined scenario, they will continue to click on the heart in frustration trying to figure out what is going wrong. Then they’ll give up and decide that Twitter is stupid and broken. This may be a bit extreme, but it is not hard to understand that users would not conceive of the design used for an optimistic UI. The experience is unintuitive and only makes sense when you come at it from an engineering perspective and want to optimize your perceived application speed.
When we step outside of an engineering mindset, we will often encounter different solutions to our problems. An optimistic UI is one of those cases. While it poses an interesting pattern, the effect on user experience is not always a positive one. Technical improvements aside, the ultimate goal of any application is to satisfy customer needs. Usability is a big part of that and will always rely on having a consistent user experience that is easily understood.
When you approach design, start with the desired user experience and design to that set of outcomes rather than applying patterns such as Optimistic UI because it seems like a neat idea. At Ten Mile Square, we start by looking at the context in which the product will operate before considering how it will be implemented. Contact Us to learn more about our approach.