iRobot aspires to empower people to do more–whether by reducing peoples’ cleaning load with the Roomba® robot vacuum, or by teaching them how to code with the Root® coding robot. Committed to the idea that everyone should have the opportunity to create the technology that’s changing our world, the iRobot Education team has built a learn-to-code experience designed for all skill-levels, ages and interests. With the iRobot® Coding App, iRobot Education has set out to demonstrate that coding isn’t just for computer scientists, but rather: anyone can code.
Now available with multi-platform functionality, here’s how iRobot Education’s popular iRobot Coding App has continued its push toward ease of use, broad accessibility and unique functionality–through its transformative use of Flutter™, Google’s UI toolkit for building multi-platform applications.
Making Coding Accessible
To move the needle on coding literacy, iRobot Education developed the iRobot Coding App to offer a personalized learn-to-code experience for all skill-levels. Graphical, hybrid and full-text code blocks are mapped onto three distinct learning levels that you can toggle between–allowing you to match your experience–and encouraging forward progression. Championing robots as powerful tools that motivate and engage learners, you can use the App to control SimBots in the built-in simulator or pair the App with its companion Root coding robot to bring the magic of code alive. The app even includes a curated Learning Library to introduce the basics of coding and robotics through simple videos and lessons.
Innovative and adaptable coding interface? Check. Ability to code simulated and real robots? Check. The only problem? The original App was developed in Swift and not compatible with other operating systems and surfaces like the web. Motivated to promote inclusive, equitable access to STEM education to a broader diverse audience, iRobot Education made the move to Flutter to deliver cross-platform support quickly, uniformly and wholly–without compromising on performance or user experience.
App Development Meets the Land of Opportunity
In researching how to most efficiently and adaptably bring the iRobot Coding App to multiple platforms, the development team investigated a variety of options from native development to cross platform frameworks. Ultimately, the team decided to pursue creating a new, unified and multi-platform App to maximize productivity and provide features faster and more efficiently across platforms. Guided by Lead Robotics Interface Specialist Julián da Silva Gillig and Aaron Halvorsen, Senior Software Engineer, the team compiled a list of requirements for identifying the best software toolkit to suit their needs:
- A single codebase providing native functionality across iOS, Android and Web.
- A modern language with strong typing, null and thread safety for predictable, high performance.
- An advanced graphics framework to support a highly visual and interactive experience.
Google’s multi-platform UI toolkit, Flutter, appeared to fit the bill. Officially launched in 2018, Flutter allows developers to deliver natively compiled apps for mobile, web and desktop through a unified codebase. Using Dart as its underlying programming language, Flutter not only delivers efficient performance, but already provides type and thread-safety, with null safety recently announced stable at Flutter Engage this month. The icing on the cake: Flutter’s ability to support sophisticated, graphics-heavy user experiences across both low and high-end devices. This wide range of support helped us to build a more inclusive learning experience targeting a global audience across all categories of devices.
Migrating to a Single Codebase
While Flutter’s Web support was still in technical preview at the beginning, iRobot Education’s initial experiences showed how quick and flexible the toolkit could be. Already having a positive experience with Google’s Firebase cloud platform, Flutter’s helpful documentation and ease of use during testing helped influence the team’s choice to select it.
Knowing that there was some risk in picking Flutter—particularly before the launch of stable web support—the team was confident that the significant gains in developer productivity and project maintenance would be worth it. Fortunately, these benefits quickly materialized as one small team of developers created a multi-platform App that would traditionally have taken far more resources.
Starting with minimal experience in Flutter or Dart, iRobot Education’s software development team took advantage of high-quality introductory videos and documentation to quickly understand details of Flutter development. The team’s onboarding experience with Flutter demonstrated how any experienced developer can quickly pick up the skills needed to build and optimize high quality Flutter apps. What’s more, Flutter’s architecture makes it simple to place and customize sophisticated, multi-platform visual elements and widgets.
Launching the iRobot Coding App Across iOS, Android and Web
In a fraction of the time that it took to write the original iOS version of the iRobot Coding App, the team built and launched new Android, iOS and Web versions. Being one of the first Flutter Web Apps launched in beta, iRobot Education is glad to release the latest version of the iRobot Coding App in parallel with Flutter’s launch of stable web support. Providing a great example of the types of graphically intensive apps that can be built with the Flutter toolkit, the iRobot Coding App was highlighted and demoed at the latest Flutter Engage event.
Since launching with Flutter in 2020, the iRobot Coding App has broadened its reach to 170 countries worldwide and quadrupled the number of monthly active users. Now boasting a maintainable and scalable system, the software development team has been able to coordinate App updates while providing full, native multi-platform performance. Saving time by working in a unified codebase has allowed the team to focus on rolling out increasingly complex App enhancements, with Flutter appearing up to the task.
“Flutter provides developers with a high-productivity toolkit for building beautiful apps for mobile, web and desktop from a single codebase. The innovative educational experience iRobot has created is a perfect example of the power and portability of Flutter” said Tim Sneath, Product Manager for Flutter and Dart. “We’re thrilled to see their popular educational coding environment expand to include web-powered devices like Chromebooks, offering access to a new wave of developers across the globe.”