Writing4 min read

iPhone Duo, and the SDK that shipped before the simulator

Xcode 27.2 beta is full of foldable API you cannot run yet. What is in there, and which version you actually need.

Work

Fortune 500 scale, unusual native integrations, and releases that run themselves.

Highlights

  • PepsiCoBluetooth smart bottleGatorade Gx, with sweat patch scanning
  • Nivodav2 redesignLed the release, with a new Stripe checkout
  • Nivoda3x active usersIn my year on the team
  • Nivoda65% smaller appOn iOS, and 40% smaller on Android
  • PepsiCoAutomated releasesGitHub Actions pipelines, and 10x faster native builds
  • CloudWindServerless backendHoumti on AWS Lambda and DynamoDB, 40% cheaper to run

Roles

    • Integrated the Smart Gx Bottle over a custom Bluetooth SDK, with sweat patch scanning for real-time hydration tracking.
    • Migrated releases to GitHub Actions: multi-environment pipelines and automated store submissions.
    • Made native CI builds 10x faster with a fingerprinted build cache.
    • Added support for 10 Latin American countries, switched on per country with feature flags.
    • Supported the Xamarin to React Native migration of the SodaStream app.
    • Built a full eCommerce demo in two weeks, from sign-in to orders.
    • React Native
    • SwiftUI
    • Kotlin
    • GraphQL
    • Fastlane
    • Bluetooth
    • Led the v2 release: a complete redesign with gemstone support.
    • Rebuilt the checkout on Stripe, with multiple shipping options.
    • Made the iOS app 65% smaller and the Android app 40% smaller.
    • Automated releases with CI/CD, cutting manual release work by 60%.
    • Built a reusable, type-safe component library, cutting styling code by 40%.
    • Active users tripled during my year on the team.
    • React Native
    • GraphQL
    • Swift
    • Stripe
    • Push Notifications
    • Developed Houmti, a social app for neighborhoods, with chat, polls and location features.
    • Moved the backend to AWS Lambda, DynamoDB and API Gateway, cutting operating costs by 40%.
    • Engagement rose 30% in six months; daily active users grew 15%.
    • Worked with the technical team to cut bug-related delays by 25%.
    • TypeScript
    • React Native
    • Next.js
    • AWS Lambda
    • DynamoDB
    • Node.js
  1. Details under wraps. More soon.

A few clients I keep private. I can walk you through them directly.

JVM-Simple-Lang

A custom language targeting the JVM

Open
Stars16on GitHub
CategoryProgramming languages
DeveloperOussama Khezour

Information

Developer
Oussama Khezour
Category
Programming languages
Source
Open on GitHub
JVM-Simple-Lang

SAT Heuristic Solver

Heuristic SAT solving with an Electron GUI

Open
Stars10on GitHub
CategorySolvers
DeveloperOussama Khezour

Information

Developer
Oussama Khezour
Category
Solvers
Source
Open on GitHub
SAT Heuristic Solver

context-text-generator

Context-based text generation, written in C

Open
Stars4on GitHub
CategoryText generation
DeveloperOussama Khezour

Information

Developer
Oussama Khezour
Category
Text generation
Source
Open on GitHub
context-text-generator

LunarLander RL

A reinforcement learning solver for Lunar Lander

Open
Stars2on GitHub
CategoryReinforcement learning
DeveloperOussama Khezour

Information

Developer
Oussama Khezour
Category
Reinforcement learning
Source
Open on GitHub
LunarLander RL

Tayssir

Inventory app for small business owners

Private
StarsNoneon GitHub
CategoryBusiness
DeveloperOussama Khezour

Information

Developer
Oussama Khezour
Category
Business
Source
Not open source
Tayssir

4 min read

iPhone Duo, and the SDK that shipped before the simulator

Xcode 27.2 beta is full of foldable API you cannot run yet. What is in there, and which version you actually need.

Xcode 27.2 beta landed on September 16 with the iOS 27.2 SDK. It is full of iPhone Duo support: hinge observation, reserved regions, a new arrangement container, a whole family of vertical bar controls. There is no Duo simulator in it and no device support. Apple’s release notes say that arrives later this month, in Xcode 27.1.

Xcode 27.2 is in beta. Xcode 27.1 is the one still coming. The numbers run backwards because 27.1 is the Duo launch train and 27.2 is the ordinary next cycle, seeded first.

So you can compile against the new API today. You cannot see it work.

Which version you need

Use 27.2 beta to read the API and start moving code. Wait for 27.1 to build and ship, because that is the release with the simulator and the pose controls.

That is not a preference. The amount of screen your app gets is decided by the SDK it links against, and there are three outcomes. Built before iOS 27, you run in a narrow safe area on black. Built with the iOS 27 SDK, you reach the left of the status bar. Built with the iOS 27.1 SDK, you go full screen and your bars lay out vertically under the status bar.

Most shipping apps are in the middle tier. If you use standard controls you get a decent result by rebuilding. If you have a custom nav bar, the automatic path does almost nothing for you.

The one that will bite

On the inner display your bar buttons go vertical. That is a real API, not magic, and it has a trap in it.

var axisBehavior: UIBarButtonItem.AxisBehavior { get set }
// .automatic | .horizontalOnly | .verticalPreferred

An item marked .horizontalOnly is not shown on the inner display. Not compressed, not moved. Gone. If you set that because the item looked wrong stacked vertically, you just deleted it from the interface on the device this API exists for.

There is a second default worth knowing. When the vertical bar runs out of room, UINavigationItem.verticalBarCompressionBehavior decides who loses, and .automatic resolves to .prefersTabBar on iOS. Your bar buttons are first out unless you say .prefersBarItems.

You can turn the whole thing off with UIViewController.preferredVerticalBarBehavior, which is .automatic or .disabled. There is no case that forces vertical. You can decline it, you cannot demand it.

Hinge and fold

UIHingeInteraction in UIKit, onHingeChange in SwiftUI. Both give you an angle and a status of closed, partially open, or fully open.

Watch the seams between them. UIKit’s angle is a CGFloat, SwiftUI’s is an Angle. UIKit’s status has a fourth case, .unknown, that SwiftUI does not have. If you bridge the two layers, you are converting units and mapping enums that are not the same set.

More useful than either is reserved regions. A region is an area of your view that something else owns, either an occlusion like a camera, or a division, which is the fold. You query it off a geometry proxy in SwiftUI or UIView.ReservedRegion in UIKit, and each one hands you a frame plus the margins interactive content should keep clear.

The rule is simple. Scrollable content can run through the fold. A button on the crease is a button people miss.

What actually breaks

None of this is the hard part. The hard part is three assumptions a fixed rectangle let us get away with for eighteen years.

Orientation checks. The inner display does not honor supported interface orientations, so any layout branching on orientation is now wrong. Branch on size classes.

UIScreen.main. Deprecated since iOS 26, and meaningless on a two display device. Ask window?.windowScene?.screen and read scale from traitCollection.displayScale.

Symmetric safe area math. view.bounds.width - view.safeAreaInsets.left * 2 was always a shortcut. Use view.bounds.inset(by: view.safeAreaInsets).width and treat each edge separately.

If you ship React Native

Your app is a UIKit app, so the tier rule applies to you exactly as written. Rebuild against 27.1 and look at what happens.

None of the rest has a JavaScript surface. The hinge is an easy native module. Reserved regions are the valuable one and the harder one, because the query is per view, not a device event.

Look at the vertical bar first, because it hits apps that adopt nothing. If your navigation is a JS component drawing its own bar, you are not getting vertical layout, and you may be getting it half applied around a native bar you forgot was still there.

What I would not do is read a device model string and branch on it. One device is several shapes now.

This week

Delete the orientation branches. Fix the safe area math. Stop asking UIScreen.main questions it cannot answer. Audit any .horizontalOnly you were tempted to set.

None of that needs a simulator, and all of it is correct on every iPhone ever shipped. Then get 27.1 and spend your time on the part that needs eyes on a screen.

Keep reading

Building something with React Native?

Get in touch

iMessage
Today 9:41

Hi, I'm Oussama.

Since 2021 I've worked on apps for PepsiCo, Nivoda and CloudWind, from native modules and architecture to CI/CD and store releases.

What I care about most is the last ten percent, the part users feel but never mention.

Got an app in mind? Freelance contract or full-time role. Tell me what you're building and I'll get back to you.

Sends from your mail app to

Oussama Khezour

Senior software engineer

now
PepsiCo, through Toptal
also
A stealth startup, as technical co-founder
shipping since
2021
platforms
iOS and Android
email

notes

I build software end to end, from architecture to release. What I care about most is the last ten percent, the part users feel but never mention.

Stack

  • React Native
  • TypeScript
  • SwiftUI
  • Kotlin
  • GraphQL
  • Expo
  • Fastlane
  • GitHub Actions
  • AWS Lambda
  • Bluetooth
  • Stripe
  • Next.js

Elsewhere

Top 3% of freelance talent, vetted by Toptal.

Favorites

No favorites yet. Tap the heart on a photo to keep it here.

Screenshots

6 items

Wallpapers

10 items

Apps

A selection of the apps I've worked on, live on the App Store.

Contributor at PepsiCoGatorade GxHydration from a smart bottle and a sweat patchGatorade GxHealth & FitnessView

Selected apps

  • Gatorade GxHydration from a smart bottle and a sweat patch 1.1KView
  • NivodaThe B2B marketplace for diamonds 17View
  • HoumtiA social app for your neighborhoodView

A few of the apps I've worked on, not all of them; the rest I can walk you through directly. Ratings, screenshots and details come straight from the App Store.

Games

  • FlapFly between the pipes
  • 2048Slide the tiles to reach 2048

Two small games I built for this site. Scores stay in your browser.

Gatorade Gx: Sports Science

The Gatorade Company

View
1.1K ratings4.6
Age12+Years old
CategoryHealth & Fitness212 MB

What I did

Senior full-stack developer, through Toptal2023 to now

  • Integrated the Smart Gx Bottle over a custom Bluetooth SDK, with sweat patch scanning for real-time hydration tracking.
  • Migrated releases to GitHub Actions: multi-environment pipelines and automated store submissions.
  • Made native CI builds 10x faster with a fingerprinted build cache.
  • Added support for 10 Latin American countries, switched on per country with feature flags.

Information

Seller
The Gatorade Company
Size
212 MB
Category
Health & Fitness
Compatibility
iOS 15.1 or later
Languages
3 languages
Age Rating
12+
Version
3.3.1, Sep 17, 2026
Gatorade Gx

Nivoda

Nivoda Limited

View
17 ratings3.6
Age4+Years old
CategoryBusiness111 MB

What I did

React Native engineer2022 to 2023

  • Led the v2 release: a complete redesign with gemstone support.
  • Active users tripled during my year on the team.
  • Rebuilt the checkout on Stripe, with multiple shipping options.
  • Made the iOS app 65% smaller and the Android app 40% smaller.
  • Automated releases with CI/CD, cutting manual release work by 60%.
  • Built a reusable, type-safe component library, cutting styling code by 40%.

Information

Seller
Nivoda Limited
Size
111 MB
Category
Business
Compatibility
iOS 16.4 or later
Languages
One language
Age Rating
4+
Version
3.0.5, Aug 27, 2026
Nivoda

Houmti

CloudWind

View
My partDeveloperCloudWind
Years2021 to 2022on the team
PlatformiOSApp Store

What I did

Full-stack engineer2021 to 2022

  • Developed Houmti, a social app for neighborhoods, with chat, polls and location features.
  • Moved the backend to AWS Lambda, DynamoDB and API Gateway, cutting operating costs by 40%.
  • Engagement rose 30% in six months; daily active users grew 15%.
  • Worked with the technical team to cut bug-related delays by 25%.
Houmti

Flap

Oussama Khezour

CategoryGamesArcade
Age4+Years old
LanguageENEnglish

Fly between the pipes

  • Tap, click or press Space to flap.
  • Leave mid-flight and it waits where you left it.
  • Keeps your best score.

Information

Seller
Oussama Khezour
Category
Games
Price
Free
Compatibility
iPhone and iPad
App Privacy
Data Not Collected
Flap

2048

Oussama Khezour

CategoryGamesPuzzle
Age4+Years old
LanguageENEnglish

Slide the tiles to reach 2048

  • Swipe, or use the arrow keys.
  • Undo takes back one move.
  • Keeps your game in progress and your best score.

Information

Seller
Oussama Khezour
Category
Games
Price
Free
Compatibility
iPhone and iPad
App Privacy
Data Not Collected
2048

Book a call

Pick a time and I'll confirm by email. I take calls on weekdays, 13:00 to 21:00 my time (UTC+1).

 

 

 

Oussama Khezour

Senior software engineer

now
PepsiCo, through Toptal
also
A stealth startup, as technical co-founder
shipping since
2021
platforms
iOS and Android
email

notes

I build software end to end, from architecture to release. What I care about most is the last ten percent, the part users feel but never mention.

Stack

  • React Native
  • TypeScript
  • SwiftUI
  • Kotlin
  • GraphQL
  • Expo
  • Fastlane
  • GitHub Actions
  • AWS Lambda
  • Bluetooth
  • Stripe
  • Next.js

Elsewhere

Top 3% of freelance talent, vetted by Toptal.

Choose a wallpaper

Each has a day and a night version.

Wallpaper

Appearance

Automatic

Automatic follows your device.

Device

The same site on the iPad, in landscape.

Display & Brightness

Auto-Lock

Volume

Silent Mode
System Haptics

The phone starts silent.

Sounds & Haptics

Vision

Reduce Motion

Fades instead of springs, and a still wallpaper.

Accessibility

Tracking
None
Analytics
None
Cookies
None

What you change here stays in this browser.

Location

Weather
When You Ask

Sending

Messages
Your Mail App
Calendar
Your Mail App

Privacy & Security

Low Power Mode

Stills the wallpaper and the animations.

Battery Level
100%
State
Not Charging

Your own battery, as your browser reports it.

Battery

About

Name
oussama.org
Built with
Astro, no framework
Type
Inter, JetBrains Mono
Wallpaper
WebGL

© 2026 Oussama Khezour

General

This browserNothing yet

Nothing stored yet.

Storage

Reset

World Clock

  • Today, your timeYou--:--
  • UTC+1Oussama--:--
  •  San Francisco--:--
  •  New York--:--
  •  London--:--
  •  Tokyo--:--

Calls

Weekdays, 13:00 to 21:00 my time.

Book a call

My hours are 13:00 to 21:00 UTC+1 on weekdays, laid on your day. The red line is now.

--

Weather needs JavaScript.

Weather

Your location comes from your time zone unless you share a precise one. The other cities are the ones in your World Clock.

Reminders

    2048

    Score0

    Best0

    Calculator

    0

    Oussama Khezour

    Senior software engineer

    Now at PepsiCo, through Toptal.

    Message