Four days working on QuikTax: making the iPhone app more dependable, connecting a web companion, and giving the product a better website.
The App Store app was already available. This diary follows the development work from 1–4 November 2026; the web companion is still in restricted deployment testing.
1 NovemberMake the existing app dependable
The first priority was protecting existing customers. Older installed versions still needed to record mileage while newer synchronisation and reset protections were developed.
I separated PAYE employment, incremental side-business tax and the overall Self Assessment estimate. A supplied HMRC calculation became a regression fixture. I also fixed launch configuration, so missing HMRC credentials produce an error when connecting, rather than prevent the app opening.
Development review captures. Select any screenshot for its full-size version; swipe paired views on mobile.
Also completed: a saved System, Light or Dark appearance preference, plus physical-iPhone launch checks. Subscription prices and purchase behaviour stayed unchanged.
2 NovemberGive historical records a useful home
Reporting had been tied to the current tax year. I added historical years, custom periods and year-on-year comparisons, then simplified the opening screen to money in, money out, profit and one chart.
Native simulator review renders with synthetic records. These show development work, not a claim that every feature has reached the App Store.
Clear All Data needed the same care across devices. Disposable-account iPhone tests checked confirmation, progress, retained login and business details, and recording again afterwards.
Why deletion needed more than a database query
An offline queue or older app can try to restore deleted rows. Receipt images and PDFs also need actual file removal. I worked on generation-aware writes and resumable cleanup, while keeping interrupted-upload, physical Storage cleanup and legacy-client guarantees as explicit release gates.
Other work: the navy-and-yellow brand direction, onboarding, reviewed CSV imports, safer invoice payment handling and server-authorised Founder Pro access.
3 NovemberMake web and iPhone agree
The web companion uses Next.js, TypeScript and the existing Supabase backend. I verified authentication first, then tested exactly one synthetic income and one expense: create on web, check on iPhone, edit, check again, and remove the two test records after approval.
A separate unpaid-invoice test checked its customer, due date, amount and PDF on the physical iPhone, then repeated the checks after an edit. That test did not authorise payment or deletion.
The important correction: existing account records were expected. Test operations had to stay scoped to their reserved IDs and authenticated owner, leaving everything else untouched.
4 NovemberPolish the product. Test the actual build.
The website gained stronger device compositions and richer, clearly labelled demonstration data. I checked Features and App Store navigation, and made monthly pricing the default.
I also fixed a cross-device logo bug: deleting an image on iPhone left an old browser copy visible. Confirmed remote deletion now clears that shared mirror; network and authentication errors preserve it. Replacement-race protections remain in place.
The deployment bug that local checks initially missed
Prisma Compute reported a running service, but requests timed out. The Docker build had Linux-compatible Sharp dependencies; the later macOS deployment assembled a different bundle containing Darwin binaries.
I reproduced the failure offline using the actual Composer bootstrap. The macOS bundle initially served pages on Linux, then stalled after an image-optimization request. The Linux-built control stayed responsive. The hosted archive hash was unavailable, so the final artifact identity remains qualified.
The fix adds Linux-only assembly checks, rejects native packages outside the standalone artifact, and tests another request after image optimization. It has been committed and locally verified; a corrected hosted deployment still needs approval.
Later requests time out too.
Image and subsequent requests respond.
Observed offline test results, not uptime or production performance claims.



