Welcome to Flutter in Production! 🎉

Hey, I’m Andrea, your instructor for this course! 😄

I created this course because shipping mobile apps is hard, and there are many things to consider:

  • Preparing for release: app icons, splash screens, flavors, environments, error reporting, analytics, force update, privacy, T&Cs.
  • App Submissions: app store metadata & screenshots, compliance, testing vs distribution tracks, dealing with rejections.
  • Release automation: CI workflows, environment variables, custom build steps, code signing, uploading to the stores.
  • Post-release: error monitoring, bug fixes, addressing user feedback, over-the-air updates, feature flags & A/B testing.

Course Structure

To help you tackle all these challenges, I’ve created a comprehensive curriculum that is divided into three parts.

Part 1: Preparing for Release (Modules 2-8)

In this first part, you’ll get your app ready for production by tackling:

  • Launcher Icons and Splash Screens
  • Multiple Flavors and Environments
  • Error Monitoring (Sentry)
  • Analytics (Mixpanel and Firebase Analytics)
  • Force Update (Firebase Remote Config)
  • Collecting user feedback and in-app reviews
  • Creating a website for your app

Skipping these steps can be costly. Imagine releasing without error monitoring or analytics—you’d be flying blind. What if there’s a critical bug in production? Or if a feature you spent weeks on isn’t even being used? This section ensures you’re equipped to avoid those headaches.

Part 2: Release Management and Automation (Modules 9-12)

Once your app is ready, it’s time to get it into users’ hands. This part covers:

  • App Store Release: Prepare, build, upload, and submit your iOS app to App Store Connect
  • Play Store Release: Prepare, build, upload, and submit your Android app to the Google Play Store

Once your first release is out, you’ll quickly find that 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 + Fastlane (advanced setup with more control).

Bonus: I’ll also walk you through the latest requirements for setting up Apple/Google developer accounts and navigating store policies.

Part 3: Post-Release Techniques (Modules 13-15)

By this stage, you’ll be confident about shipping and monitoring your apps in production. Time to streamline your process even further:

  • Code push with Shorebird
  • Automated screenshots generation
  • Feature flags and A/B Testing

What is not included in this course

There are some topics that, while important for production apps, are not planned for this course. These are:

  • Automated testing
  • Accessibility and localization
  • App security (though I’ll show you how to store API keys securely)
  • Building adaptive apps
  • Deep linking and URL-based navigation
  • Publishing Flutter desktop apps
  • App monetization
  • App store optimization (ASO) and keyword research

Where relevant, I’ll include links to resources where you can learn more.

How to make the most of this course

The course follows a linear structure, giving you a clear release plan that covers all the important steps.

While I recommend following from beginning to end, each module will be as self-contained as possible, so feel free to jump around if you’re looking for something specific.

This course is both a learning path and a reference guide. So, you’ll also find:

  • Checklists at the end of each module to ensure you “ticked all the boxes” before moving on.
  • Quizzes to test your knowledge in many of the lessons, such as this one:

Question 1 of 2

Which of these topics are covered in the course?

How to provide feedback

Your feedback is super valuable and will help me improve the course for everyone.

At the end of each lesson, you’ll find a “Submit Feedback” button:

Built-in submit feedback form

Rest assured that I read all your comments and use them to improve the course.

Final Thoughts

I’m excited to help you take your Flutter apps to production! 🚀 Let’s get started!

Questions? Let's chat

⚠️