Personal project · 2026 · In TestFlight

Soma: blocking your phone is half of it, the other half is what you do instead

Soma is an iPhone app that blocks the apps you lose time to, gives that time to something you chose, and points it at real events with other people.

It started with my own six hours a day on my phone. I designed and built all of it on my own: the product, the design, the app and the backend.

Role
Solo: product, design and build
Platform
iPhone, iOS 26
Stack
SwiftUI, Screen Time, Supabase, Claude Code
Status
In TestFlight with developers and users

What I did

  • Mapped the experience and designed every screen
  • Built the SwiftUI app, the Screen Time extensions and the Supabase backend
  • Worked with Claude for the code, with every decision going through me
Soma: Today, a running session, and the Journey reportSoma: Today, a running session, and the Journey reportSoma: Today, a running session, and the Journey report
Recreated from the app’s SwiftUI code

Problem

Six hours a day on my phone

Soma started as my own problem. My screen time was around six hours a day, and blocking apps never stuck.

I noticed two things. First, every time you block something, you want to do something else instead, and a blocker leaves that hole empty. Second, everything is easier with other people.

~6ha day on my phone, before Somamy own Screen Time

For people who want their time back for real life

Soma is for people with the same problem: they genuinely want to do other things, but the phone is always there and always the easiest option, so the time never shows up.

There is a wider shift behind it. Younger people are looking for real-life experiences: fewer dating apps, less drinking, more phone-free events and “no socials” meetups. They still want connection. They just want it off the screen.

Constraints

The real competitor is the feed

Screen Time is one of Apple’s most locked-down frameworks: the app can’t read your usage directly, and blocking runs in separate extensions. I designed every feature around what the system allows instead of fighting it.

The harder constraint is human. Social media is engineered for dopamine, so a block only holds if what comes after it is just as rewarding. That is the bet behind swaps, friends and events: the block is the easy part; the replacement is the product.

Options and decisions

A block is a session for something else

So I changed the story. Soma isn’t about blocking your phone. It is about blocking your phone and setting time for another thing. Every block is a session with a purpose, and that purpose gives you a reason to keep it.

Research backs this. Across 94 studies (Gollwitzer and Sheeran, 2006), people who planned when and what they would do were far more likely to follow through than people who only meant to.

a blocker

Blocks the apps, and leaves a hole where they were.

Soma

Blocks the apps, and gives the time to something you chose.

Better with friends

The second idea comes from addiction recovery, where groups do what willpower alone can’t. Blocking your phone together with other people builds a community, and the community is what keeps you at it.

Other research points the same way. In one weight-loss study, 95% of people who joined with friends finished the programme, against 76% of those who came alone.

95%finished when they joined with friends
76%finished when they came aloneWing & Jeffery, 1999

Fixing the rules, not the bugs

Before launch I mapped every rule for sessions, timers and blocks against the code, working with Claude: 24 problems, ranked. P1 meant it broke the promise of a block or left a loophole, like ending a session by deleting it, or ticking it done without doing it.

Many P1s disappeared once the rulebook changed, so I fixed the rules instead of patching bugs one by one. Sessions are now scored by how they went, automatically, and breaks have a budget: a quarter of the first hour, then 15% of each hour after.

Three strictness levels

Flexible, Firm and Locked.

A skip allowance

Free skips and day-off passes.

it felt harsh

Regular and Hard Mode

Two levels, and a weekly aim: 70% is good.

went with this

The full flow

Block

Sessions lock the apps you choose for a scheduled window or a timed stretch, and each one is named for what you’re doing instead.

Setting up a session, then the session runningSetting up a session, then the session running
Recreated from the app’s SwiftUI code

Reach for the phone, get a swap

Picture a train. You have a few stations to wait, everyone around you is on their phone, so you reach for yours. Instagram is blocked, so you open Soma instead.

Before anything else, Soma hands you a swap: one quick level of something you want to get better at, like chess, a memory game or a few pages of reading, then a breath. Seven swaps in all, each a level that takes a few minutes. The small gaps are where the time goes, so that’s where the swaps are.

Chess

A puzzle or a quick game.

Memory

A few rounds to train it.

Reading

A few pages.

Two swaps: a chess puzzle, and a memory level solved cleanlyTwo swaps: a chess puzzle, and a memory level solved cleanly
Recreated from the app’s SwiftUI code

A score, not a screen time total

Awareness is a score from 0 to 100 that you can check every day. Screen time alone misses the point: an hour on Instagram on a day full of other things isn’t the same as a day of only Instagram.

So the score weighs the whole day in four parts: phone time (40), sessions and events (30), progress (20) and urges turned into something else (10). Ten minutes on Instagram counts against you; apps you mark as grey-area or productive count for less; scrolling after 11pm counts extra. Joining an event is a plan; going is what counts.

And it’s judged against your own usual, like a chess rating: someone who usually spends six hours and has a four-hour day climbs; someone holding at one hour stays where they are. A number you don’t have is never treated as zero.

It is the app’s one colour story. Its band runs from faded lilac to warm gold as the score rises, and everything else stays neutral so the colour means something.

Today’s time in distracting apps, against your usual Usually six hours. Today, four. your usual, 6h climbs Usually one hour. Today, one. your usual, 1h holds your rival is your own usual 0h8h
Awareness on Today and over the weekAwareness on Today and over the week
Recreated from the app’s SwiftUI code

Go: real events on a map

The goal was never just less phone. It is doing other things with the time you get back, and doing them with other people. Activities puts real events on a map, so the time Soma saves has somewhere to go.

Activities: events on the map, the list, and the empty stateActivities: events on the map, the list, and the empty stateActivities: events on the map, the list, and the empty state
Recreated from the app’s SwiftUI code

Craft

A calm, cinematic system

Dark always, with content on shaded glass and a soft sunrise glow in the awareness colour rising from the bottom of the screen. Everyday choices use Apple’s own alerts and menus, Soma’s own cards are kept for its moments, and the voice stays short, plain and kind about slips.

Behind it sits a design system of type roles, spacing, radii and motion that every screen is built from.

Soma’s type ramp, session colours, the Awareness band and corner radii

Designed and built by one person, with Claude

I’ve been solo on Soma. I map out the experience, take a lot of the inspiration from my own life, and work directly with Claude to build it: the SwiftUI app, the Screen Time extensions, the Supabase backend, the UX and the UI.

Everything in the app has gone through me.

Impact

In TestFlight with real users, ahead of launch

Soma is in TestFlight with developers and early users, in the last round of polish before launch.

Usage numbers come with launch. So far, everyone I’ve shown it to has been interested in using it.

Let's Connect