Design tools2026

Framing screenshots without leaving the share sheet

Framewich is a free iOS app that turns plain screenshots into polished mockups, and I built it to start instantly from the share sheet and work without a connection or a sign-up.

ProductFramewich
RoleDesigner and engineer
Framewich running on iPhone
The constraint

Framewich is meant to let you frame a screenshot in a few seconds, which means it has to work from the iOS share sheet, where there is very little memory to play with and no room for a slow start or a loading spinner.

It is also free, so anything that adds friction before the first result, a sign-up screen or a wait for the network, would lose people before they ever saw what the app does.

Designing around it

The share extension is kept completely free of Firebase. It reads and writes files in a shared App Group instead, so it launches instantly and cannot fail because the network is slow.

Firestore runs with offline persistence as the cache rather than as a fallback, so the app behaves the same with or without a connection. Anonymous auth happens in the background on launch, which means there is no sign-up and nothing to wait for.

What is in the app
  • The SwiftUI app and its framing and styling tools
  • A share sheet extension that stays free of Firebase entirely
  • A shared App Group so the app and the extension see the same files
  • Offline-first sync with soft deletes
  • Cloud storage for the mockups people generate
  • Unit and UI test targets, with separate debug and release configuration
Engineering

What the constraint forced

01

A share extension with no backend

Share extensions get very little memory and are terminated without warning. Keeping Firebase out of the extension entirely means it starts instantly and cannot fail because of the network.

iOSExtensions
02

Offline as the default state

Offline persistence is the cache rather than an error path, so there is no separate offline mode that can behave differently from the normal one.

Offline-firstFirestore
03

No sign-up to get to the first result

Anonymous auth runs in the background on launch, so someone can install the app and frame a screenshot without creating an account or going through any setup, and the account is created quietly behind the scenes.

OnboardingFirebase Auth
04

A website built alongside the app

I also designed and built framewich.com in Next.js on the same stack as this site, and the top of the page is a working preview of the framing tool so people can try it out before they download the app.

Next.jsWeb
How it turned out

Framewich is live and free, works from the share sheet in a couple of taps, and needs no account to use.

It is the clearest example I have of building around a constraint, since almost every decision came from the share extension needing to open instantly.

Built with
Platform
SwiftSwiftUIApp GroupsShare Extension
Frontend
Next.jsReactSass
Infrastructure
Firebase FirestoreFirebase StorageFirebase Auth