Skip to content
Ritesh FirodiyaGet in touch

Work / Aakalan / Wiki / Surfaces

add-with-person

Surfacecanonicalverified 2026-09-23

SURFACE.MOBILE.ADD.WITH-PERSON

Summary

The same screen, split with one person and no group.

Raw wireframe

  • .context/designs/mobile/add/with-person.html

Why it is drawn this way

The pair group behind this is created on SAVE, not on selection. Backing out of a half-typed expense must leave nothing behind — and an empty group is visible to the other person, so that litter would not even be private.

A contact tapped on balances-search is held as a draft person with a provisional id, for the same reason. addPerson runs on save and mints the real id, which is why the splits are re-keyed there; it also de-duplicates by phone number, so tapping somebody you already have quietly resolves to the existing person.

One roster, used everywhere on this screen. Every name here is looked up by uid — the payer chips, the split sheet, the summary sentence — and a draft person is by definition not in the store yet. Reading the store directly meant those lookups missed and fell through to the literal string "Someone", so the screen said "Paid by You / Someone" about a person it had just named at the top.

Paid-by WRAPS rather than scrolls. A ten-person group hid four payers past the edge with nothing saying they were there — the same fault the old "With" chip scroller had, at smaller scale.

The whole split is one tappable sentence, and the per-head figure is printed in it so nobody does arithmetic. The sheet behind that line is the only place any of it can be edited.

A split that does not add up never looks saveable. The line turns rose and names the gap in money, before you try. The store refuses it too; this is the half that tells you why.

Saving lands on the person's ledger, because a pair has no group screen worth showing and the balance it just moved is the one on their ledger.

Related

Sources

  • src/app/(tabs)/add.tsx
  • src/lib/split.ts

Every project of mine is written down like this.

Read the résumé