Full Course
Flutter In Production
Learn about flavors, environments, error monitoring, analytics, release management, CI/CD, and finally ship your Flutter apps to the stores. đ
Andreaâs Flutter content is amazing - itâs one of the few resources I consistently reference for advanced real-world solutions.
He clearly puts a huge amount of care and thought into every tutorial. Highly recommended!
Learn More
Course Overview
Picture this: you've built an amazing Flutter app. Youâre feeling excited and youâre almost ready to launch it.
But hold on!
If you're not prepared for release, youâll face some challenges:
- No Analytics = No Insights: Which features captivate your users, and which ones don't? Without robust analytics, you're navigating blind.
- App Crashes: Which issues are affecting users in production? What's their impact? Are you prepared to address them effectively?
- App Store Rejections: Missed guidelines and bugs can halt your launch. How swiftly can you address and resubmit?
- Release Management: Have you streamlined your release process? Is it automated with CI/CD pipelines?
- Force Update Strategies: If needed, can you force users to update to the latest version of your app?
These challenges can set you back, but if you put the right things in place, youâll save a lot of time and money later.
Now, imagineâŠ
- Having a clear release plan, along with detailed guides and checklists so you donât miss any important steps
- Being confident about the app submission and review process on the App Store and Play Store
- Having a completely automated process for deploying your app releases with ease
- Being able to monitor your apps in production, get user feedback, and resolve issues effectively
I created this course to help you with all these critical aspects, and many more.
Introducing
Flutter in Production
This course is your comprehensive guide to shipping your Flutter apps with confidence. Here's how itâs organized. đ
Part 1: Preparing for Release
In this first part, youâll learn about:
- App Icons and Splash Screens
- Multiple Flavors and Environments
- Error Monitoring
- Analytics
- Force Update Strategies
- Collecting user feedback and in-app reviews
- Creating a website for your app
These things take time, but they are crucial for a successful app launch. And with my guidance, youâll breeze through them.
Part 2: Release Management and Automation
With preparations complete, itâs time to launch.
But submitting your app to the stores involves a lot of red tape. So, all the important steps will be covered in detail (both for testing and distribution):
- Manual Android release: build, code sign, upload, and submit your Android app to the Google Play Store
- Manual iOS release: build, code sign, upload, and submit your iOS app to App Store Connect
Manual releases take a lot of time, so youâll want to automate the whole process:
- Release Automation with Codemagic (quick setup)
- Release Automation with GitHub Actions with Fastlane (advanced setup with more control)
By this stage, youâll have the tools and knowledge to manage and automate your app releases, making them seamless and scalable.
Part 3: Post-Release Techniques
Your app is live â what's next? Enhance and improve your process even further:
- Automated screenshot generation
- Code push
- Feature Flags and A/B testing
I know. You could find all this information online, but it would take you weeks to gather and understand everything, and you'll still have an incomplete picture of how all these things fit together. By condensing all my knowledge and experience into this course, I can help you get your app to the stores faster and with fewer headaches.
Flutter in Production by Andrea covers all the latest concepts and standards, including error monitoring, analytics, and CI/CD, necessary for releasing your app in production.
I had early access to the course, and it's well-structured, with quality content that covers multiple strategies. You rock!!
The new Flutter in Production course is fantastic! It covers so many practical aspects of launching an app that I would have had to learn by trial and error.
I havenât seen these topics covered in other courses, and the explanation is thorough. Andreaâs teaching style is clear and concise; I feel like I can learn the concepts quickly without getting bogged down in a lot of fluff.
Highly recommended if you want to become a pro Flutter developer!
Course Curriculum
What's Inside
Module 1
Course Introduction
An overview of the course structure and topics covered, along with a walkthrough of the companion app for this course.
- Intro to the Flutter app release checklist
- Starter project and code walkthrough
Module 2
Launcher Icons and Splash Screens
Learn how to generate your launcher icons and splash screens on Android, iOS, and web.
- Generating app icons with the Flutter Launcher Icons package
- Designing custom icons for your Flutter apps using Figma
- Launcher Icon Guidelines and Android Adaptive Icons
- Generating custom splash screens with Flutter Native Splash
Module 3
Adding Flavors to a Flutter App
A complete guide to flavors in Flutter. What are flavors, why do we need them, and how to configure them on Android and iOS (both for new and existing apps).
- Intro to flavors and environments
- The difference between flavors and Dart defines
- Flavoring your Android and iOS app with Flutter Flavorizr (including icons and IDE setup)
- Flavoring your Android and iOS app manually (for pre-existing apps)
- Whitelabel app challenge
- Adding dev, staging, and production environments with Firebase & FlutterFire CLI
Module 4
Error Monitoring with Sentry
How to use Sentry to report, monitor, diagnose, and fix errors in your Flutter app when running in production.
- Sentry vs Crashlytics: a comparison
- Sentry setup: basics, environments and flavors
- How to capture exceptions explicitly
- Event filtering and other customization options
- Sentry dashboard overview and issue resolution workflow
- How to collect user feedback with Sentry
- How to capture navigation and HTTP breadcrumbs
- How to upload source maps and dSYMs with the Sentry Dart Plugin
- Additional Sentry options and APIs
- How to minimize your sentry bill
Module 5
Analytics with Mixpanel and Firebase Analytics
How to setup analytics in your Flutter client app.
- The importance of analytics
- How to choose an analytics provider (features, cost, US vs EU hosting, etc.)
- How to setup multiple analytics providers and selectively enable/disable them
- How to track custom events, conversions, page views, and more
- Mixpanel: overview, features, and integration
- Firebase Analytics: overview, features, and integration
- Analytics with multiple flavors (with and without Firebase)
- Real-world example: how to use analytics to ask for app reviews at the right time
Module 6
Force Update Strategies
How to implement different force update strategies depending on your app type and backend.
- Why you absolutely need a force update strategy
- Soft vs hard update, rolling release windows, and other strategies
- Force update with the Upgrader package
- Remotely control the force update behavior: Firebase Remote Config vs Dart Shelf vs Remote JSON
Module 7
In-App Reviews
How to ask for user reviews with the in_app_review package.
- Asking for reviews with a button or call-to-action
- Showing the app-review prompt programmatically
- Prompt quotas and limitations on the app stores
- Testing considerations on iOS and Android
- Data-driven review prompts: when to ask for reviews (based on your analytics data)
Module 8
Creating a Landing Page for your Mobile app
How to create a simple and effective landing page for your mobile app.
- Why you need a landing page
- Super-simple landing page template
- How to host your landing page on GitHub Pages
- Buying and setting up a custom domain for your landing page
- The legal stuff: privacy policy and terms of use
Module 9 (coming soon)
Manually Submit to the iOS App Store
Everything you need to ship the first version of your app to the App Store.
- Creating an Apple Developer Account and the Apple Small Business Program
- Code Signing: Certificates, Identifiers & Profiles
- Manually building and uploading the IPA
- Preparing your iOS app for submission (metadata, screenshots, compliance, app privacy manifests, etc.)
- The app review process and what to do if your app is rejected
- TestFlight: how to distribute your app to internal testers
- Submitting app updates after your first release
- Requirement for EU developers: declaring your Trader Status
Module 10 (coming soon)
Manually Submit to the Google Play Store
Everything you need to ship the first version of your app to the Google Play Store.
- Creating a Google Developer Account (individual vs organization)
- Code signing: key store, keys, and signatures
- Manually building and uploading the APK
- Preparing your Android app for submission (metadata, screenshots, compliance, data safety, etc.)
- Production and testing tracks
- The app review process and what to do if your app is rejected
- Dealing with the 20 testers requirements for new accounts
Module 11 (coming soon)
Release Automation with Codemagic
How to automate your app release process with Codemagic.
- Introduction to Codemagic
- The workflow editor
- Build triggers
- Environment variables and secrets
- Running automated tests and code analysis
- Adding custom scripts to your workflow
- iOS code signing and distribution with the App Store Connect API
- Android code signing and distribution on Google Play
Module 12 (coming soon)
Release Automation with GitHub Actions and Fastlane
How to automate your app release process with GitHub Actions and Fastlane.
- GitHub Actions basics
- Workflow syntax, triggers, jobs, and actions
- GitHub environments, secrets, and variables
- Running automated tests and code analysis
- Introduction to Fastlane
- Fastlane commands and lanes
- Automated iOS code signing with Fastlane match
- Building and signing your Flutter app (Android workflow)
- Uploading to App Store Connect and Google Play Console
- Running builds locally
- Advanced workflow customization
Module 13 (coming soon)
Automated Screenshot Generation with Maestro and Fastlane
How to automate the generation of screenshots for your app store listings.
- Existing solutions for automated screenshot generation
- Introduction to Maestro
- Maestro workflows: commands, selectors, parameters, and more
- The importance of semantics identifiers in Flutter
- Automating screenshot generation with Maestro
- Dealing with multiple devices and locales
- Preprocessing screenshots before upload
- Uploading screenshots with Fastlane
Module 14 (coming soon)
Code Push with Shorebird
How to deploy updates to your Flutter app without going through the app store review process.
- Introduction to Code Push with Shorebird
- Shorebird CLI: Installation and login
- How to create a release and preview it locally
- How to create a patch (and roll it back if needed)
- GitHub Actions workflows with Shorebird (Android and iOS)
Module 15 (coming soon)
Feature Flags and A/B Testing (tentative)
I'm still researching the content for this module. Stay tuned for updates!
Appendix 1
A Riverpod Primer
An introduction to the Riverpod package, including: providers and consumers, asynchronous providers, notifiers, dependency management, data caching, and additional techniques.
- How to Manage Dependencies in Flutter
- Riverpod Installation and Setup
- Introduction to Providers and Consumers
- The difference between ref.read and ref.watch
- Asynchronous Providers in Riverpod
- Passing Arguments to Providers (Families)
- Riverpod Notifiers
- Eager Provider Initialization and Usage with requireValue
- The Provider Lifecycle: keepAlive, dispose, invalidate
I'm not normally one for paid courses. It's hard to know if you're getting quality content ahead of time, and there is often a lot of free material available if you look hard enough.
But about a year ago, when I was starting to learn Flutter, I came across Andrea's courses. Based on the positive reviews, I took a chance and bought the course bundle, and I haven't regretted it!
His material offers the depth and quality of a university course in Flutter, taught by a clear subject matter expert for a tiny fraction of the cost.
Another amazing course by one of the best instructors I 'know'.
I have learned so much from Andrea and put all of it into action on my personal and work projects.
This course covers all I struggled with, and I now have a better understanding of it all. Clearly, Andrea has put a lot of thought into this and what a great job he has done.
Highly recommended!
Loved the section about Flutter flavors!
Very easy to follow, it's easy step by step with every command given to ensure your environment/project doesn't deviate from the lesson. I like that you show the mistakes that would be made with an easy way to revert back! As most of coding is trial by error at times, it's good to simulate those errors when learning :)
Overall, It's great to have a course that's teaching you but also setting you up for success when you need to do this on your own.
The preparation of a production ready app was always a bit of a dark art to me. I could code, create features etc, but the publication of an app was always someone else's job and I was happy with that.
This course demystifies the whole process in a concise and pragmatic way.
I feel much more confident in knowing what I am doing now when it comes to publication of an app.
Seems to be another amazing course! Every line of your code is a tutorial for us! Thank you for your great work ...
The Riverpod module was fantastic! This could easily be its own mini-course.
More Info
Course Format
Unlike my previous courses, this is primarily a text-based course.
Each module includes clear and concise lessons, explaining the concepts with a combination of text, code snippets, and illustrations. Where appropriate, I will also include video tutorials to demonstrate complex tasks or workflows.
While I recommend to follow the course from beginning to end, each module will be self-contained, so you should be able to âjump inâ and learn about individual topics without problems.
This course is meant both for learning and as a reference guide. So, youâll also find useful checklists that will help you âtick all the boxesâ before moving to the next stage. And guess what? The official course project is an app release checklist made with Flutter. đ
This course is not about building an app from scratch. Rather, you'll start with a pre-made app and integrate various techniques and tools to get it production-ready. Later, you'll be able to apply the same techniques to your own projects.
Is it right for you?
Who is this course for?
This course is for you if you want to:
- Ship your Flutter apps to the stores without overlooking important details
- Understand the iOS and Android app release process and the tools involved
- Monitor your apps in production and unlock valuable insights
- Manage and automate your app releases with confidence
Once youâve mastered the techniques in the course, shipping your apps will be a matter of hours, not days or weeks. And thatâs worth a lot more than the price of admission. đ
This course is a career boost. In my opinion, Andrea's certainly the best Flutter content creator. His dedication to the community is memorable, and his first-class tips have helped me many times on my job. I'm thrilled he gathered his knowledge again and created this course.
Even though I have published almost a dozen mobile apps on the store, I still learned a lot and will surely apply what I've seen here to my projects. The course is straightforward to follow. Everything feels smooth and right to the point. I haven't had any problems coding during the course.
I have been doing Flutter since late 2018, and I assure you this course is not only for beginners but also experienced programmers.
If you want to start with Flutter or have a career upgrade, I believe the combo Flutter Foundation + Flutter & Firebase Masterclass + Flutter in Production is the best investment your money can buy for you right now.
It's time to
Ship to Production
Join 800+ developers who have already decided to advance their Flutter skills.
Pro
- First 10 Modules (8 modules today + rest coming soon)
- Bonus: Riverpod Primer
- Checklists & step-by-step guides
- Lifetime Access
- Full Source Code
- Premium Support on Discord
- English Subtitles
- 30 Day Money Back Guarantee
Ultimate
- All 15 Modules (8 modules today + rest coming soon)
- Bonus: Riverpod Primer
- Checklists & step-by-step guides
- Lifetime Access
- Full Source Code
- Premium Support on Discord
- English Subtitles
- Completion Certificate
- 30 Day Money Back Guarantee
Basic
- First 6 Modules
- Bonus: Riverpod Primer
- Lifetime Access
- Full Source Code
- Premium Support on Discord
- English Subtitles
- 30 Day Money Back Guarantee
Checkout powered by LemonSqueezy.
Team packages are also available. For more details, see this page.
I spent over 500 hours making this a high-quality course and I'm confident you'll get a lot of value out of it.
But the only way to find out if this course is right for you is on the inside, not on the outside. So you get on the inside and see if itâs true and valuable to you. Then, if it is, thatâs when you decide to keep it.
But if you're not happy with it, for any reason, you can reach out within 30 days of purchase to get a full refund. All you have to do is go to courses@codewithandrea.com and tell me âgimme my money backâ and you got it, and in short order. I will respond within 24 hours.
What my students say
Testimonials
Loved the course and got a lot out of it.
Especially appreciated how Andrea doesn't just show you the "right way" to do things from the start. He shows common errors and pitfalls and how to get around them, and eventually end up at the "right way" with a better understanding of how to actually get there in your own projects.
The course also has a healthy balance of code-alongs for relevant portions and provides you with updated project files throughout, so you don't have to spend hours manually going through every single line of the project.
It could be my previous experience with writing code but DART explained by Andrea was smooth.
I never really understood OOP and I struggled in that area until I watched this course. I made sure I tried and completed every exercise even though it took me days.
Excellent course. Excellent Instructor, well knowledgeable and resourceful. Would totally recommend.
Andrea is the best! I love his passion and enthusiasm and dedication to teaching.
He cares deeply about programming and sharing his knowledge and experience with his students.
Andrea's teaching style is awesome.
I have been building Flutter apps for close to 3 years, and I still find a lot of useful and new material with his courses and articles.
Andrea has some of the highest quality online courses I have seen. He does not gloss over the issues of optimization or best practices that so many other courses do.
You can adapt what you learn from his courses, right into real-world applications!
Up-to-date content, didactic instructor, good support community on Slack, additional resources, tutorials and optional videos with the latest advances in Flutter.
Concise and direct to the point, with a huge number of diagrams. A colossal amount of work to simplify our learning.
Everything's clear. I really love the way you explain, concise but completely understandable. Not a single detail is missed on any topic that is covered, and if so, you always leave references to really useful articles.
No doubt that anyone who take this course will end up with complete and strong Flutter skills.
I have spent the weekend on just this lesson. It was a great time investment to watch the lessons, follow the links, and do the suggested homework.
Although I've been working with Flutter for almost a year and have taken several other courses, I feel like my skills have advanced further and faster this weekend than at any other point in the past year. Thank you!
A BIG BIG THANKS for this course and the others that you will release later in the year.
Its just so much fun to see something new from my favourite GURU (teacher) and the anticipation of its release is so so exciting.
Just looking at the curriculum, it shows how much effort and thought you have put into developing this.
Thank you once again, as I begin this new journey.
I've been developing for more than 10 years, especially using web technologies, and I went through this course like a breeze.
I was impressed by Andrea's reactivity and quality of support on the course Q/A and on Slack.
I will be following his code architecture proposal going forward with my team on our Flutter projects.
Not convinced yet? Here are even more testimonials.
FAQ
Frequently Asked Questions
How long is the course?
The course will contain over 140 lessons, along with source code, diagrams, illustrations, checklists, challenges, and much more.
If you follow all the lessons and complete all the challenges, you can expect to spend around 20 to 30 hours on the course. The individual modules should take around 1 to 3 hours.
How much time will the course save me?
Once youâve mastered the techniques in the course, shipping your apps will be a matter of hours, not days or weeks. And thatâs worth a lot more than the price of admission.
How much does the course cost?
Flutter in Production costs $119 during the early access period. The price will gradually increase to $199 as I add more content.
Will you offer discounts in the future?
From time to time (e.g. Black Friday) I offer discounts, however these are very infrequent.
If you want to get value from the course, your best option is to buy today. If you're not satisfied, you can get a refund within 30 days of purchase.
What are the course prerequisites?
You should have a good understanding of Flutter and Dart before taking this course.
Since we'll use Riverpod in the course, I've also included a Riverpod primer to help you get up to speed.
Even if you haven't taken my Flutter Foundations and Flutter & Firebase courses, you can still follow along.
What about Firebase?
I have included some Firebase-specific lessons that will cover Firebase Analytics, Firebase Remote Config, and multiple flavors setup with the Firebase and FlutterFire CLI.
These lessons are optional and I've also covered separate tools (such as Mixpanel for analytics and Sentry for error monitoring) that can be used as an alternative.
In summary: whether you like Firebase or not, there will be something for you. đ
What will not be covered in this course?
The course will focus on the production aspects of the app development lifecycle.
Topics such as app monetization, marketing, and user acquisition will not be covered.
Accessibility, internationalization, deep linking, and security will also be out of scope (though we will explore best practices for handling sensitive API keys in your apps).
Will the course cover free or paid tools?
Most of the tools covered in the course are free or have a free tier and a reasonable paid plan.
What if I want to use different tools than those covered in the course?
There are many tools you can use for analytics, app monitoring, CI/CD, and more.
While I will focus on the tools I like the most, you can choose different ones and follow the official documentation to accomplish the same goals.
What about Flutter web and desktop?
The course will focus primarily on shipping apps on iOS and Android.
Where appropriate, I'll include a few tips on how to adapt the lessons for web and desktop, but I don't plan to cover these platforms extensively.
I'm buying as a company. Can I get an invoice?
Sure! If needed, you can enter your VAT or Tax ID during checkout.
Then, after checkout, you'll receive an email with a button to generate a custom invoice.
You'll be able to edit your company name and address, and download it for your records.
I'm a student / I can't afford the course / I live outside the US/EU / do you support Purchasing Power Parity (PPP)?
Unfortunately PPP is not supported by my course platform. If you'd like to request a discount, please fill this form.
I bought Basic or Pro package. Can I upgrade to the Ultimate package?
Sure - email me at courses@codewithandrea.com and I'll send you a discount code you can use to upgrade to the Ultimate package.
Do you offer team packages?
Sure thing! I offer team packages at discounted rates.
Email me at courses@codewithandrea.com for all the details.
What if I get stuck? Can I ask questions?
Yes. You can ask questions on the course Q/A in the Discord server. I answer most questions within 24 hours.
Will I get a completion certificate?
Sure do! Once you complete the course this will be issued to you automatically.
What if I don't like the course?
The course comes with a 30 day money back guarantee. If you're not happy with the course, for any reason, you can reach out and I'll issue a full refund.
All you have to do is go to courses@codewithandrea.com and tell me âgimme my money backâ and you got it, and in short order. I will respond within 24 hours.
I have another question!
Sure - email me at courses@codewithandrea.com and I'll reply within 48 hours.
instructor
Hello, Iâm Andrea
My name is Andrea, I'm a Flutter GDE and I've been writing code professionally for over 15 years. I've been a mobile app developer since 2012, working for startups and big companies.
With my Flutter tutorials and courses, I've helped thousands of students become better developers.
By taking this course, you'll learn how to ship and monitor your Flutter apps in production.