Mobile Notes: Last Year's Defaults Are Starting To Lie

I keep a mental list of defaults that mobile teams stop questioning.
One Xcode install is probably fine. CocoaPods is still the path on iOS. The Android large-screen pass can wait. React Native edge-to-edge cleanup can happen after the feature ships. That old MAUI ListView is ugly, but it is stable enough to leave alone for another sprint.
That list ages badly.
This week felt like a good reminder that the defaults moved. Not in a dramatic "rewrite everything" way. More in the much more annoying "the thing you thought was still the boring baseline is now the migration" way.
Apple: you don't have one toolchain anymore
Apple is already running a clear two-lane reality. Xcode 26.6 shipped on June 25 while Xcode 27 beta 3 and iOS 27 beta 3 landed on July 6. On top of that, apps uploaded to App Store Connect have needed to be built with Xcode 26 or later and the iOS 26 family of SDKs since April 28, 2026.
The old habit of "I will install the new Xcode when I have a quiet afternoon" stopped working. You do not have one Apple toolchain anymore. You have a shipping lane and a future lane, whether you planned for them or not.
What I would actually do on an iOS team this week:
- Keep Xcode 26.6 as the shipping lane — it satisfies Apple's current submission floor.
- Install Xcode 27 beta 3 separately and run the ugly flows first: auth, camera, deep links, keyboard-heavy forms, large text, sheet-heavy navigation.
- Check CI images, not just laptops. A lot of "we upgraded Xcode" pain is really build-node drift.
- Audit third-party SDKs that touch privacy prompts, login, media, or background work.
None of this is glamorous. It is still cheaper in July than in the week you need a hotfix.
Android: phone-first is now technical debt
Google's Android 17 guidance is unusually direct. The official page says Android 17 brings apps to more form factors with an adaptive-first development standard, and the getting-started steps explicitly tell teams to review behavior changes, test all flows, and update to target Android 17 if possible.
For a long time, a lot of teams quietly treated "works on the phone" as the real definition of done, with large-screen behavior as a kind of future homework assignment. Android keeps making that bargain worse.
The important part is that adaptive work is not just layout work. If the app widens and your navigation still thinks in one stack, that is not adaptive. If the panes resize but the feature model still assumes one visible task at a time, that is not adaptive either. If back behavior, focus, scrolling, or multi-pane state all feel improvised, users still experience that as "this app does not belong here."
The cross-platform defaults shifted too
The cross-platform lesson this week is not that one framework won. It is that the frameworks are all nudging teams away from old comfort blankets at the same time.
React Native 0.86 adds comprehensive edge-to-edge support on Android 15+ and is the second release in a row with no user-facing breaking changes. The no-breaking-changes story makes this a good moment to clean up platform polish instead of spending all your energy surviving the upgrade. If your app still depends on old padding assumptions or keyboard avoidance behavior that was never really intentional, the framework has now moved closer to the platform. Good for users, mildly inconvenient for old code. Usually the right kind of inconvenience.
Flutter 3.44 is more explicit. Swift Package Manager is the default for iOS and macOS starting with that release. The Flutter CLI will fall back to CocoaPods for plugins that still need it, but the post is clear that CocoaPods support will eventually go away. If your Flutter app has one plugin that only behaves on an old CocoaPods-shaped path, that plugin just became more strategically important than the team may have admitted.
.NET MAUI for .NET 10 is blunt in a more enterprise way. ListView is deprecated, TableView is deprecated, CollectionView uses newer default handlers, and .NET for Android now supports API 36 and JDK 21. I think of it as the release politely telling you to inventory your old bets before the platform inventories them for you.
What I would audit before next Friday
One afternoon, a boring matrix:
- Apple shipping lane: current Xcode, current SDK floor, App Store Connect submission readiness.
- Apple future lane: latest beta install, smoke-tested flows, third-party SDK red flags.
- Android: Android 17 behavior changes reviewed, large-screen flows exercised, resize and back behavior checked.
- React Native: edge-to-edge screens, keyboard overlap, translucent chrome, navigation bars.
- Flutter: plugin support for SwiftPM, iOS build scripts that still expect CocoaPods.
- MAUI:
ListViewandTableViewinventory, Android build images, JDK assumptions.
Not busywork. Buying time back from future me.
When five different mobile stacks all start nudging you away from old assumptions in the same week, I try not to overthink it. I update the defaults I trust.
That is the Friday note.