Skip to content

[Windows] ☂️ Add support for Arm64 as a target #62597

Description

@stuartmorgan-g

#53120 tracks supporting Windows arm64 as a development environment; this is for being able to build Flutter Windows applications that run on arm64.

This would require:

Activity

  1. added
    c: new featureNothing broken; request for a new capability
    frameworkflutter/packages/flutter repository. See also f: labels.
    engineflutter/engine related. See also e: labels.
    platform-windowsBuilding on or for Windows specifically
    P3Issues that are less important to the Flutter project
    on Jul 30, 2020
  2. azchohfi commented on May 24, 2022

    @azchohfi

    @stuartmorgan it seems like dart-lang/sdk#47824 was merged, so this is mostly technically unblocked? I do have a Surface Pro X, which is Arm64, so I want to help.

  3. stuartmorgan-g commented on May 25, 2022

    @stuartmorgan-g
    ContributorAuthor

    Interesting, I didn't realize that was on the Dart team's radar.

    I played around with this quite a while ago and got a PoC of the Dart part compiling, but then ran into the issue that it would require cross-building support, or for the entire compilation of the Flutter engine to be on aarm64 (bullet point #2). Does cross-compilation work at the Dart level (i.e., can Dart AOT compilation be done for arm64, but from an x64 machine)?

    If not you could experiment with getting flutter/engine building on arm64, but getting from there to flutter tool support would require CI arm64 machines; I don't know if there's a good option for that available.

    (/cc @cbracken )

  4. azchohfi commented on May 25, 2022

    @azchohfi

    Doesn't seem like cross compilation is a thing yet (dart-lang/sdk#28617). I can try to start things on my Surface Pro X, but that seems challenging. I'll see how far I can get.
    There are Azure machines that support Arm64, so maybe that is one solution, but not sure how the Flutter team would be able to leverage those.

  5. cbracken commented on May 26, 2022

    @cbracken
    Member

    Aside from the compilation of the C++ bits, there's also gen_snapshot and the Dart compilation. Today we can generate a gen_snapshot binary that runs on x64 host and targets arm64, but it is not currently possible (without a significant amount of work from the Dart team) to build a gen_snapshot binary that runs on arm64 and targets x64 because there is no simx64 support in the Dart SDK.

    On macOS, this isn't a huge problem since we can run x64 code on arm64 macs via Rosetta. It looks like this may be possible on Windows 11 and later. It also looks like there was a preview release for Windows 10 based on this Windows blog post but it's unclear if a final version will be available.

  6. stuartmorgan-g commented on May 26, 2022

    @stuartmorgan-g
    ContributorAuthor

    Today we can generate a gen_snapshot binary that runs on x64 host and targets arm64

    Nice! Given the current distribution of machines, that's the most important thing for us to have to get something working end-to-end.

  7. 51 remaining items

  8. dennisameling commented on May 29, 2026

    @dennisameling

    #176385 was merged back in March and made it into the 3.44.0 stable release 🎉 This means that the arm64 Dart SDK and Flutter Engine are now built for every new Flutter release.

    When you download the 3.44.0 SDK it still includes the x64 Dart SDK and Flutter Engine by default, but here's how you can force it to download the arm64 Dart SDK and Flutter Engine:

    1. Download the 3.44.0 SDK to your Windows machine. Let's say we put it in C:\flutter.
    2. Run Remove-Item "C:\flutter\bin\cache\engine-dart-sdk.stamp" -Force, otherwise update_dart_sdk.ps1 won't notice it needs to download a fresh binary instead of using the stamped x64 version.
    3. Run dart --version. This will automatically download the Windows arm64 version:
    > dart --version
    Checking Dart SDK version...
    Downloading Dart SDK from Flutter engine ...
    Expanding downloaded archive with PowerShell...
    Building flutter tool...
    Running pub upgrade...
    Resolving dependencies...
    Downloading packages...
    Got dependencies.
    Dart SDK version: 3.12.0 (stable) (Fri May 8 01:51:14 2026 -0700) on "windows_arm64"
    
    1. Now run flutter precache --windows. This will download the arm64 engine:
    > flutter precache --windows
    [1/5] Flutter SDK
      ├─ [1/5] sky_engine                                            (1.5MB in 0.5s)
      ├─ [2/5] flutter_gpu                                           (0.0MB in 0.0s)
      ├─ [3/5] flutter_patched_sdk                                   (3.8MB in 0.9s)
      ├─ [4/5] flutter_patched_sdk_product                           (3.8MB in 0.9s)
      └─ [5/5] windows-arm64                                        (32.1MB in 8.0s)
    [2/5] Windows SDK
      ├─ [1/4] windows-arm64-debug/windows-arm64-flutter           (77.5MB in 18.3s)
      ├─ [2/4] windows-arm64/flutter-cpp-client-wrapper              (0.1MB in 0.0s)
      ├─ [3/4] windows-arm64-profile/windows-arm64-flutter         (65.0MB in 15.7s)
      └─ [4/4] windows-arm64-release/windows-arm64-flutter         (63.1MB in 15.1s)
    [5/5] windows-arm64/font-subset                                  (2.0MB in 0.5s)
    

    What ships inside the ZIPs (identical arch coverage)

    3.41.9 3.44.0
    Bundled Dart SDK x64, v3.11.5 x64, v3.12.0
    Bundled engine artifacts windows-x64, -profile, -release only windows-x64, -profile, -release only
    Engine revision (bin/cache/engine.stamp) 42d3d75a56efe1a2e9902f52dc8006099c45d937 4c525dac5ebe5971c5708ef73558ed8edcf4a362
    bin/internal/update_dart_sdk.ps1 arm64 logic present (identical) present (identical)

    Both archives bundle only an x64 Dart + x64 engine, and ship a byte-identical update_dart_sdk.ps1 that already knows how to fetch dart-sdk-windows-arm64.zip when PROCESSOR_ARCHITECTURE=ARM64. So the tooling is not the gate; availability in the bucket is.

    Bucket availability, keyed by engine revision

    Here we can see that 3.44.0 really is the first version that ships the necessary arm64 binaries.

    Base URL: https://storage.googleapis.com/flutter_infra_release/flutter/<engineRevision>/<path>

    Artifact (<path>) 3.41.9 (42d3d75a…) 3.44.0 (4c525dac…)
    dart-sdk-windows-arm64.zip 404 200
    windows-arm64/artifacts.zip 404 200
    windows-arm64/windows-arm64-embedder.zip 404 200
    windows-arm64/flutter-cpp-client-wrapper.zip 404 200
    windows-arm64/impeller_sdk.zip 404 200
    windows-arm64/font-subset.zip 404 200
    windows-arm64-release/windows-arm64-flutter.zip 404 200
    windows-arm64-profile/windows-arm64-flutter.zip 404 200
    windows-arm64-debug/windows-arm64-flutter.zip 404 200
    dart-sdk-windows-x64.zip (control) 200 200
    windows-x64/artifacts.zip (control) 200 200
  9. kjxbyz commented on May 29, 2026

    @kjxbyz

    So, when will I be able to package Windows applications that support the ARM64 architecture on a Windows ARM64 machine?

  10. dennisameling commented on May 29, 2026

    @dennisameling

    So, when will I be able to package Windows applications that support the ARM64 architecture on a Windows ARM64 machine?

    @kjxbyz you should be able to do so with the instructions above. As of 3.44.0, you can switch between the Dart x64 and arm64 SDK on Windows. It still defaults to x64 though, so you need to explicitly pull in the arm64 version. The latter will build arm64 binaries by default. More details are here: #186730 (comment)

  11. kjxbyz commented on Jun 8, 2026

    @kjxbyz

    Microsoft, Qualcomm, Nvidia, and OEMs have invested heavily in Windows on ARM, hoping for significant progress in this feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Issues that are less important to the Flutter projecta: desktopRunning on desktopc: new featureNothing broken; request for a new capabilityengineflutter/engine related. See also e: labels.frameworkflutter/packages/flutter repository. See also f: labels.platform-target-armTargeting an ARM-based platformplatform-windowsBuilding on or for Windows specificallyteam-windowsOwned by the Windows platform teamtriaged-windowsTriaged by the Windows platform team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions