What if you could create both iOS and Android apps with a single codebase that look and feel like native apps with complete customization and near-native performance? You could save precious development time or instead you could opt to scale faster. You could easily build and maintain parity with existing web functionality. You could iterate quickly and maintain reliability. The list goes on and on…

I didn’t believe it was possible.

My experience has been in native apps. I’ve worked with Java on Android and Swift on iOS for a decade now. So when the idea of using a cross-platform solution came up, I was skeptical. I didn’t believe that all those things could be true with little to no drawbacks. I had tried a few cross-platform options before and was not impressed. They consistently lacked the customizability, robust 3rd party support, and sometimes even 1st party support. Much of what was sold as a time saver usually required an incredible amount of time spent in other unexpected ways – like debugging obscure platform issues or writing something unsupported in native code and using a wrapper. Even when these things aren’t a major issue I’ve found that you still need a robust understanding of the iOS and Android platforms to be most successful. These platforms are often pitched as “build an app with no mobile experience necessary” but that is rarely true. It sounds great but in practice doesn’t live up to the hype. Sure, they have niche use cases where they can be the best solution. Maybe all that’s needed is a very simple app with little customization or you might already have developers familiar with a specific technology that makes it quick to get up to speed. 

Enter Flutter

For our vision at Collectors, it certainly seemed like native was the only possible solution. We set out to build a world-class app with no significant limitations. With that comes a lot of questions and considerations. So what did we choose and what has been the result? Turns out there is a cross platform solution that can deliver similar efficiency and performance to native! Over the past year and a half we built the PSA app using the power of Flutter. What is Flutter? Flutter is a cross platform mobile and web development toolkit that allows you to build an application with a single codebase that can be deployed to multiple platforms (in our case iOS and Android). Flutter was created by Google and is open source. It uses the Dart programming language which was created to build immersive user experiences.

Build the suspense as you flip to reveal your grades as soon as they are available

Advantages

Flutter is one of many cross platform solutions that exist; however it provides several unique advantages over the alternatives. Flutter doesn’t just wrap native components into its own versions – it provides a fully integrated rendering engine that gives full customizability to create custom UIs and advanced animations without the need to do anything in native code (note: you are not prohibited from doing anything natively if you want). It’s all handled by Flutter.

Some of the advantages we’ve found using Flutter are:

  • Truly cross-platform
  • Full customizability building UIs, animations, and full platform level integration
  • Full comprehensive debugging support
  • Hot reload for quicker development and testing
  • Active development community and consistent support and improvements/fixes
  • Modern language with 1st party plugins and support for commonly used IDEs such as IntelliJ and Visual Studio Code
  • Apps can be built using the standard native build process – no overhead necessary

Take Grade Reveal for example, one of our most popular app features. We were able to build a completely custom UI with immersive gestures and animations that beautifully feature the cards in an order and delight the customer with the suspense of revealing their grades. Of course, building something like this is possible with native solutions but even then there may be challenges. With many cross-platform frameworks this would have either been imperfect or impossible. Because Flutter draws every pixel on the screen we were easily able to customize the experience exactly how our designers wanted – using only Dart/Flutter.

Drawbacks

All of this may sound great, and it is, but that doesn’t mean Flutter is without its drawbacks.

  • Flutter is relatively new (released in 2017 about a decade after iOS and Android) and has really only started to gain traction over the last few years. This means that although there is a large and growing collection of 3rd party libraries, it is not as comprehensive and robust as the native platforms.
  • Dart is a programming language that only Flutter developers are familiar with so it requires some onboarding time up front to familiarize yourself with it
  • This one might be a nitpick but there can be some mild “jank” or hiccups in the smoothness when navigating around. Most users don’t notice this but with my background in native development there is nothing like the buttery smooth experiences you can build. With that said, Flutter has done a tremendous amount of work reducing or even removing the “jank”. They continue to make fixes in this area and it’s slowly becoming a non-issue even to more sensitive eyes.
  • It’s supported by Google. You can’t talk about a Google product without talking about the potential for it to lose support. There have been 295 projects that Google has killed throughout its history and although there are a few longstanding products, many, including popular ones can get axed seemingly at random.
Take your card images to the next level with full editing capabilities built directly in the PSA app

All of these drawbacks are either minor or theoretical. No solution exists without drawbacks. Given all the benefits and a production app that is used by hundreds of thousands of collectors around the world (download the PSA app on iOS and Android), we think Flutter hits the sweet spot of convenience and flexibility. Powerful with minimal drawbacks. At Collectors we have great confidence in Flutter and the ability to execute on our long-term vision. Thanks to Flutter we have been and will continue to be able to build and scale faster than we could have otherwise without sacrificing quality. The past 18 months have been jam packed with new features and improvements for the PSA app and we’ve only scratched the surface. We launched Slab Studio, Grade Reveal, order tracking, in-app submissions with image recognition, and more. We have a lot more planned for this year and beyond!

Our goal is to make the PSA app the best tool in the hobby for collectors around the world. From research to grading to selling and everything in between, we are working towards a future where you can have it all with you wherever you go with cutting-edge technology and tight integration making all your collecting efforts safe, easy and fun.