Go from idea to a fully featured Flutter app in minutes using the Flutter Fast CLI. Save hours setting up your app's boilerplate and jump right into the fun part of implementing your startup ideas 🚀See All Features
Choose Your PaaS
There are a handful of Platform-as-a-Service (PaaS) providers in the Flutter sphere and Flutter Fast aims to support them all. Currently, you can choose between Firebase and Supabase. When you choose a PaaS, your app's will be generated with code specific to that provider. For example,
If you choose Firebase, new users will be created in Firebase Auth, users will be added to Firebase Firestore, and your login screens will use Firebase Auth UI.
If you choose Supabase, new users will be created in Supabase Auth, users will be added to a "users" table in your Supabase Postrgres database, and your login screens will use the Supabase Auth UI.
Run the CLI
Creating a Flutter Fast app is as simple as running the following command:
fast app -n my_app -o com.example -p firebase
In less than 30 seconds you'll have everything you need to launch a Flutter app. All setup commands (flutter pub get, flutter pub run build_runner build --delete-conflicting-outputs, etc) are run by the tool so you can run the new app as fast as you can hit the play button.
Aside from the PaaS selection, the Flutter Fast tech stack is opinionated, built with tools that just work. I've shipped 20+ applications using this exact combination of tools and I plan on shipping many more.
Flutter Fast apps use either Firebase or Supabase authentication and come with prebuilt sign in, register, forgot password, and profile screens. Email authentication is supported out-of-the-box and additional methods can be added easily. Authentication based navigation is also built-in so unauthenticated users will be rerouted to the sign in page and newly created users will see the onboarding page.
📀 Database and Serialization
Flutter Fast apps can use either Firebase Firestore or Supabase Database to store their data. The base boilerplate supports a users collection/table and a feedback collection/table. This code provides some basic examples on how to fetch and save data in these databases.
The boilerplate also supports JSON serialization and defines starter User and Feedback classes. Each of these classes has common properties for their use case (ex. the User class has createdAt, userId, firstName, lastName, and email fields among others).
Flutter Fast apps are built with the popular auto_route navigation package. All pre-built routes are auto-registered with the @RoutePage annotation and the router config will be added to the MaterialApp class for you. Additionally, we've included popular route guards and a basic navigation observer tied to the analytics service.
💙 State Management
At the heart of the Flutter Fast architecture is the code_on_the_rocks state management package and get_it. Both of these packages stay close to the Dart language and are extremely simple to set up. code_on_the_rocks provides simple MVVM-based widgets that are used to construct each view while get_it is responsible for managing higher level services required throughout the entire application.
The default boilerplate supports Amplitude analytics on all platforms. You can easily log events with a map of event properties from anywhere inside your app by calling analyticsService.logEvent(). We've included an abstract analytics service that you can extend to use your own analytics tools as well.
💥 Crash Monitoring
We've setup Sentry crash reporting so you can easily track any errors that happen when your app is deployed. To get setup, simply create a Sentry account and locate your DSN value. We've included instructions on how to find this in the official Flutter Fast docs.
The Flutter Fast boilerplate includes a Subscription service with methods for retrieving and purchasing subscription plans via RevenueCat. The built-in offering page will display a monthly and annual plan with the plan benefits and we've added convenience methods for determining if a user is subscribed or not.
Instructions on how to setup products on Google Play and the App Store can be found in the RevenueCat docs.
Each boilerplate app comes with support for Fastlane and has pre-built production and beta lanes.
On iOS, the "prod" lane builds and automatically submits your iOS app for review. The "beta" lane will increment the build number and upload the app to TestFlight.
On Android, the "prod" lane builds and uploads the app to the production track of Google Play. The "internal" lane will increment the build number and upload the app to the internal test track.
As a bonus, we've also included bash scripts that can be used to trigger Fastlane runs directly from your IDE.
👥 User Management
All new users will be added to the Authentication provider of your choice and then saved to a collection or table with their email and time of creation. We also help you track each user's last login time and provide built in methods to delete accounts.
👋 Easy Onboarding
A simple onboarding screen can make the first experience a user has with an app 1000x more enjoyable. The first time a user logs into a Flutter Fast app, they will be redirected to a simple, customizable page view where you can introduce them to your app and highlight the cool stuff. To edit the onboarding pages, update the PageOne, PageTwo, and PageThree widgets in the onboarding folder.
Let your users tell you what they want through the built in feedback feature. Users can report bugs, submit feature requests, and leave comments without you having to do anything else. All feedback will be submitted to the PaaS you chose in step one so you can browse it there directly.
Plus, in debug mode you can view the most recent feedback directly in app!
🤖 AI Chat
(Firebase builds only). We threw in a basic chatbot that uses the PaLM API. Random? Sure. Cool. Absolutely.
⚙️ Basic Settings
Stop wasting time wondering if you should add dark mode! We added it for you. The boilerplate includes a simple settings screen that can be found ender the cog icon on the home page. There is only one setting to start but others can be added underneath. As an added bonus, settings are saved to shared preferences which is registered with get_it and can be accessed from anywhere in the app 🌎
As I mentioned, the default Flutter Fast tech stack is opinionated and not everyone will love it. Luckily, most components of the stack are plug-and-play as I've leaned heavily on abstract classes and Injectable's ability to register one class as a specified type. Don't like Firebase? Don't use it!
Each abstract service begins with the "Fast" prefix (FastAuthenticationService, FastAnalyticsService, FastSubscriptionsService, etc) and defines what that class should be able to do. Swapping out one technology for another is as easy as updating a service's implementation.
🚀 Lots More!
The Flutter Fast template comes with lots of quality-of-life additions that don't fit into any one category:
- Theme-based TextStyle extensions
- TestingWrapper widgets
- Package version display
- Built-in analysis_options.yaml and build.yaml files
- Pre-made pubspec.yaml based on tech stack choices
- .gitignore created specifically for Flutter applications
A complete set of setup and customization instructions can be found on the official Flutter Fast website. These docs walk you through every step of the development process, from setting up your Firebase project to running your Fastlane scripts.
We're adding more features and customization options each week and your purchase gets you lifetime access so check your email for new releases!
The Flutter Fast CLI Executable