Skip to content
| Marketplace
Sign in
Visual Studio Code>Linters>MAUI iOS Submission GateNew to Visual Studio Code? Get it now.
MAUI iOS Submission Gate

MAUI iOS Submission Gate

ReadyStack

| (0) | Free
Audits a .NET MAUI app's iOS Info.plist and Entitlements.plist for App Store Review 5.1.1(i) purpose-string rejections and broken export-compliance keys.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

MAUI iOS Submission Gate

MAUI iOS Submission Gate

App Review reads Platforms/iOS/Info.plist before it reads any of your C#. In a .NET MAUI solution that file is one of the few things you still edit by hand, and it is where the rejections live.

This extension reads the Apple property lists in your project as text and applies 16 checks. Every finding names the key, the line it sits on, what App Review or App Store Connect does with it, and the edit that clears it.

What it looks at

**/*.plist — in a MAUI project that is Platforms/iOS/Info.plist and Platforms/iOS/Entitlements.plist.

The 16 checks

Purpose strings (Guideline 5.1.1(i)) — every key ending in UsageDescription gets one verdict:

Check What it catches
purpose_empty <string></string> — the prompt shows no reason at all
purpose_placeholder $(PRODUCT_NAME), TODO, "needs access", "description here"
purpose_too_short under 15 characters — names the data, not the use
purpose_no_reason no to / so that / for clause anywhere in the sentence

Superseded keys

Check What it catches
bluetooth_deprecated NSBluetoothPeripheralUsageDescription with no NSBluetoothAlwaysUsageDescription
location_always_deprecated NSLocationAlwaysUsageDescription with no …AlwaysAndWhenInUse…
exits_on_suspend UIApplicationExitsOnSuspend, removed in iOS 10

Capabilities the strings do not back

Check What it catches
bg_location_no_string UIBackgroundModes declares location, no always-usage string
bg_audio_no_mic UIBackgroundModes declares audio, no NSMicrophoneUsageDescription
skad_no_att SKAdNetworkItems present, NSUserTrackingUsageDescription missing
healthkit_partial_strings HealthKit read string without the write string
ats_arbitrary_loads NSAllowsArbitraryLoads is true with no per-domain exceptions
aps_env_development aps-environment still development in an entitlements file

Export compliance

Check What it catches
export_key_missing no ITSAppUsesNonExemptEncryption — the questionnaire stops every upload
export_bool_as_string the key written as <string>false</string>; App Store Connect ignores it
export_true_no_code flag true, no ITSEncryptionExportComplianceCode — the US BIS annual self-classification report falls due each 1 February

Measured on the sample

_fixtures/clean.plist returns 0 findings. _fixtures/dirty.plist returns 13 findings — 10 at error, 3 at warning. Both files ship with the extension, so you can re-run the numbers yourself.

Free and licensed

Free, no key: all 16 checks on any plist you open, with line numbers and fixes.

Licence key ($29 once): the export axis — a dated Submission Evidence report in Markdown covering every plist in the solution, a file you keep, attach to the release ticket, or hand to a client. 7-day full refund.

Freelance iOS release consultants list $60–$150/hour on Upwork for submission review; one 5.1.1(i) rejection costs a re-cut build and a second App Review cycle.

Hub: https://getreadystack.com/tools/maui-ios-submission-gate

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft