Inspiration

I didn't want another thing to check. I wanted the people I care about to be present without being loud: ambient, something you notice the way you notice the weather, not the way you notice a notification.

Every app that promises to keep you close does it by making you open an app. Group chats get noisy, feeds get algorithmic, and the one person who actually matters gets buried under everyone who doesn't. Meanwhile the Home Screen, the surface we look at more than any other, was sitting there as a wall of static icons.

So I built the opposite of a social network. Draw a wobbly heart at 5:04, and by 5:05 it's on your person's Home Screen, between their weather and their calendar. No feed. No followers. No notification. No reply needed.

What it does

Orbit pairs you with one person, a partner or a best friend, and turns the widgets on each other's Home and Lock Screens into a shared, living space.

  • Send it: a photo, a mood, a sticky note, a hand-drawn doodle, a few words around the clock on their Lock Screen, or a voice note they can play and react to without opening anything. It lands in seconds.
  • Play it: Tic-Tac-Toe, Connect Four and Rock Paper Scissors, played right on the widget.
  • Feel it: race each other on steps, compare Activity Rings, cheer on a live workout, see the miles between you and the weather where they are, and share a list you can both tick off.
  • Plan it: paint tomorrow in advance, from a good-morning note at 8:00 to a photo for the ride home at 5:40. Count down to the next visit, a birthday or a trip, with holidays built in, from Valentine's Day and Christmas to Ramadan and both Eids, shown with their Arabic names.
  • Just you: My Day puts your calendar and reminders on one widget, and you can tick reminders off right there. It works before your person has even joined, and your calendar never leaves your iPhone.

That's 21 widget types, plus a gallery of ready-made designs you can browse, bookmark and send, or publish your own to.

No account. No email. No password. You share a link, they tap it, and you're paired.

The shipping log

Shipaton asked for a real app in a real store. Here's how that went:

  • August: First submission, rejected. Not for anything the app does (more below).
  • September 4: Orbit goes live on the App Store.
  • 1.1: Pair with a link instead of a code. Surprises reach every widget size your person uses. Schedule notes for your own Lock Screen.
  • 1.2 (September 30): Countdowns, shared or just for you, with holidays built in.
  • 1.3 (October 3): My Day, plus countdowns started from dates already in Calendar or Reminders.

Three feature updates in the month after launch, all built and shipped solo.

How I built it

More than 100,000 lines of Swift across about 500 files, built solo.

  • SwiftUI and WidgetKit for the app and every widget size, plus a Control Center widget
  • App Intents to make widgets truly interactive: take a turn, play a voice note, tick off a reminder or a list item, all without launching the app
  • EventKit for My Day and countdown imports, read on the phone and never uploaded
  • Firebase for anonymous auth, data, and the Cloud Functions behind pairing, invite links and cleanup
  • APNs for silent pushes that keep a partner's widget current
  • HealthKit for activity, steps and workouts
  • Apple Intelligence, on device, for status captions and generated profile pictures
  • RevenueCat for subscriptions and the free trial
  • Remote Config so new features ship switched off and turn on when they're ready

Every domain sits behind a protocol with both a real and a mock implementation. That's the only reason 21 widget types were survivable solo: I could design and preview every one of them without touching the network.

Challenges I ran into

Widgets are not small apps. They run under far tighter limits than the app that ships them, and some of those limits only exist on real hardware. My widget rendered perfectly in the simulator and broke on real phones. Nothing teaches you to test on device faster.

Real-time is a negotiation with the operating system. iOS decides when a widget redraws. You can get to "usually a few seconds," but you can't promise it, and designing honestly around a system that can always say "not yet" shaped a surprising amount of the product.

An app for two is useless to one. Orbit does nothing until your person installs it too, so every download starts as half a pair. In the last few weeks I made Orbit worth opening alone: personal countdowns and holidays are free, and My Day turns your own calendar into a widget on day one.

Time is harder than it looks. A countdown to Christmas is arithmetic. Easter moves every year. Ramadan and the Eids follow a lunar calendar and can shift by a day with the local moon sighting, so Orbit tells you that instead of pretending to know. Even "today" fought back: an early build of My Day filed tomorrow's reminders under today.

App Review checks trust, not ideas. My first submission never made it to the store. It was turned back over screenshots, a Terms of Use link that didn't respond, subscriptions that weren't attached, and a missing EULA link. None of it was about what Orbit does. All of it was about whether a stranger can trust the app with their money and their data.

Accomplishments that I'm proud of

Shipping, over and over: live on September 4, then three feature updates in a month. 21 genuinely distinct widget types, all live, all built by one person, and nobody ever has to create an account.

A privacy model I'd defend line by line. Orbit is one connection on purpose. Your calendar and reminders never leave your phone. And when you disconnect, everything the two of you shared is deleted from both sides.

And a small one I care about: Ramadan and both Eids sit right beside Christmas and Valentine's Day, with their Arabic names, for every user in every country, because a phone's region says nothing about what someone celebrates.

I also built it in public, sharing a feature a day on LinkedIn through Shipaton's final week. [Optional: one thing a comment or a tester changed.]

What I learned

Widget extensions are a different platform wearing iOS's clothes: different rules, different lifecycle, a different definition of "now."

Constraints make better products. A few hundred pixels kill every feature that isn't essential.

A two-person app has to be worth opening alone.

And ship dark, switch on. Because new features ride in behind remote switches, I can release on App Review's schedule and launch on mine.

What's next for Orbit

  • Create with Image Playground: make a picture with Apple's on-device image generation and send it straight to their Home Screen. In testing now.
  • Send a song: pick a track from Apple Music and put it on their Home Screen. In development.
  • More than one connection: family and close friends, without turning any of it into a feed.
  • Apple Watch: so what you send lands on a wrist as well as a Home Screen.

Built With

  • apns
  • app-groups
  • app-intents
  • apple-intelligence
  • cloud-functions
  • firebase
  • firebase-auth
  • firebase-cloud-messaging
  • firestore
  • foundation-models
  • healthkit
  • image-playground
  • ios
  • revenuecat
  • sdwebimage
  • swift
  • swiftui
  • typescript
  • widgetkit
  • xcode
Share this project:

Updates

Submission history