Why I’m betting on FlutterFlow

A bit about why I decided to leave my dream job at Google to join FlutterFlow

Leigha Jarett
Bootcamp

--

For the past few years, I’ve worked as one of the product leads for the Flutter framework at Google. During my time on Flutter, I had the opportunity to collaborate with passionate customers, partner with incredibly talented engineers, build remarkable demos, and travel around the world to talk about the next era of UI development.

By all accounts, working on Flutter was my dream. So, you can probably understand how tough it was for me to step away. But, after collaborating with the FlutterFlow team these past few months, and watching them achieve incredible milestones (>1 million users and $25.5 Series A), it was clear I couldn’t miss the opportunity to be a part of their journey.

For the low-code skeptics

I first want to offer an olive branch to the low-code skeptics. I joined the Flutter team because of the promise of an empty canvas. As a self-proclaimed designer-developer, I loved the idea of having a digital realm to bring my imagination to life.

The allure of this creative freedom made me cautious about venturing into the low-code world. I assumed that I would quickly hit a wall with the tool, either finding my dreams out of reach or spending more time navigating the UI than it would have taken to write the code. Either that or the generated code would be inefficient and buggy 🤷

So, I understand your concerns. While low-code tools have promised cost savings and team agility for years, they haven’t delivered for developers. But, I think the rise of declarative frameworks and evolution of AI will lead to FlutterFlow becoming a true accelerator for developers working on even the most complex apps.

Rise of declarative UI frameworks

Over the past 5 years, we’ve seen nearly all UI development move towards declarative toolkits. Frameworks like React, Flutter, SwiftUI and Compose dominate web and mobile development.

In declarative programming, you declare how you want the UI to appear. This is different from the imperative approach, where you provide step-by-step instructions on how to create and manipulate the UI elements.

Side by side code comparison for declarative versus imperative button

The declarative syntax can look pretty similar to a JSON representation, which could be a sort of intermediary between the GUI and the generated code. Properties in classes correspond nearly 1:1 with fields exposed in the editor. This lends itself to easier, cleaner code generation. You can clearly see how your actions in the GUI are reflected in the generated codebase.

Code excerpt generated from FlutterFlow buttons

This is a pretty big shift from the legacy GUI tools. Take Storyboards for iOS. Inspecting the code for Storyboards offers up an XML file. I’m guessing XML acts as some intermediary because generating imperative UIKit code can end up messy. The problem is that no iOS developers are familiar with this XML syntax.

Having readable and familiar code means that it’s easier for developers to understand what’s happening and troubleshoot accordingly.

In FlutterFlow, you can view generated code in the tool, export the entire codebase, or integrate custom code snippets. This removes limitations of the GUI by offering opportunities to drop back to traditional development as needed. While these workflows aren’t perfect, it’s a great foundation to build a tool that’s truly low-code.

Development of AI-powered co-pilots

It’s 2024, so this wouldn’t be a blog about technology without some mention of AI. Almost all developers are already using AI to assist their work — either through chat interfaces like ChatGPT and Bard, or AI assistants directly in IDEs, like GitHub co-pilot.

But, creative design takes visual iteration.

The problem with working in a purely text based world — where you’re putting a text prompt and getting code to execute as a result — is that iteration is slower. User interfaces are visual, and I think most humans have an easier time iterating in a visual manner.

Let’s say you ask ChatGPT to generate the code for a checkout screen.

Asking ChatGPT for some code assistance

After running the code, you realize that actually it would look better if the button used a gradient.

You could tell ChatGPT you want a different version, but, you have to verbally describe what it is you’re referring to. As the code gets more complex, you need to offer more context. This might mean more textual clues, “… the leftmost button at the bottom of the page.” Or searching for the object in your codebase and asking for help in that area, perhaps by right clicking in your IDE.

Low code tools like FlutterFlow are already set up for success here. They have previews of the app and allow users to visually select different UI components, which can provide great context for AI co-pilots.

They have enormous amounts of data on app development, which can help predict and streamline what actions the user wants to take. And when a user wants to make modifications via the co-pilot, it will be easier for the low code tool to change the UI code because those APIs are already in place.

Next steps

While these trends helped me feel confident in the shift to low-code and FlutterFlow’s success, it was the team that really sold me. I feel lucky to be working with a group of talented, scrappy and passionate people.

There’s a lot of work that needs to be done and tons of exciting ideas we have. In my first few weeks I’ll be looking to get input from as many folks as possible. If you have feedback or ideas, please feel free to reach out (LinkedIn, Twitter)!

--

--