Skip to content

maui: phase 6 (Essentials) — docs verdict, no code change needed#271

Merged
jonathanpeppers merged 1 commit into
mainfrom
jonathanpeppers/maui-phase-6-essentials
Jun 12, 2026
Merged

maui: phase 6 (Essentials) — docs verdict, no code change needed#271
jonathanpeppers merged 1 commit into
mainfrom
jonathanpeppers/maui-phase-6-essentials

Conversation

@jonathanpeppers

@jonathanpeppers jonathanpeppers commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Verdict: Phase 6 is a no-op

After investigation, no Compose-specific Essentials implementations
are needed
.

Microsoft.Maui.* Essentials APIs (IBattery, IConnectivity,
IPreferences, ISecureStorage, IGeolocation, IFilePicker,
IShare, IClipboard, IBrowser, IHapticFeedback, IVibration,
IFlashlight, IEmail, ISms, IPhoneDialer, IMediaPicker,
ILauncher, IFileSystem, IAppInfo, IDeviceInfo) wrap platform
APIs (Intent, SharedPreferences, EncryptedSharedPreferences,
LocationManager, ClipboardManager, Vibrator, Camera2, system
services) and are independent of the handler chain.

UseAndroidXCompose() only swaps handler registrations — it does not
touch the Essentials DI registrations — so MAUI's stock Android
Essentials implementations resolve unchanged.

The sample uses MauiAppCompatActivity (unchanged by this backend),
so even APIs walking Platform.CurrentActivity find the activity
type they expect.

What changed

  • docs/maui-backend.md — Phase 6 section rewritten as the
    investigation verdict + per-API coverage table + "when future work
    might be needed" caveat. The only future case is a
    Compose<IFilePicker> / Compose<IShare> overlay if a Material 3
    native picker UX is ever required; the system intent is the
    platform-correct UX, so this stays a deferred follow-up.

No production code or sample changes — by design.

Copilot AI review requested due to automatic review settings June 12, 2026 22:31

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR closes out Phase 6 (Essentials) of the MAUI Compose backend with a no-op verdict: all Microsoft.Maui.* Essentials APIs work unchanged under UseAndroidXCompose() because they wrap platform APIs (Intent, SharedPreferences, LocationManager, etc.) that are independent of the handler chain. The PR delivers a comprehensive sample page proving this, wiring, manifest permissions, and documentation.

Changes:

  • New EssentialsPage (XAML + code-behind) exercising ~18 Essentials APIs with per-row result labels for on-device verification, plus AppShell route and HomePage catalog entry.
  • AndroidManifest.xml gains VIBRATE, location, FLASHLIGHT, and CAMERA permissions needed by the interactive Essentials APIs on the page.
  • docs/maui-backend.md Phase 6 section rewritten from a speculative plan to a definitive investigation verdict with a per-API coverage table and future-work caveat.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/Microsoft.AndroidX.Compose.Maui.Sample/Pages/EssentialsPage.xaml New XAML page layout with snapshot labels, storage round-trip buttons, feedback/intent/permission-gated sections.
src/Microsoft.AndroidX.Compose.Maui.Sample/Pages/EssentialsPage.xaml.cs Code-behind populating snapshot labels on load and handling button taps for each Essentials API with result feedback.
src/Microsoft.AndroidX.Compose.Maui.Sample/HomePage.xaml.cs Adds "Essentials" entry to the gallery index.
src/Microsoft.AndroidX.Compose.Maui.Sample/AppShell.xaml.cs Registers "essentials" Shell route.
src/Microsoft.AndroidX.Compose.Maui.Sample/Platforms/Android/AndroidManifest.xml Declares permissions for Vibration, Location, Flashlight, and Camera.
docs/maui-backend.md Replaces speculative Phase 6 plan with the no-op investigation verdict, API coverage table, and future-work notes.

Comment thread docs/maui-backend.md Outdated
Comment thread src/Microsoft.AndroidX.Compose.Maui.Sample/Pages/EssentialsPage.xaml Outdated
Comment thread src/Microsoft.AndroidX.Compose.Maui.Sample/Pages/EssentialsPage.xaml.cs Outdated
Comment thread src/Microsoft.AndroidX.Compose.Maui.Sample/Pages/EssentialsPage.xaml.cs Outdated
@jonathanpeppers jonathanpeppers force-pushed the jonathanpeppers/maui-phase-6-essentials branch from 05ab479 to d7ae5ba Compare June 12, 2026 22:36
@jonathanpeppers jonathanpeppers changed the title maui: phase 6 (Essentials) — sample page proving no-op + docs verdict maui: phase 6 (Essentials) — docs verdict, no code change needed Jun 12, 2026
Phase 6 was always optional. After investigation, no Compose-specific
Essentials implementations are needed: `Microsoft.Maui.*` Essentials
APIs (`IBattery`, `IConnectivity`, `IPreferences`, `ISecureStorage`,
`IGeolocation`, `IFilePicker`, `IShare`, `IClipboard`, `IBrowser`,
`IHapticFeedback`, `IVibration`, `IFlashlight`, `IEmail`, `ISms`,
`IPhoneDialer`, `IMediaPicker`, `ILauncher`, `IFileSystem`,
`IAppInfo`, `IDeviceInfo`) wrap platform APIs (`Intent`,
`SharedPreferences`, `EncryptedSharedPreferences`, `LocationManager`,
`ClipboardManager`, `Vibrator`, `Camera2`, system services) and are
independent of the handler chain. `UseAndroidXCompose()` only swaps
handler registrations; the stock MAUI.Essentials Android
implementations resolve through DI and run unchanged.

Rewrites the Phase 6 section in `docs/maui-backend.md` as the
investigation verdict + per-API coverage table + "when future work
might be needed" caveat. The only future case is a
`Compose<IFilePicker>` / `Compose<IShare>` overlay if a Material 3
native picker UX is ever required; the system intent is the
platform-correct UX, so this stays a deferred follow-up.

No production code or sample changes — by design.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jonathanpeppers jonathanpeppers force-pushed the jonathanpeppers/maui-phase-6-essentials branch from d7ae5ba to 41bb7a6 Compare June 12, 2026 22:44
@jonathanpeppers jonathanpeppers merged commit 2901706 into main Jun 12, 2026
1 check passed
@jonathanpeppers jonathanpeppers deleted the jonathanpeppers/maui-phase-6-essentials branch June 12, 2026 22:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants