Summary
Scout is a native iPad app: on an iPad it fills the screen at the iPad's own size (820×1180pt on an iPad Air 11", up to 1032×1376pt on a 13" iPad Pro) instead of running in a small iPhone window. It is locked to portrait and full screen only, exactly like the iPhone build. The screens are the phone screens, laid out at the wider size; the map gains the most from the room.
Status
Shipped in v1.1.102 (built 2026-10-07, aa4cdd6b; mobile/app.json:23 reads
supportsTablet: true from that tag on, and in every build since, including the current 1.1.114). It is native
configuration, so it could not ship over the air (and editing app.json changes the
fingerprint runtime version; see mobile/docs/OTA_UPDATES.md). Every build up to and including 1.1.101 is
iPhone-only (supportsTablet: false): iPads run it in iPadOS's iPhone compat
window, a 375×667 iPhone SE / 8–sized frame scaled up.
Why it changed: App Review rejected 1.1.100 (Guideline 4, "text is truncated", iPad Air 11" on iPadOS 27). In the compat window the onboarding rarity cards ran under the CTA and a patch name ellipsized (fixed separately — see onboarding, Edge cases, "The rarity grid on small screens"). Running natively on iPad removes the compat window for every iPad user; the small-screen fix still matters for iPhone SE / 8 / mini.
User-facing surfaces
Every screen of the app, at iPad size. Nothing is iPad-only.
How it works
Two keys in mobile/app.json → expo.ios:
"supportsTablet": true→UIDeviceFamily[1, 2](iPhone and iPad)."requireFullScreen": true→UIRequiresFullScreen = YES.
The second one is the portrait lock, and it is not optional. With supportsTablet
alone, Expo's RequiresFullScreen config plugin overwrites
UISupportedInterfaceOrientations~ipad with all four orientations, because App Store
validation (ITMS-90474) rejects a multitasking iPad app that cannot rotate — so the iPad
would rotate. With requireFullScreen, no iPad-specific list is written and iPadOS falls
back to UISupportedInterfaceOrientations, which "orientation": "portrait" sets to
portrait and portrait-upside-down.
Data model
None.
API surface
None.
Key files
mobile/app.json—expo.orientation,expo.ios.supportsTablet,expo.ios.requireFullScreen.mobile/src/config/__tests__/iosDeviceSupport.test.ts— derives the Info.plist from app.json with Expo's own plugins.
Configuration and flags
No feature flag. It is fixed at build time by the two app.json keys above.
Edge cases and known limits
UIRequiresFullScreenis deprecated (iPadOS 26; Apple TN3192). Apple has said it will be ignored and that all orientations will be required. It is still what lets an iPad app lock to portrait and pass upload validation today. When it stops being honoured, iPadOS will rotate and resize Scout regardless — at that point the lock is gone and the app needs real landscape / resizable-window layouts. Not verified on iPadOS 27: the build machine's newest simulator runtime is iOS 26.5 (Xcode 26.6).- Phone layouts at tablet width. Full-width elements (gold CTAs, inputs, rows) span the whole iPad; long text runs long lines. Nothing is broken by it, but nothing is designed for it either.
- App Store listing: a build that supports iPad needs iPad screenshots (13" iPad) in App Store Connect before it can be submitted.
/getand iPads: the smart link routes aniPaduser agent to the App Store (backend/src/public-profile/smart-link.ts:57), but iPadOS Safari requests the desktop site by default and reports a Mac user agent, so many iPads fall through to the website.
What this feature does NOT do
- No landscape. The iPad is locked to portrait, the same as the phone.
- No Split View, Slide Over or Stage Manager windowing. Full screen only — that is
what
requireFullScreenturns off. - No iPad-specific layouts. No multi-column screens, no sidebars, no max-width content column. Every screen is the phone screen at iPad size.
- No support in builds up to 1.1.100. Those are iPhone-only; on an iPad they run in the iPhone compat window.
- No Mac (Apple silicon) or Vision Pro target beyond whatever Apple does by default with an iPad app.
- Not reversible. Once a version supporting iPad is on the App Store, App Store Connect rejects a later build that drops iPad.
Tests that cover it
mobile/src/config/__tests__/iosDeviceSupport.test.ts— runs Expo'sOrientation,RequiresFullScreenandDeviceFamilyplugins over app.json and asserts the derived Info.plist:UIDeviceFamily[1, 2];UIRequiresFullScreentrue, noUISupportedInterfaceOrientations~ipad, portrait-only orientations. Both fail on the iPhone-only config, and the portrait test fails withsupportsTabletset butrequireFullScreenmissing — the one-line change that silently lets the iPad rotate.
Open questions
- What iPadOS 27 does with
UIRequiresFullScreenfor an app built against the iOS 26 SDK — honoured, or ignored with the app rotated anyway. - Whether
/getshould treat a Mac user agent with touch support as an iPad.