Skip to content

Title: [Android][CoreCLR] Severe startup regression (~5s delay) and APK size increase (~80%) compared to Mono in .NET 11 Preview #10914

@katomegumi1999

Description

@katomegumi1999

Android framework version

net11.0-android (Preview)

Affected platform version

11.0.0-preview.2

Description

I am testing an Avalonia UI (v11.x) application on Android using .NET 11 Preview 2.

With the new default CoreCLR runtime, I am seeing a massive performance and payload regression compared to the legacy Mono runtime. This is particularly noticeable in an Avalonia project which relies on XAML parsing and reflection during startup.

Performance & Size Comparison:

Metric | Mono Runtime | CoreCLR (Default) | Difference -- | -- | -- | -- Startup Time (Cold Start) | ~1.0s | ~6.0s | +500% (5s delay) APK Size (Release/Trimmed) | 21 MB | 38 MB | +17 MB (~80% increase)

Steps to Reproduce

Create a standard Avalonia Android project.

Build in Release mode using .NET 11 Preview 2 (which defaults to CoreCLR).

Measure startup time and APK size.

Switch back to Mono by adding <UseMonoRuntime>true</UseMonoRuntime> to .csproj.

Compare the results.

Environment:

SDK: .NET 11.0.100-preview.2

UI Framework: Avalonia UI 11.x

Platform: Android 16.0 (API 36)

Architecture: ARM64

Project Configuration (.csproj):
XML

net11.0-android36.1 30.0 true false

Additional Context:

The 5-second delay on startup creates a poor user experience (long white screen). While CoreCLR is expected to improve runtime execution for heavy logic, the current initialization overhead and the 17MB size penalty for the runtime libraries make it difficult to justify switching away from Mono for mobile UI applications at this stage.

Is there a planned optimization for CoreCLR's "cold start" and binary footprint in the upcoming .NET 11 previews, or should Avalonia users stay on Mono for the foreseeable future?

Did you find any workaround?

No response

Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area: App RuntimeIssues in `libmonodroid.so`.needs-triageIssues that need to be assigned.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions