Accelerating new experiences for eCommerce leader
Challenge
As a company that uses an app as a primary channel of customer interaction, Slickdeals needs that app to be reliable and pleasant to users across both iOS and Android, while also maintaining an effective update framework with low tech debt and optimal performance.
Solution
Previously, the company’s native development teams had been split apart in methodology and maturity. Unifying the teams and leveraging economies of scale doubled the rate of releasing new features with their existing team. Slickdeals participated in a research project to weigh the pros and cons across their cross-functional needs for both React Native and Flutter to find the right solution moving forward. After a publicly-released bake off between React Native and Flutter, Slickdeals chose to move forward with Flutter.
Changing to a new multi-platform development paradigm is a major shift, and is best handled with expert partners. Slickdeals selected Very Good Ventures to help mitigate risk while rebuilding their native app from the ground up in Flutter. To ensure the optimal app performance that Slickdeals was accustomed to with their native apps, VGV also partnered with monitoring and observability platform Embrace to develop their Flutter SDK. This ensured Slickdeals’ continued access to Embrace mobile observability and the level of confidence that they were accustomed to releasing with native.
Impact
The Slickdeals team is now a fully engaged part of the Flutter ecosystem, with drastically lessened tech debt and applied Very Good Ventures' approach to writing "boring" (read: accessible) code. This solid foundation will help the app thrive for years and updates to come. The team is now able to operate faster to release new features to market, having to only write most features once.
About Slickdeals
Slickdeals has spent more than 20 years as a community of real shoppers helping other shoppers find, evaluate and share the most up-to-date online deals and coupons from all the top retailers. It has the dual distinction of being both a trusted, long-tenured business and a born-digital company, reaching its audience through its website, browser extension and its popular mobile app.
The usability and experience of that app are absolutely essential for the success of Slickdeals as a brand — maintaining a loyal audience today requires online brands to be mobile-friendly. The Slickdeals team therefore always needs to have quick and efficient workflows and processes in place to deliver bug fixes or new features to the app.
"Organizations with apps as a central part of their business models are increasingly needing to re-evaluate their traditional approach of a native app on both iOS and Android" said Slickdeals Director of Engineering Christopher Gulliver. "For some projects, a native app is unavoidable, but I've found that is becoming increasingly rare. We wanted to take a page out of the world of video games, and leverage one platform to deploy both of our app experiences. It's much better to get a scalable platform for about half the work, so that we can really focus on the user's experience, not just implementation.
The challenge: Development divisions and difficulties
The Slickdeals app has changed and evolved several times since its initial launch. Both versions of the app had changed languages at various points, with the iOS version migrating from C to Swift and the Android version changing from Java to Kotlin.
Over time, the app accumulated tech debt. Team changes, development strategy shifts, and other choices through the years made it difficult for Slickdeals to efficiently roll out new code.
Under the most recent development process, the iOS and Android teams were each free to create features and bug fixes, which opened up speed and functionality gaps. One team would almost always roll out a new update before the other, thwarting the company's desire for day-and-date updates and a cohesive experience for users.
"We always struggled to do that simultaneous release," said Gulliver. "One team would be really focused on how to do things right, whereas the other team would be pretty clever and do it quickly. Both had their trade-offs and I wanted to grab both those strengths associated with those trade-offs and bring them into a unified team."
Understanding that the split between teams and methodologies was unsustainable, Slickdeals searched for a way to unify its codebase. This process came with some non-negotiables. For example, the mobile monitoring and observability platform Embrace had become an essential tool for Slickdeals' engineers, so any proposed solution would need to include Embrace support.
The solution: Moving forward with Flutter
The Slickdeals team performed due diligence, assessing potential multi-platform frameworks that could enable the unification of its app codebase going forward. In the end, the decision came down to a choice between Flutter and React Native.
The decision to go with Flutter was largely tied to trends and sentiments in the development space. Flutter has a strong reputation among developers. Since the framework's introduction, companies and their engineers have been gravitating toward Flutter, giving it a feeling of positive momentum. Considering that some of a platform's strength comes from its ability to sustain an active community of users and feature developers, this positive sentiment has a positive material impact.
"We were looking for a platform that we could leverage and sustain for 5+ years," Gulliver explained. "When we looked at the numbers it was clear that React Native was losing ground, and the traction Flutter was making was astounding. The community was vibrant and exciting, and more than that, they seemed to be solving a lot of the challenges the other cross-platform efforts struggled with."
Changing to a whole new multi-platform development paradigm is a major shift, and is best handled with an expert partner. Slickdeals chose Very Good Ventures for this role because of VGV's core values: A commitment to simplicity in both codebase and development practices, as well as a dedication to doing things the right way.
"We were sitting on a mountain of tech debt. We wanted to make sure that if we were going to be doing the effort of effectively porting features, not code, to Flutter, that we were writing the new code correctly. That's where a lot of the core values that Very Good Ventures had resonated with us," Gulliver observed.
There was one complication: Embrace, the tool Slickdeals' engineers needed for visibility, was not compatible with Flutter. This quickly turned into an opportunity. Introduced by Slickdeals, VGV and Embrace began collaborating on an Embrace Flutter SDK.
"The real power of Embrace is being able to dig in and understand what's causing the crash — what was the call stack — in a human-readable way," said Gulliver. "How often is this happening? When a user experiences it, what were they doing beforehand? You're really getting that full in-depth picture of what's happening. We've been using that for a long time. One of the things we were looking at when we were evaluating Flutter as a whole is: Do our existing services have a path to Flutter?"
The Embrace team was eager to expand their tooling capabilities to Flutter, and dove into the project. Embrace created a proof of concept for the SDK, and in three weeks, VGV made changes to get the POC in line with its best practices, getting the new version into beta in approximately three weeks.
"Very Good Ventures was very responsive to anything that came up, and made sure to get our take on what the API would probably look like and the important parts that we needed up front, and then down prioritizing the little things that could wait until a bit later," Gulliver said.
With Embrace support now available, the project could turn to its main focus: Moving the many features of the Slickdeals app to Flutter. These features shifted on a gradual schedule as they started with the foundation. They wanted to make sure initialization and core components were done right. Some features needed to remain native, at least for the moment, and were wrapped in Flutter code to become part of the new multi-platform ecosystem. The flexibility and benefits of Flutter quickly became apparent.
It wasn’t all a smooth journey, and they’re still not quite done yet. Slickdeals has faced several challenges throughout the process as the team size and composition shifted, and the implications of some early decisions became clear.
“Platform views are certainly a trade off. In some ways they’re a super power, they give you the ability to lift the entire native experience and wrap them in what amounts to a Flutter widget. To apply a popular quote; with great power comes great responsibility. Looking back, I wish we would have used less platform views to get the app out. The legacy code often required some interesting and time consuming contracts for the platform views to function properly due to the complexity of the underlying native code. This ended up costing us more time than a port would have” Gulliver reflects, “If I had to offer one piece of advice, it would be to seriously consider committing to porting the view to Flutter from the outset, especially if there’s any possibility that an external request might force you to go back and update native code.”
A few developers had difficulties leaning into the change from native to Flutter and they found themselves less able to contribute. Flutter, like any other opportunity, you get out of it what you put into it. “Flutter is not a silver bullet, but it’s the closest thing we’ve found so far,” shared Gulliver.
The results: A steady stream of backend improvements
Throughout the process of collaboration with Very Good Ventures, the Slickdeals team found it easy to collaborate with the external experts — the groups quickly learned to act as one.
"When we brought Very Good Ventures on to help us migrate from the native apps to Flutter, they were team members for all intents and purposes. When they joined, we onboarded them like team members, they were in all of our team calls, and they shared in our team culture. We made sure they were comfortable in that space," Gulliver explained. "At one point, I asked one of my team members for their opinion on how the integration was going, and they said, 'I don't know where our team ends and their team begins.'"
Working on the Slickdeals app is now significantly simpler than it was in the era of uneven parallel development. As it is, the newly-unified development team is benefiting from using one tool for key processes such as state management.
The Slickdeals engineers are achieving important benchmarks, such as implementing a new standard of 80% automated test coverage for dart code. In addition to these improvements, there are plenty of familiar factors still in play, including Embrace — the monitoring and observability platform is still providing a comprehensive, efficient view of the codebase.
In fact, with the new Embrace SDK, the tool has become a fully featured part of the Flutter ecosystem, reaching not just Slickdeals but any organization that wants to use it. The SDK incorporates learnings from similar Flutter packages to make it easy for engineers to use, while also using APIs to deliver key features such as page view and moment tracking, allowing it to serve as a go-to tool for Flutter development.
The internal Slickdeals team, once split between iOS and Android, can now work as a unified team. The split during the native-development era involved one team that embraced "clever" methods and one that skewed "cautious." One team would deploy new features to production first, while the other was slower, but with more stability. By merging the teams and empowering them with a new set of norms and best practices, Slickdeals is able to get the best of both worlds.
The developers are now full participants in the rich Flutter ecosystem, with all the solutions, actions, APIs and plugins that come along. The Slickdeals app is poised to remain the company's go-to touchpoint for years to come.
“We are thankful for the partnership we formed with VGV. They were always there for us, helping to train our team and adjust team size or composition based on our needs. They were even there months after our contract ended, willing to help out in any way they could. Our teams bonded in a way I’ve never seen with an outside agency.” Gulliver shared.
What's next: A future with less tech debt
Freed from the added costs and delays associated with unchecked tech debt, the Slickdeals team is free to innovate. All new developers are being trained in Dart and Flutter best practices. The code they create will be healthy, simple and "boring," preventing too much complexity from creeping in.
"They're not only learning Dart, they're also learning 'These are the core pillars of good architecture, and these are solutions to the common problems you have to deal with.'" said Gulliver. He added that "With Very Good Ventures already being experts, they were able to start down that path at a run as our team started to ramp in it and learn, and eventually they caught up."
The Slickdeals app is in a strong position now, complete with the ecosystem maturity it needed and with a well-maintained multi-platform development process and monitoring system. Engineer behaviors and skills on the combined team have leveled up, and more features are moving to the Flutter platform to open a path to a fully multi-platform future.
“With the speed of iteration happening on the Flutter platform, we’re really excited to see where it will lead.” Gulliver considered.
Organizations of all sizes and across industries are feeling the same kinds of pressure that moved Slickdeals to make changes, facing tech debt and wanting to merge their separate development teams. The way it has always been done is no longer the only path toward a high-quality user experience.
To find out if a similar solution could help your company, contact Very Good Ventures' experts.