- Home
- Skills
- Mobile Development
- iPhone Duo Ready: Foldable Fixes (Flutter & React Native)
More screenshots
Works with the AI Agents you already use
iPhone Duo Ready: Foldable Fixes (Flutter & React Native)
Find what the iPhone Duo breaks in your Flutter or React Native app before your users do: banners refused unfolded, bars under the camera, stretched phone layouts. Then fix each one with a test.
$15
iPhone Duo Ready: Foldable Fixes (Flutter & React Native)
Example session with this skill installed
My Flutter app has an update going to the App Store next week. Check it's ready for the iPhone Duo and tell me what to fix first.
- Read your context and instructions
- Compiled the iphone duo ready
Summary
Audited my-app for the iPhone Duo: 1 error, 6 warnings, 1 info. The banner error costs ad revenue on every unfolded Duo, so it goes first.
Audit output (real, app name replaced)
$ python3 scripts/duo_audit.py --app .
my-app (flutter)
ERROR DUO-BANNER packages/ui/lib/widgets/google_banner_ad.dart:84
adaptive banner asked at the full window width; unfolded Duo (951 pt) is refused 'Ad size will not fit on screen'. Retry at the short side (references/banner-fix.md).
WARN DUO-BANNER-FOLD packages/ui/lib/widgets/google_banner_ad.dart:84
a banner loaded unfolded is kept after folding to the 466 pt cover screen; drop it in didChangeDependencies when wider than the window.
WARN DUO-ORIENT lib/bootstrap.dart:51
locks portrait, and no landscape or wide layout found. Unfolded, iOS refuses the lock (UISceneErrorDomain Code=101) and runs the app at 951x669.
WARN DUO-ONECOLUMN
no screen switches to two panes on a wide window. Unfolded (951x669) the app shows one phone column across a small iPad. Split list/detail and dashboard screens at 840 pt: references/two-pane.md.
WARN DUO-SIDECOLUMN packages/ui/lib/screens/settings/settings_screen.dart:24
2 file(s) draw their own top or bottom bar and nothing moves it into the Duo's side status column (iOS 27.1 SDK: right inset 84, top 0 on the cover). references/side-column.md.
WARN DUO-STATUSHIDDEN ios/Runner/Info.plist
UIStatusBarHidden is true: the unfolded Duo shows no side status column, so the app keeps top bars unlike every other app. Show it unless the app is full-screen by design (a game). references/side-column.md.
WARN DUO-TESTS
no test resizes to a Duo size. Add references/resize-test.md's fold test.
INFO DUO-SHOTS
no iPhone Duo screenshots. Required on every App Store submission from April 2027.
What each finding means here
| Check | What a Duo user sees | Fix |
|---|---|---|
| DUO-BANNER | No banner at all when unfolded: Google refuses any banner wider than the 466 pt cover screen ("Ad size will not fit on screen") | Retry once at the short side (references/banner-fix.md), with a test that fails first |
| DUO-BANNER-FOLD | Banner loaded unfolded is squeezed after folding | Drop it in didChangeDependencies when wider than the window |
| DUO-ORIENT | Portrait lock refused unfolded; app runs at 951x669 | Landscape layout for each screen |
| DUO-ONECOLUMN | One phone column stretched across a small iPad | Split settings and list screens into two panes at 840 pt |
| DUO-SIDECOLUMN | AppBar runs under the camera in the right-hand status column | Swap Scaffold + AppBar for SideBarScaffold (references/side-bars-code.md) |
| DUO-STATUSHIDDEN | Inner screen has no system column | Set UIStatusBarHidden to false |
| DUO-TESTS | Nothing above is caught by the suite | Resize test: 466x678, 951x669, 669x951 and back, asserting where buttons land |
Next steps
- Write the banner resize test and watch it fail, then apply the retry.
- Add the side-column test (
FakeViewPadding(right: 84, bottom: 34)) and move the bars. - Run on the Xcode 27.1 Duo simulator:
scripts/duo_posture.sh open, then screenshot--display=3(inner) and--display=1(cover). - Check the release build with
scripts/sdk_check.sh: anything below iphoneos27.1 is letterboxed unfolded.
Connects securely to your tools. The creator never sees your data.
About this skill
The iPhone Duo went on sale on 23 October 2026, and most apps on it are broken in ways nothing warns you about. Your tests pass, the app builds, and then on the unfolded screen there's no banner ad, the app bar runs under the camera, and the phone layout is stretched across a small iPad.
Flutter sees the fold as a window resize and nothing else. No hinge, no posture. So most of what breaks is a resize bug you can catch in a widget test, once you know what to look for.
What it finds
- Banner ads refused when unfolded. Google's SDK won't serve a banner wider than the main screen, and on the Duo that's the 466 pt cover screen. 679 pt loads and 680 fails with "Ad size will not fit on screen". The skill includes a drop-in retry and its test.
- Bars under the camera. Built with the iOS 27.1 SDK, the Duo puts the status bar in a column down the right edge, on both screens. A Flutter
AppBarruns straight across it. The skill includes aSideBarScaffoldthat moves back, actions and bottom toolbar buttons into that column, with tests. - A hidden status bar. With
UIStatusBarHiddenset, the inner screen gets no column and your app looks unlike everything else on the device. - One phone column on a small iPad. It shows how to split list and detail screens into two panes at 840 pt, with a drop-in
AdaptivePaneswidget and the traps (grids sized from the window, a selection lost on fold). - Portrait locks iOS ignores unfolded, a missing UIScene manifest that stops an iOS 27 SDK build from launching, a camera controller drawn after release, and a lazy list that drops a half-typed text field on fold.
- Letterboxed builds.
sdk_check.shreads which SDK built your.appor.ipa. Below iOS 27.1 the inner screen is letterboxed.
Fold the simulator without touching the mouse
simctl has no hinge control. duo_posture.sh open presses the Open, Closed and Partially Open buttons in Xcode's Device Hub through macOS Accessibility, so your cursor and focus stay put. That's how the screenshots in this listing were taken.
How it works
Run duo_audit.py --app . for file:line findings, or --workspace <dir> for one line per app. Then the skill works through them with Claude: errors first, a resize test that fails before each fix, a check on the Duo simulator, and Duo screenshots last.
I build small apps on my own and have a shelf of them on the App Store and Google Play. Every fix here came from one of them, found on the Xcode 27.1 Duo simulator.
How to use
- 1
Connect your agent to the Agensi MCP
Copy the prompt and paste it into Claude, ChatGPT, Cursor or any agent that supports MCP. It sets up the connection for you. Manual setup
- 2
Sign in to Agensi
Your agent shows a sign-in link. Sign in and click Allow.
- 3
Ask for what you need
Your agent loads this skill and uses it on your task. It always asks before any payment.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill goes through the trust checks below.
Security scanned
Checked by our 8-point scan before listing
Fresh listing
Recently published to Agensi
Money-back guarantee
Doesn't do what its page promises? You get your money back.
Trust & safety
Security scan
Security scan passed today
Requires