§II.04 · APPS · MAKEiOS + ANDROID · DESIGNED AND SHIPPED

The closesta brand ever getsto a person.

It rides in the pocket. It wakes when they wake. It sits under the thumb between elevator floors. We design, build, and ship native mobile apps for brands, products, and commerce: apps that feel native because they are native, not web wrappers with a fresh coat of paint. iOS and Android, end to end: thesis to binary.

F-0 · THE LOCK SCREEN, DAWNTHE FIRST FRAME OF THE DAY06:51the rest can wait.01 · THE WAKEyour brand,first thingthe day begins under the thumb.
F-0 · THE WAKE · CLOSE-UP01 · THE WAKEthe first frame of their day is yours.

F-0 the wake — your brand is the first frame of their day.

01 · POCKET → WAKE

A wrapper stops at the glass. We build to the logic board.

Most “apps” are a website in a shell: one generic layout poured into two stores, rendering above the cover glass and hoping nobody notices. We go down the stack: React Native when one codebase serves the product, native Swift and Kotlin when it needs the metal. The framework is chosen by what the product needs — never by our habit, and never left to you to guess at.

F-1 · THE OBJECT, IN SECTIONGLASS → LOGIC · DRAWN TO LAYERGLASS → LOGIC · ONE TEAM, THE WHOLE STACKL0 · COVER GLASSwhere the thumb landsL1 · OLED PANELwhere the brand is seenL2 · TOUCH DIGITIZERwhere intent registersL3 · HAPTIC ENGINEwhere it answers backL4 · BATTERYthe budget for the dayL5 · LOGIC BOARDwhere native code livesL6 · CHASSIS + ANTENNAthe pocket sideA WEB WRAPPER STOPS HEREWE BUILD TO HERESWIFT · KOTLIN · REACT NATIVE · the product picks, never the habit
F-1 · THE OBJECT, IN SECTIONL0 · COVER GLASSwhere the thumb landsL1 · OLED PANELwhere the brand is seenL2 · TOUCH DIGITIZERwhere intent registersL3 · HAPTIC ENGINEwhere it answers backL4 · BATTERYthe budget for the dayL5 · LOGIC BOARDwhere native code livesL6 · CHASSIS + ANTENNAthe pocket sideA WEB WRAPPER STOPS HEREWE BUILD TO HERESWIFT · KOTLIN · REACT NATIVEthe product picks, never the habit

02 · WAKE → FIRST SESSION

EIGHT SCREENS, ONBOARDING TO compose.

The spine of a first session, drawn screen by screen: welcome, account, permissions, the empty state, the populated home, detail, compose, settings. Every one designed twice: once against iOS conventions, once against Android’s. Each screen names the transition that carries it to the next.

  1. 01Onboarding · welcomepush
  2. 02Account · createpresent
  3. 03Permissionsfade
  4. 04Home · empty staterefresh
  5. 05Home · populatedpush
  6. 06Detail · contentmodal
  7. 07Composetab
  8. 08Settingssession held

03 · UNDER THE THUMB

A thumb has a country: everything it can touch without the hand shifting its grip.

We chart the hand before we draw a single screen.

Cartography first: the tab bar and the bottom sheet in the prime zone, rows and chips in the stretch, headers in the far north where things are read and never pressed. Every target at least 44 pixels — big enough to be honest under a moving thumb.

F-3 · THE REACH CHARTSURVEYED FROM THE GRIPPRIMESTRETCHOUT OF REACHN.01N.04N.06N.05N.07N.03N.02N.0844 PX · MINIMUM HONEST TAP TARGETTHE THUMB · ANCHOR OF THE GRIPNTHE COMPONENT CHARTthe grip never shifts; the interface comes to the thumb.N.01Nav · bottom tab barPRIMEN.04Sheet · bottomPRIMEN.06Input · formPRIMEN.05Row · listSTRETCHN.07Chip · filterSTRETCHN.03Card · contentSTRETCHN.02Header · large titleOUT OF REACHN.08Toast · statusTRANSIENTeight parts: every screen in the flow is assembled from these.
F-3 · THE REACH CHARTPRIMESTRETCHOUT OF REACHN.01N.04N.06N.05N.07N.03N.02N.0844 PX · MINIMUM HONEST TARGETTHE THUMB · ANCHOR OF THE GRIPTHE COMPONENT CHARTthe interface comes to the thumb.N.01Nav · bottom tab barPRIMEN.04Sheet · bottomPRIMEN.06Input · formPRIMEN.05Row · listSTRETCHN.07Chip · filterSTRETCHN.03Card · contentSTRETCHN.02Header · large titleOUTN.08Toast · statusTRANSeight parts: every screen built from these.

F-3 the screen, surveyed from the grip.

04 · FIRST SESSION → HABIT

OPENED TWICE A DAY.
EARNED, NOT TRICKED.

Habit-forming design has a slot-machine reputation it mostly deserves. We run the loop honestly: a cue worth waking for, an action worth the unlock, a return the user chooses. And after launch we keep our hands on the instruments — analytics, crash monitoring, over-the-air updates, and a version cadence that never lets the app go stale in the pocket.

the person holding the device can always feel the difference.

F-4 · THE HABIT LOOP, READ AS AN INSTRUMENTWAKE → OPEN → ACT → RETURNTHE LOOPrun honestlyCUEthe wake, worth waking forOPENthe unlock, repaidACTthe job, done fastRETURNchosen, not chasedANALYTICSAmplitude, wired from day oneCRASH WATCHSentry, every session coveredOTA UPDATESfixes shipped over the airVERSION CADENCEreleases on a steady beatpost-launch, hands on the instruments: analytics · crash monitoring · OTA updates · version cadence
F-4 · THE LOOP, AS INSTRUMENTTHE LOOPCUE · THE WAKEOPENRETURNACT · THE JOBANALYTICSAmplitude, day oneCRASH WATCHSentry, every sessionOTA UPDATESfixes over the airVERSION CADENCEa steady beatpost-launch: analytics · crashes · OTA · cadence

05 · THE BUILD LINETHESIS → BINARY

Five stations. Two binaries.

  1. 01 · SCOPEProduct strategy before pixelsWhat the app does, who it’s for, and the hard question asked first: why does this need to be an app at all?
  2. 02 · DESIGNTwo platforms, drawn in parallelAgainst iOS and Android conventions — never one generic spec sheet stretched across both and feeling slightly wrong on each.
  3. 03 · BUILDThe right metalReact Native when one codebase serves the product; native Swift and Kotlin when it needs the platform’s full depth. The product picks the framework.
  4. 04 · SUBMITThrough both gatesApp Store and Play Store submission, review, and approval, filed, chased, and landed by us.
  5. 05 · OPERATEHands on the instrumentsPost-launch: analytics, crash monitoring, OTA updates, and a version cadence that keeps the app alive in the pocket.
iOS · SHIPPED ANDROID · SHIPPED

06 · THE NUMBERS

Proof, to the decimal.

18
apps shipped to the stores
16.0
iOS minimum target
28
Android minimum · API 28 / Android 9
0.78
React Native build line
3
design densities cut · @1x @2x @3x
2
store binaries per engagement

instrumented with Amplitude · watched by Sentry

07 · IN YOUR HANDS

What lands on your desk.

  • A shipped iOS app
  • A shipped Android app
  • Store listings, written and assembled
  • Analytics and monitoring, wired in
  • Source code in your repository

AND WHAT NEVER DOES

  • Managing store submissions.
  • Picking a framework.
  • Debugging a build pipeline.

Need an app they open twice a day?

Give us the thesis. We’ll give you the binary.