How to Install Flutter
Flutter 3.47.9 is the latest stable release as of October 2026, bundled with Dart 3.13.7, and installing it correctly from day one, alongside Shorebird for over-the-air updates, eliminates the most common developer pain points, such as broken PATH variables, missing Android SDK command-line tools, and iOS dependency problems.
This guide covers exact commands and configuration for macOS, Windows, and
Linux, prioritizing the professional workflow used in production teams. macOS is
the only host that can build both iOS and Android apps, which makes it the usual
choice for mobile teams. Desktop apps build on their own OS: the Flutter tool
builds Windows apps only on Windows and Linux apps only on Linux
("build windows" only supported on Windows hosts.).
System requirements and prerequisites across all platforms
Section titled “System requirements and prerequisites across all platforms”A realistic production setup, including the Flutter SDK, Android SDK, emulator images, and an IDE, needs 10 GB or more of free space. The official docs do not specify a hard RAM floor, but community consensus and practical experience put the minimum at 8 GB, with 16 GB strongly recommended when running Android emulators or iOS simulators alongside an IDE.
Every platform requires Git 2.x as a prerequisite. On macOS, Git ships with
Xcode Command-Line Tools. On
Windows, install Git for Windows. On
Ubuntu, sudo apt-get install git handles it. Verify with git --version
before proceeding.
Here’s a quick rundown of the requirements for each platform:
| Requirement | macOS | Windows | Linux (Ubuntu LTS) |
|---|---|---|---|
| Disk space | 10 GB+ recommended | 10 GB+ recommended | 10 GB+ recommended |
| RAM | 8 GB min, 16 GB ideal | 8 GB min, 16 GB ideal | 8 GB recommended |
| Git | Via Xcode CLI tools | Git for Windows | apt-get install git |
| Additional | Xcode (for iOS and macOS apps) | Visual Studio with C++ (for Windows apps) | curl, unzip, xz-utils, zip, libglu1-mesa |
The devices and OS versions your app can run on are a separate list, in Flutter’s supported deployment platforms.
Flutter bundles the Dart SDK, no separate Dart installation is needed.
Always use the stable channel for production work. Four stable releases are planned for 2026.
macOS installation
Section titled “macOS installation”macOS setup carries the most complexity because it’s the only platform supporting both iOS and Android development simultaneously. The single biggest architectural decision is whether you’re on Apple Silicon (M1/M2/M3/M4) or Intel, because Homebrew install paths, Ruby environments, and emulator image choices all differ.
Installing the Flutter SDK
Section titled “Installing the Flutter SDK”Flutter’s own docs recommend installing with VS Code, which downloads the SDK and adds it to your PATH, or a manual install. Homebrew also has a community-maintained cask, which selects the correct architecture for you:
For a manual install, download the architecture-specific zip from the
Flutter SDK archive.
Apple Silicon uses the flutter_macos_arm64_*.zip bundle and Intel uses
flutter_macos_*.zip. Flutter is phasing out support for Intel Macs.
Once downloaded, extract the zip to a development directory:
For manual installs, add Flutter to your PATH. Since macOS defaults to zsh
(since Catalina), edit ~/.zshrc:
For bash users, add the same line to ~/.bash_profile. Apple Silicon users also
need Homebrew’s shell environment configured:
Intel users must substitute /usr/local/bin/brew. You can verify your Flutter
CLI installation with the which flutter and flutter --version commands.
Xcode and iOS toolchain
Section titled “Xcode and iOS toolchain”Install the latest Xcode from the Mac App Store, then run these commands in sequence (Flutter’s iOS setup):
iOS plugin dependencies
Section titled “iOS plugin dependencies”Since Flutter 3.44, Flutter manages iOS and macOS plugin dependencies with
Swift Package Manager
by default, so a new project needs no extra install. Flutter falls back to
CocoaPods for any plugin that doesn’t support Swift
Package Manager yet, so install CocoaPods only if your app uses such a plugin or
flutter doctor asks for it. CocoaPods is in maintenance mode, and its registry
becomes read-only on December 2, 2026.
If you do need CocoaPods, install it with Homebrew:
The system Ruby shipped with macOS is too old for current CocoaPods releases. If
the Homebrew install doesn’t work, install a newer Ruby first and then install
CocoaPods with gem:
Never use sudo gem install with the system Ruby.
Windows and Linux installation procedures
Section titled “Windows and Linux installation procedures”Windows 10/11 setup
Section titled “Windows 10/11 setup”After installing Git for Windows, the Flutter team recommends the VS Code quick-install path:
- Install VS Code
- Add the Flutter extension
- Open the Command Palette (
Ctrl+Shift+P) - Type
Flutter: New Project, and VS Code will prompt you to download the SDK and add it to PATH automatically.
For manual installation, download the latest .zip from the
Flutter SDK archive
and extract it to a path without spaces or special characters (as a reminder,
never use C:\Program Files\). A good choice is %USERPROFILE%\develop\:
Next, to add Flutter to your path, configure PATH through System Properties →
Advanced → Environment Variables. Edit the Path user variable and add
C:\Users\{username}\develop\flutter\bin. Move this entry to the top of the
list. Once done, close and reopen all terminal windows to ensure the new path
gets applied.
Three Windows-specific gotchas trip up nearly every developer.
First, Microsoft Defender scanning Flutter’s many small files slows builds down,
and antivirus software can quarantine flutter.bat while you extract the SDK.
Add exclusions for the Flutter SDK directory and the pub cache
(%LOCALAPPDATA%\Pub\Cache) from an administrator PowerShell:
Second, Developer Mode must be enabled for building Windows apps with plugins (Settings → Privacy & Security → For Developers → Developer Mode: On).
Third, for Windows desktop development, you need Visual Studio 2022+ with the “Desktop development with C++” workload. Remember, this is Visual Studio, not VS Code.
Linux (Ubuntu LTS) setup
Section titled “Linux (Ubuntu LTS) setup”To get started, install required dependencies first:
The simplest method to install Flutter is via snap:
To install Flutter manually, download the .tar.xz from the
SDK archive and extract:
For Linux desktop development, additional packages are required as documented in the Flutter Linux desktop setup guide:
Never run Flutter commands with
sudoon Linux, as this can create permission issues that are painful to unwind.
Android SDK setup
Section titled “Android SDK setup”Regardless of your operating system, the Android toolchain is where most
flutter doctor failures occur.
To get started, install the latest Android Studio from the Android Studio download page. During the setup wizard, Android Studio installs the base SDK. But the wizard does not install everything Flutter needs.
To do that, open the SDK Manager (Android Studio → Tools →SDK Manager, or from the welcome screen: More Actions → SDK Manager). You need to configure two tabs:
- In the SDK Platforms tab, install the platform for API Level 36 (Android 16).
- In the SDK Tools tab (this is the critical step that most guides gloss
over) ensure all four of these are checked:
- Android SDK Command-line Tools (latest), the #1 most common missing component
- Android SDK Build-Tools (latest)
- Android SDK Platform-Tools (includes
adb) - Android Emulator
Click Apply and confirm.
Without the command-line tools specifically,
flutter doctorwill fail with:cmdline-tools component is missing.
Environment variables for the Android SDK
Section titled “Environment variables for the Android SDK”Set ANDROID_HOME and add platform-tools to PATH. The default SDK locations
differ by OS:
macOS (~/.zshrc):
Windows (System Environment Variables):
- Variable:
ANDROID_HOME=C:\Users\{username}\AppData\Local\Android\Sdk - Add to PATH:
%ANDROID_HOME%\platform-toolsand%ANDROID_HOME%\cmdline-tools\latest\bin
Linux (~/.bashrc):
After configuring the SDK, accept all Android licenses:
Type y at each prompt. This step is mandatory before Flutter can build any
Android app.
Shorebird CLI belongs in your initial setup, not as an afterthought
Section titled “Shorebird CLI belongs in your initial setup, not as an afterthought”Shorebird, founded by Flutter creator Eric Seidel, enables over-the-air Code Push, pushing Dart code updates directly to users’ devices without waiting for App Store or Play Store review.
Installing it alongside Flutter from day one avoids the common “retrofit under
pressure” scenario where teams scramble to add OTA capability while rushing to
fix a production bug. A patch can only update an app
version that was built with shorebird release, so a build you shipped with
plain flutter build can’t receive patches.
Installation commands
Section titled “Installation commands”macOS / Linux:
Windows (PowerShell):
Shorebird installs to ~/.shorebird/bin and automatically adds itself to PATH.
It also installs a private copy of Flutter inside
~/.shorebird/bin/cache/flutter, this is Shorebird’s modified Flutter for Code
Push and should not be added to your PATH.
You can verify the installation by running this:
The shorebird doctor output checks connectivity to Shorebird’s API, auth,
console, download, storage, and CDN endpoints, and checks that Shorebird is
up-to-date. A clean output looks like this (the checks after the endpoints
depend on your project):
The core workflow to get started is:
shorebird login(authenticates your Shorebird account)- Initialize your project with
shorebird init(createsshorebird.yamlwith your app ID) - Create a release with
shorebird release androidorshorebird release ios, - Push OTA updates with
shorebird patch android/ios.
For a new project, shorebird create runs
flutter create and then shorebird init in one step.
Shorebird is purely CLI-driven and works seamlessly alongside the standard Flutter and Dart VS Code extensions.
VS Code configuration for professional Flutter development
Section titled “VS Code configuration for professional Flutter development”Install the Flutter extension (ID: Dart-Code.flutter) from the VS Code
marketplace. It automatically installs the Dart extension
(Dart-Code.dart-code) as a dependency. These two extensions provide debugging,
hot reload, widget inspector, code completion, refactoring, and snippets.
After installation, open the Command Palette (Ctrl + Shift + P) and run
Dart: Use Recommended Settings to apply sensible defaults, or add these to
your settings.json:
Key shortcuts to remember:
F5starts debuggingCtrl+F5/Cmd+F5triggers hot reload during a debug session (saving a file also hot reloads)Ctrl+Shift+F5performs a hot restartCtrl+./Cmd+.opens quick-fix actions for wrapping or extracting widgets.
Creating a new project is done through the Command Palette:
Flutter: New Project → select Application → choose directory → enter name.
Reading flutter doctor output and fixing what’s broken
Section titled “Reading flutter doctor output and fixing what’s broken”Run flutter doctor -v (verbose mode) after completing setup. The command
checks the Flutter SDK, each platform toolchain you can build for (Android,
Xcode on macOS, Chrome, desktop), connected devices, and network resources. Each
line is prefixed with one of three symbols:
| Symbol | Meaning | Action needed |
|---|---|---|
| [✓] | Passed | None |
| [!] | Warning | May need attention; development often still works |
| [✗] | Error | Must fix before building for that platform |
A fully healthy macOS output looks like this example (your versions, paths and devices will differ):
The most frequently encountered errors and their fixes:
flutter: command not found, Flutter is not in PATH. Re-add theexport PATH=...line to the correct shell config file (~/.zshrc,~/.bashrc, or Windows Environment Variables) and restart your terminal.cmdline-tools component is missing, Open Android Studio → Tools → SDK Manager → SDK Tools tab → check “Android SDK Command-line Tools (latest)” → Apply.Android license status unknown, Runflutter doctor --android-licensesand accept each license withy.Unable to find bundled Java version, Newer Android Studio versions renamed thejredirectory tojbr. On macOS, create a symlink:cd "/Applications/Android Studio.app/Contents" && ln -s jbr jre. This issue is resolved in recent Flutter+Android Studio combinations, but persists if either is outdated.- CocoaPods failures on Apple Silicon (only for plugins that still use
CocoaPods), Ensure you’re using Homebrew Ruby, not system Ruby. Run
which ruby, it should show/opt/homebrew/opt/ruby/bin/ruby, not/usr/bin/ruby. Reinstall CocoaPods viabrew install cocoapodsif needed. - Lock file errors during
pub get, Runflutter clean, thenflutter pub cache repair, thenflutter pub get. If persistent, deletepubspec.lockand retry. - “No devices available”, Either no emulator is running, no physical device
is connected, or platform support isn’t enabled. Start an emulator from
Android Studio’s Device Manager or run
flutter emulators --launchwith an available emulator name.
Conclusion
Section titled “Conclusion”The Flutter installation process has matured significantly: the VS Code quick-install path handles SDK download and PATH configuration in one step, and Swift Package Manager has replaced the historically fragile CocoaPods dependency chain for most iOS projects.
Three setup decisions matter most for production teams: choosing Homebrew on macOS or the VS Code install path (both handle architecture differences automatically), installing Android SDK Command-line Tools explicitly via SDK Manager (the universal failure point that no wizard handles automatically), and integrating Shorebird from project inception rather than retrofitting it under deadline pressure.
To confirm everything works, run flutter doctor -v and shorebird doctor
after every installation step. If both report no issues, your environment is
production-ready.
Next steps
Section titled “Next steps”Now that your Flutter environment is properly configured, here are strategic next steps based on your project needs:
For production deployment planning: Explore Shorebird’s Code Push system architecture to understand how over-the-air updates work at a technical level, then review update strategies to determine when patches download and apply in your app’s lifecycle.
For team collaboration: Set up organizations in Shorebird to manage team access and permissions, and integrate with your CI/CD pipeline using GitHub Actions, Codemagic, or generic CI systems.
For security-conscious environments: Review patch signing to cryptographically verify patch authenticity, understand Shorebird’s security model, and learn about obfuscation and security tooling integration.
For staged rollouts: Implement percentage-based rollouts to gradually deploy patches to user segments, set up staging patches for internal testing, and understand patch rollback procedures for emergency scenarios.
For multi-flavor apps: Configure flavors to manage separate development, staging, and production builds with independent patch tracks.