Square wanted to provide a stronger error monitoring solution for its Point of Sales application and achieve a single source of truth for errors and crashes across its native applications.
By rolling out Bugsnag onto iOS, Square accesses all mobile stability management and error monitoring in one location, paving the way to introduce Bugsnag for all its future apps.
When Square, Inc. was founded in 2009, its objective was to provide an easier way for small business owners to accept credit cards from customers.
Today, Square empowers companies of all sizes with a wide range of products and services for payments, loans, customer and employee management, and point of sale (POS) across multiple industries, including retail, food and beverage, and professional services.
Over the years, Square has relied on various error monitoring solutions and used different tools for its Android and iOS applications.
“We want to have a single source of truth for crashes across our apps, and we want to be able to apply multiple filters to triage an issue,” explains Anil Umarji, Engineering Manager, Quality, who oversees the Release Operations (RelOps) and Quality (QA) teams.
Seven years ago, Square’s Android team migrated to Bugsnag from previously using Crashlytics.
Pierre-Yves (PY) Ricau, Staff Engineer, focuses on crashes and performance for Point of Sales (POS) and remembers why Square moved to Bugsnag for its Android error monitoring.
“Crashlytics was originally built for iOS. When the company was acquired by Twitter, the team then built an Android solution that wasn’t as customizable and stable as we would have liked,” explains PY.
“What Bugsnag brings to the table is extensive around things like custom indexing, filtering, and searching. It’s a game changer.”
— PY Ricau, Staff Engineer
In 2014, when Square adopted Bugsnag for Android, PY noticed an immediate improvement: “With Bugsnag, we have the source of a crash or error right there, which is something we didn’t have with Crashlytics.
What Bugsnag brings to the table is extensive around things like custom indexing, filtering, and searching. It’s a game changer.”
Today, Bugsnag is rolled out to Square’s full stack, including web and backend. The iOS team is finishing up its migration to Bugsnag from previously using Crashlytics, which is now Firebase.
“We didn’t have a tool from the iOS perspective where we could apply multiple filters to triage an issue,” states Anil. “From a RelOps and QA perspective, we want to get the best of what’s on Android on iOS. After all, we have unique filters on Bugsnag, and the UI is pretty intuitive. We want that same functionality for iOS, too.”
Because Square uses a lot of shared code across systems, it’s critical that any new features don’t break or affect other features.
The move to Bugsnag for the iOS team will simplify QA and RelOps work by providing a single place to look for errors.
“Point of sale is an intersection of all the other verticals at Square. Having POS for both Android and iOS on Bugsnag will help other teams know where the crashes and out-of-memory issues are,” explains Anil. “That’s the biggest advantage I can see from my team’s perspective.”
The RelOps team currently uses Bugsnag for Android throughout its bi-weekly release development cycle and relies on Bugsnag to quickly address bugs that affect stability.
“The Bugsnag dashboard is our go-to page every day to see what’s happening. There are two things we look at: production and our continuous testing,” states Anil.
“We use phased rollouts for both Android and iOS, and we use Bugsnag to look at stack traces to see if a similar crash happened in the past and determine if it’s a new crash.”
“The Bugsnag dashboard is our go-to page every day to see what’s happening.”
— Anil Umarji, Engineering Manager, Quality
“The investigation piece is where Bugsnag shines,” states PY. “We can add metadata to breadcrumbs, which helps us understand the steps that led to a crash. And, when you define custom filters, you can then define a list of crashes for a specific set of conditions.”
All new features in Square are also behind a Bugsnag feature flag for easy identification.
“From a feature stability perspective, tags help us to know if something broke with the new feature or if it’s something we’ve already found and tagged as one of our critical features,” explains Anil. “We also use custom tags in Bugsnag to make sure there are no regressions.”
There’s one Bugsnag feature in particular that PY believes is a hidden gem. “When I don’t know exactly which crash I’m looking for, Bugsnag’s Timeline view is like gold.
It provides visual clues about error rate changes and lets us filter, which is especially helpful for determining if an error is server-related. That type of information is invaluable.”
“When I don’t know exactly which crash I’m looking for, Bugsnag’s Timeline view is like gold.”
— PY Ricau, Staff Engineer
With teams using one solution for error monitoring and stability, Anil believes Bugsnag will further encourage ownership over the different parts of the applications.
“Bugsnag has been a super helpful tool for us from an Android standpoint, and I hope very soon to replicate that with iOS as well,” states Anil.
Looking forward, Square knows its partnership with Bugsnag will help achieve stability across its native applications and full stack.
As Anil states, “One thing I really like about Bugsnag is the flexibility to develop what’s on top of what’s already there and the ability to ask for new feature sets from the Bugsnag team.”
“Bugsnag is definitely made for the professional,” PY states. “And Bugsnag is still the best out there.”
Previously published here.