Mobile
Level 5/5
Good morning, MariaPangrati
KThe usual€8.10
Freddo Espresso + Koulouri Thessalonikis
Order for 8:15Menu
Freddo Espresso€4.20
Koulouri Thessalonikis€3.90
Freddo Cappuccino€4.80
Cold Brew€4.50
Good morning, MariaPangrati
KThe usual€8.10
Freddo Espresso + Koulouri Thessalonikis
Order for 8:15Menu
Freddo Espresso€4.20
Koulouri Thessalonikis€3.90
Freddo Cappuccino€4.80
Cold Brew€4.50
iOS
Android
We build iOS and Android apps from one codebase, with the notifications, widgets and Live Activities that make an app worth keeping.
A good app earns its place on the home screen by doing one thing noticeably better than the browser. It is there when the phone is locked, and when the signal is gone. We build iOS and Android apps from one codebase that feel native on each platform, work offline and ship on a predictable cadence.
Much of an app's value now sits outside its own screens: a notification at the right moment, a widget, an order's progress on the lock screen. Our guide Beyond the app icon covers what each of these can and cannot do.
Most app projects are one of three kinds.
| App | What it needs | Examples |
|---|---|---|
| Customer app | Ordering or booking, payments, loyalty and notifications | Order ahead, memberships, tickets |
| Companion app | An account, device or service people already use, in their pocket | Everyday habits, health, connected products |
| Staff and field app | Offline forms, photos, sync and your company sign-in | Inspections, deliveries, sales visits |
Most of what people see of an app happens outside it. The four surfaces below are where an app earns attention without being opened. Each has its own rules on both platforms, and we design for those rules.
Thursday 1 October
8:12
Your order is readynow
Freddo espresso and koulouri, at Counter 2.
Free coffee earned1h ago
Ten stamps collected. Use it on your next order.
Your app's icon
Opens the pickup screen
Lock screen
A notification worth sending
A notification is the app speaking when it is closed, so it has to be worth the interruption. Both platforms make people opt in: iOS asks the first time an app requests permission, and since Android 13 notifications are off until the person allows them. We ask when it makes sense, after the first order and not at first launch, which is what Apple recommends.
Then we keep the promise: one notification per event, sent when it happens, that opens the right screen. Marketing messages need explicit consent on the App Store, and the app gets a settings screen where people can change their mind.
WidgetsOn the home screen, one tap away
Small
K7 of 10StampsMedium
7/10Lock screen
The usual Freddo Espresso Koulouri Thessalonikis
A widget puts one piece of the app on the home screen or the lock screen: the next booking, the usual order, today's numbers. It is for glancing. Apple is clear that widgets are not small apps and do not update in real time: a widget that is viewed often typically gets 40 to 70 refreshes a day. A widget can carry a button or a toggle, so one tap can reorder or check in without opening the app.
Android widgets follow the same idea with their own sizes and refresh limits. We design each size deliberately and choose the one action that deserves the space.
Thursday 1 October
8:12
KOrder 2048Ready in 4 minReady · Counter 2
Preparing your orderYour order is readyReceivedPreparingReady
Lock screen
Dynamic Island
Lock screen
Dynamic Island
A Live Activity shows something that is happening now: an order being prepared, a ride arriving, a workout. On iPhone it appears on the Lock Screen and, on models that have one, in the Dynamic Island. It also shows on a paired Apple Watch, in CarPlay and on the Mac. It can run for up to eight hours and stays on the Lock Screen for up to four more.
Android's equivalent is Live Updates, introduced with Android 16, for ongoing activities the person started, such as navigation, a call or a delivery. Neither platform allows ads or promotions there. We use them for tasks with a clear start and end, update them from the server, and end them the moment the task is done.
Order 2048Pangrati · pickup 8:15
KK7
Pickup code · Counter 2
Freddo Espresso€4.20
Koulouri Thessalonikis€3.90
Total€8.10
Order 2048
K7
Counter 2
Notifications from your phone app already reach a paired watch. A watch app goes further: people act from the wrist in a few seconds, showing a pickup code, confirming a dose or starting a session. Apple's guidance notes that people use a watch app's notifications, complications and widgets more than the app itself, so we design those first.
An Apple Watch app can run without the phone app, and Google recommends the same for Wear OS. We build watch apps natively, in Swift and Kotlin, alongside the shared codebase.
Good morning, MariaPangrati
KFreddo Espresso€4.20
Koulouri Thessalonikis€3.90
Pickup 8:15Total €8.10
“A freddo espresso and a koulouri for quarter past eight”
Hold to order
Understood
Ordered
Heard
Voice orderSay it, and it’s ordered
Heard
“A freddo espresso and a koulouri for…”
Understood
2 itemsPickup 8:15
Ordered
€8.10
Typing on a phone is slow and speaking is not. We add voice where it removes steps: say the order, dictate the note, ask for the booking. The app shows that it is listening, turns speech into text and then into an action the person confirms before anything happens.
Recent versions of iOS and Android can recognise speech on the device, which keeps the audio on the phone. Where a request needs more understanding, an AI model interprets it and the app asks before it acts. Our AI agents service builds the part behind the microphone.
Good morning, MariaPangrati
KOnline
Offline · saved on this phone
Back online · syncing
All changes synced
The usual€8.10
Freddo Espresso + Koulouri Thessalonikis
Order for 8:15Your changes
Order for 8:15Queued
New favourite: Freddo CappuccinoQueued
Pickup shop: PangratiQueued
Works without a connection
Syncs when it returns
On this phoneSaved locally
1Order for 8:15
2New favourite: Freddo Cappuccino
3Pickup shop: Pangrati
When the connection returns
ServerSynced in order
Order for 8:15
New favourite: Freddo Cappuccino
Pickup shop: Pangrati
Connections drop in lifts, in basements and on the road. The app stores what people need on the device, lets them carry on, queues their changes and syncs when the connection returns, settling conflicts by rules we agree with you.
Both iOS and Android decide when an app may work in the background. We design sync around what the system allows and never promise a fixed schedule.
01 Build
Version 2.4 (412)
iOS
Android
02 Testers
38 testers
03 Review
Kafenes 334.8
Version 2.4In reviewApproved
04 Rollout
Share of usersIllustrative
1%10%50%100%
Crash-free99.8%
Prototype early, lay solid foundations, then ship features weekly into testers' hands. Releases go out in stages: to a small share of users first, then to everyone once the crash-free rate holds.
A clickable build in real hands within the first two weeks.
Sign-in, data, navigation and analytics, done once and done properly.
Weekly builds to TestFlight and Google Play's testing tracks, so you can hold every change.
Store listings, review, a staged rollout and crash monitoring.
Apps for both stores, the services behind them and a release pipeline your team can run. You own the code, the developer accounts and the data.
One codebaseTypeScript
90% sharedIllustrative
iOS
Native moduleSwift
Android
Native moduleKotlin
ServicesBehind both apps
API
Push
Payments
Analytics
Release 2.4
Release 2.4
React Native and Expo with TypeScript for the shared code, and native code in Swift and Kotlin where the product needs it: widgets, Live Activities and watch apps. Behind the apps sit a typed API layer, push notifications through Apple's and Google's services, payments, analytics and crash reporting. Fixes to the shared code can go out over the air between store releases; native changes go through review.
Mobile
Level 5/5
Platform
Level 4/5
Data
Level 4/5
Platform
Level 4/5
AI
Level 4/5
Design
Level 4/5
Answers to the questions we hear most often about app projects.
Cross-platform by default. One React Native codebase covers most of an app on both platforms, and we write native code in Swift and Kotlin where the product needs it, such as a watch app. If a fully native build is the better choice for your product, we'll say so before we start.
Yes: listings, screenshots, privacy details, review and rollout. Apple says it reviews 90% of submissions in under 24 hours on average, and Google warns that some reviews take seven days or longer, so we plan launch dates with room for both.
Yes, and we design for it from the start. What people need is stored on the device, their changes queue while there's no connection and sync when it returns. iOS and Android decide when an app may work in the background, so we never promise a sync at a fixed minute.
Partly. Changes to the shared JavaScript code and to images can go out over the air between store releases, as long as they don't change what the app is for. Anything native, such as a new permission or a new widget, goes through the stores.
The ideas do, under different names and rules. iOS has widgets and Live Activities. Android has widgets and Live Updates, which are limited to ongoing activities the person started, such as navigation or a delivery, and phone makers can add their own conditions. We design each one for its platform.
Often not at first. Notifications from your phone app already appear on a paired watch without one. A watch app earns its place when people need to act from the wrist: show a pickup code, check in, track a session.
A first version usually takes about three months: two weeks to a clickable prototype, around four weeks of foundations, then features released weekly to testers, and two to three weeks for store preparation and the rollout.
We build for larger text sizes, VoiceOver and TalkBack, sufficient contrast and reduced motion, and we test with them switched on. In the EU, the European Accessibility Act has covered consumer e-commerce and banking apps since 28 June 2025.
You do. The repository, the Apple and Google developer accounts, the push keys and the analytics are in your name. Apple's developer programme costs 99 USD a year and Google Play has a one-time 25 USD registration fee.
All names, companies, people and figures in the examples and illustrations on this page are fictional and shown for demonstration only. They do not correspond to real clients, customers or results.