Backend Driven Content: why we developed a Server Driven UI framework at Nubank

Nubank's Flutter Server Driven UI framework improves development speed and control over releases, reducing time to market for new features and bug fixes

four nubankers working together in the Nubank office. They are working in a Meeting room, sitting in front each other

Written by: Rodrigo Sampaio
Reviewed by: Thiago Zagui Giacomini, Rodrigo Maximo, Eduardo Roder, Tamara Campos

Nubank has grown a lot in the past years. From only being a credit card and banking account, we started also to offer investments, insurance, loans, market place, payment platform, and so on. To support this continuous fast growth, we developed a Server Driven UI framework to enable product teams to be more efficient. 

What is Server Driven UI?

Server Driven UI is a way for building an app interface from the backend. Usually in mobile development, the app installed on a device defines the UI, and only the data shown is retrieved from a server. So, every change on the interface layout, as a new feature, a new product, a new design, or even a basic maintenance, requires a new app store release and users will need to update their app version to see those changes. This might take between one to two weeks since it depends on the app store publisher approval for going live. 

With Server Driven UI, whenever the interface needs an update or a quick fix, it will easily and instantly be in the production environment. Besides retrieving data to be displayed on the UI, the app also receives information about how to build, display the UI and react to user interactions. 

A/B tests and development

This framework actually gives the option to control the roll out of new features. So it’s not mandatory to roll out a feature for all the customers at once. Thus, facilitating the creation and execution of A/B tests. 

When app features are developed on the traditional release mode, changes take weeks to be widely deployed until the point all customers update their apps, unless the changes were envisioned ahead of time. More often than not, some copy changes are accounted for, but full layout or positioning requires a lot of future prediction of the roadmap.

Server Driven UI features are fully customizable, which allows product decisions to be taken on the same day. 

This is useful both for scopes with high uncertainty, where iterating fast is key to understand the product, or when there is a mature product, and it’s necessary to run experiments to increase conversion.

Server Driven UI framework advantages

To sum up and list more advantages, the Server Driven UI framework: 

  • Enable quick and instant fix to production environment;
  • Give control over the roll out to customers;
  • Facilitate the creation and execution of A/B tests;
  • Empower product decisions;
  • Reduce the application size;
  • Avoid new feature leaks;
  • Allow the possibility of creating common Server Driven UI components.

Building Blocks Instructions

Backend Driven Content (BDC) platform is the name of our internal Server Driven UI framework at Nubank. We usually say that BDC works as a Lego manual for the Nu app. It tells how to use the “building blocks” available to build the interface to the end user. So, when developing with BDC, our developers are basically writing these “Lego manuals”.

As Nubank uses Flutter for mobile development, BDC building blocks use Flutter components under the hood while it’s built on the development language that all Nubank uses, Clojure. We have a dedicated team of engineers that develop and maintain the BDC platform. Currently, Backend Driven Content engineers offer a complete platform for the product teams:

  • Services that support the platform;
  • Tools to assist developers;
  • Constant performance and reliability optimizations in the backend;
  • Support for teams that adopt the framework.

Backend Driven Content also complies with Nu’s Design System. So, every screen or flow built using BDC, is correctly following Nu’s Design System patterns and standards. This guarantees the UI consistency all over the app. 

The most common question we hear when advocating internally for BDC adoption to other teams is: Does it violate app stores rules? The answer is no 一 because all app stores accept dynamic content. What you can’t do, whether using Server Driven UI or not, is mislead customers into downloading an app that will become a completely different one, changing its product category. And that is not the case.

Backend Driven Content Success Path

BDC internal use cases keep on growing and overtime we have more teams interested in building new screens and flows using it. To keep track on that path, we are continuously investing to make Backend Driven Content more robust and efficient to meet more requirements from different teams and use cases.  

Besides the continuous evolution of the platform, collaboration is an important key to the success of BDC. So, while the Backend Driven Content engineers team work to bring improvements and unlock new features, we encourage developers across Nubank to collaborate with the BDC platform. This way, we manage to bring together an internal community of developers that spread the word about BDC and also contribute to the BDC platform development, which the whole company will benefit from.

Why is documentation important?

Documents are usually the first point of contact with a developer and we are constantly updating and creating helpful articles for the BDC community.

On that note, it’s important to point out that the BDC engineering team is accountable not only for building and maintaining the framework, but also for supporting BDC learning across the company. The team has become an internal reference of support to a platform by actions such as:

  • Running monthly mob sessions;
  • Writing helpful documents;
  • Communicating new features and enhancements;
  • Contributing to product teams discussions to share the platform capabilities.

Developer advocate role

We recently created the first developer advocate role at Nubank to be an internal spokesperson for the BDC platform. In summary, this person helps us to understand the main pain points from the developers side, engage the community and bring insights for improving BDC development experience.

What we’ve learned so far

Backend Driven Content is almost two years old now and, since the first MVP, it has accomplished a lot. Currently, almost 70% of new screens and flows built at Nubank use BDC. 43% of the app already use it, and these numbers keep on growing.

The feedback that BDC receives from product teams are awesome. They commonly highlights the following advantages: 

  • It’s possible to control the rollout for customers, being able to perform it at a desirable pace;
  • Easy to make minor adjustments on a screen or a flow that is already in production; 
  • Fast to implement improvements in production within just one day;
  • Time-saving development.

The Server Driven UI framework growth at Nu was ultimately possible due to the company’s culture. People at Nu are driven to change the status quo, being very receptive to new ideas, embracing changes and experimenting different ways to create products loved by our customers. This helped not only the BDC usage to grow, but also to build a strong sense of community among the BDC platform users. 

Enter your name