Streamline development with Custom DevTools

December 09, 2020 ,

Today, DevTools are ubiquitous when developing web apps because of their ability to inspect, debug, modify, automate, and more. While it can sometimes seem that having many distinct DevTools is unnecessary, each tool falls at a different point on the spectrum of developer needs. As needs become more specialized and focused, so do the tools…. Read more

Building a truly accessible clickable div

October 01, 2020 , ,

When developing features at Wealthfront, it is somewhat common to receive a design mock where an entire card is clickable. One example is the account card on a client’s dashboard. The link itself is highlighted by our purple primary text, and clicking it takes you to the corresponding Wealthfront account page. In fact, clicking anywhere… Read more

Visual Regression Testing on Android

June 12, 2020 ,

Recently, we found visual regressions in our app after we shipped the app to production on the play store and that is one of the last places you want to catch a bug. We wanted to improve when we detect these bugs and address them way earlier in the development process. There are a couple… Read more

Android App Modularization at Wealthfront (Part 3)

In the previous blog post, we looked at how we started with modularization and refactored our existing code into the legacy module which was ready to be modularized into smaller infrastructure and feature modules. In this blog post, we will go in detail about how we’d refactored our infrastructure modules with the help of interfaces. … Read more

Android App Modularization at Wealthfront (Part 2)

In the previous blog post, we looked at how the project was initially set up, and now we will take a look at how we started organizing features into Gradle modules. To ensure a consistent bucketing strategy throughout the migration period, we decided that it would be ideal to place any new code inside dedicated… Read more

Android App Modularization at Wealthfront (Part 1)

App modularization is the process of spitting a monolithic architecture into much smaller components with high cohesion and low coupling. In layman’s terms, chopping down a very large codebase into smaller digestible (ideally independent) pieces that share a common responsibility. Our main goal was to improve the incremental build times of the application to boost… Read more