Outback sunset at Menindee, New South Wales: a lone tree in silhouette against the last light
Photo: Dylan Shaw, Unsplash
Mobile consulting

Apps that survive the field.

For teams whose app is already in production and now has to hold up: crashes in the wild, a native module nobody owns, maps and sync that must work with no signal. The engineering is the same whatever the stack — plain React Native, Expo with a web target, fully native in Swift and Kotlin, or an installable web app; with Nitro or Expo Modules or neither. Senior, fixed-scope help from Sydney — not staff augmentation, not a greenfield agency.

A good fit

  • A production app — React Native, Expo, or native — that has slowed down, crashes for real users, or is stuck between "the MVP shipped" and "this scales".
  • Native work: module debt, a New Architecture migration, a Swift or Kotlin hot path — as a Nitro module, an Expo Module, or a plain native module — or a fully native build where that's the right call.
  • An offline / sync / maps pipeline that needs someone who has built one before — on the phone or in the browser.
  • A product that wants a native-feeling app without an app store in the way: an installable, offline-first web app with sync that doesn't lose data.
  • A mobile surface that ships without a safety net and needs one: an integration harness and end-to-end suite that stays green, with QA in the loop.
  • A US or ANZ team that wants senior mobile judgment with real overlap: Sydney mornings meet US afternoons, and East Coast morning standups fall in the Sydney evening.

Offline-first, in the open

An installable web app for a gym with no reception, free and open source, so you can see exactly how it's built. Offline is the normal state, not the fallback.

Rampset's home screen: the next two workouts with lifts, sets and weights, and a Start workout button

Rampset

Installable offline-first web app · free, open source, MIT

A strength-training app for a room with no reception. The browser's own database is the source of truth; the network is an optimisation. Sync runs through a Durable Object per user with an append-only op log, and a production data-loss incident became durable-sync, the library that now stands in front of it. It is free to use and self-host on your own Cloudflare account.

  • Installs from the browser, no app store
  • Works fully offline; rest timer survives the phone locking
  • Free to run on your own Cloudflare account
  • 256 app tests, 87 in the sync library
The story

Five ways to engage

Fixed scope, agreed exit criteria, contracted through Zack Design (Australia). All fees in USD; the bands are for one app of ordinary size.

Platform audit

Before you hire, migrate, or greenlight a rebuild.

A set of decisions, not a report: what to keep, what to replace, what to stop building, and in which order — with the reasoning, so your team can defend each call without me. Covers architecture, dependencies, crash and performance triage, the offline / sync / maps risks, and the build question itself — React Native, native, or web. I put my name to it.

Duration
1–2 weeks
Fee
US$12–22k

Rescue sprint

When the app is in production pain and you need a finite intervention.

One senior engineer, embedded in your repo with your team: stabilise crashes, cut jank, land a native hot path as a Nitro or Expo module or in a Swift and Kotlin codebase, unstick an offline / maps pipeline, or take a web app installable and offline-first. Exit criteria agreed before day one.

Duration
4–6 weeks
Fee
US$40–75k

Test harness

When releases are a leap of faith and QA is finding what CI should have.

A full integration harness and end-to-end suite for your app, written and wired into CI, then kept green. Tests are composable building blocks your QA team can assemble into new flows without an engineer, and AI-driven: failures are triaged and explained on every run, and coverage grows from the incidents that actually happen. Where the platform won't tell you what it did, the rig reads the screen.

Duration
6–10 weeks, then monthly
Fee
US$45–90k, then US$5–10k / month

Fractional lead

When mobile matters to revenue and you want senior judgment on tap.

Architecture decisions, the PR bar, release risk, experiments run to a decision (Statsig, GrowthBook or Datadog, with the metrics wired to your warehouse), and hiring interviews when useful, while your core team ships. Deliberately limited capacity — this is a boutique, not a full-time hire in disguise.

Duration
Monthly, about 15–20 hours a week
Fee
US$14–28k / month

Enterprise

When it's several apps, a large native-module surface, or many locales.

Any of the packages above, sized to the estate: an audit across a portfolio, a sprint that spans apps, a harness that has to cover all of it, or a lead across teams. Scoped on a short call and priced by app size rather than from the bands above.

Duration
Scoped to the estate
Fee
By app size

Audits often become a rescue sprint; a lead retainer usually follows a sprint that went well. Custom scopes are welcome.

Also on the record

Beyond Rampset: the libraries and tooling around it. The full account is on isaacrowntree.com.

react-native-nitro-unzip
Open-source ZIP extraction for React Native built on Nitro Modules — progress, cancellation, password support; about 500 files a second on iOS. Write-up.
durable-sync
The sync layer from Rampset, extracted into a zero-dependency library after a production data-loss incident: an append-only op log in a Durable Object's SQLite and a durable outbox on the client. No Postgres, no container. 87 tests, on npm. Write-up.
Nightly end-to-end suite with agent triage
A Playwright suite runs nightly against production; a failed run posts a signed report to thinkbot, an open-source Cloudflare Worker agent that investigates against GitHub, Datadog and Sentry and writes the explanation — and reports a suite that failed to run as its own incident, not as zero failures. How it works.

How an engagement runs

  1. Discovery. A short call or written brief: stack, pain, constraints, what success looks like.
  2. Scope. A statement of work with fixed outcomes, timeline, assumptions and exit criteria.
  3. Contract. Signed with Zack Design; invoiced in USD.
  4. Delivery. The audit report, the sprint's merge train, or the retainer cadence — as scoped.
  5. Handoff. Documentation and an owner map. Follow-on work only if it still earns its place.

Questions

Couldn't we just point an AI model at the repo?

You can, and I use the same tools — often to read an SDK's source instead of trusting its docs. What a model can't do is carry the decision: whether to replatform or repair, which hot path earns a native module, when self-hosting beats a vendor. It won't be in your repo in month three when the plan meets reality, and nobody's name is on its recommendation. You're paying for the architect: the judgment about what to build, what not to, and the accountability that comes with it.

Can you work with a US team?

Yes. Sydney mornings line up with US afternoons, and US East Coast morning standups fall in the Sydney evening; the rest is async. Standup and review windows are written into the statement of work.

Expo or bare React Native?

Either. Expo managed, prebuild, and fully bare workflows are all fine. The audit recommends the shape that fits your release process and native-module needs rather than a preference.

Who owns the work?

You do. Everything produced under the statement of work is assigned to you, unless we agree otherwise up front — for example an open-source fix you'd like upstreamed.

How much capacity do you have?

Zack Design runs alongside Isaac's product leadership role, so capacity is limited and scoped on purpose. If the timing doesn't work you'll get a clear no, not a half-committed yes.

React Native, fully native, or a web app?

Any of them, and the audit says which. Plain React Native or Expo (with or without a web target) when one codebase should ship everywhere; fully native in Swift and Kotlin when the hardware, the platform APIs or the performance ceiling demand it; an installable web app when you don't need deep hardware access or app-store distribution and want to ship without review queues. Native modules are a tool, not a religion — Nitro, Expo Modules, or none. The offline data layer, the sync, the maps and the test rigs on this page carry across all of them; Rampset shows the thinking in a browser, free and open source.

Is native modules / performance / offline really the specialty?

Yes. Native code in Swift and Kotlin — inside React Native as Nitro, Expo or plain modules, or on its own — crash and performance triage, and offline-first data and maps, on the phone and in the browser, are where the production and open-source work runs deepest. The packages above are built around them.

Start with a short note

Your app — React Native, native or web — and the outcome you need in the next 90 days. You'll get a reply with a straight read on fit.

[email protected]
isaacrowntree.com Sydney, remote