End-to-end delivery
Come with an idea or a finished design — if you need one, I bring a designer I trust. Then architecture, implementation, App Store submission and the support that follows the launch.
Available for freelance & contract work
Thirty-plus iOS apps shipped in Swift and SwiftUI — I take a product from the first sketch through App Store review to the subscriptions that pay for it.
or write to [email protected]
What I do
Four shapes the work usually takes. Most projects are the first one.
Come with an idea or a finished design — if you need one, I bring a designer I trust. Then architecture, implementation, App Store submission and the support that follows the launch.
Subscriptions that convert. RevenueCat and Superwall wired properly, paywalls tested against each other, trials and win-backs tuned instead of guessed.
Inherited a codebase that fights back? I untangle legacy UIKit and Objective‑C, cut crash rates and make the build reliable again — without stopping the roadmap.
Contract work embedded with your engineers, as an individual contributor or leading the iOS side: code review, architecture calls, mentoring and release ownership.
About
I'm Dmytro Grytsenko, a senior iOS engineer working out of Ukraine. Over five years I've shipped more than thirty apps to the App Store — for agencies, for product teams, and a few under my own name. Different categories, different sizes, the same platform every time.
I work end to end. That means an empty Xcode project on Monday and a live listing at the end: architecture, SwiftUI screens, the server integration, App Store Connect metadata, the privacy questionnaire, the rejection that comes back on a Friday and the point release that answers it. Nobody has to translate between a designer, a backend and a "mobile guy" — that's one conversation, with me.
I care about the money side. A beautiful app that nobody subscribes to is a hobby. I've built subscription flows on RevenueCat and Superwall — paywalls tested against each other rather than argued about, trials and intro offers priced deliberately, win-back and churn recovery wired in from the first release instead of bolted on after the numbers disappoint.
And about knowing whether it worked. Mixpanel, Amplitude, AppsFlyer and Adjust for attribution and funnels, Usercentrics for consent so the analytics stay GDPR-clean. Instrumented properly, before launch, so the first cohort actually tells you something.
I've spent as much time inside teams as alone: as an individual contributor in product companies and leading the iOS side — code review, architecture calls, onboarding juniors, owning the release train. Whether you need someone to build the whole thing or to slot into a standup on Monday, both are familiar ground.
Underneath all of it: native Swift, first-party frameworks, as few dependencies as the job allows. An app you can still build five years from now.
Tools
First-party frameworks wherever Apple ships one, and a short list of third-party tools that have earned their place over thirty-odd releases.
SwiftUI first, UIKit where it still wins
Local-first, synced when it earns it
Where an app makes or loses its money
Numbers you can actually trust
Reasons to open the app again
Release day is not the finish line
Selected work
Everything you own and every date that comes with it — warranties, renewals, services — with a reminder before one slips.
How it works
We agree on what the first release actually needs — and what can wait. You get a written plan with milestones before any code is written.
Weekly TestFlight builds, so you are never guessing about progress. Architecture decisions are documented, not buried in commits.
Submission, review responses, privacy declarations, release notes. I handle the App Store Connect paperwork that sinks first-time launches.
Paywalls measured against each other, funnels instrumented, crashes watched. Release day is where the interesting work starts.
Contact
A paragraph is enough: what the app does, who it's for, and roughly when you need it live. If it's a rescue job, tell me what's broken.