← All posts

Product update4 min read

Two weeks of taking things out of ICIDO

A run of recent builds deleted a chooser dialog, four tutorial steps, a settings picker and most of the on-screen text. What went, and why removal counted as progress.

Most of these builds removed something

Over a run of recent builds, ICIDO lost a rotating tips banner, four tutorial steps, an up-front dialog, a settings picker and a large share of its on-screen sentences. Little was replaced by a better-worded version of itself. The words were deleted, and the app left to explain itself through what it does.

Subtraction is harder to justify than addition, so the reasoning is worth recording.

The largest block of words in the app

The scan screen used to carry a rotating tips banner over the live camera. The commit that removed it (0a408b0) calls it "the single largest block of words in the app", and states the replacement in one line: the live mesh is the coverage coach. While scanning, the wireframe fills in across the surfaces the sensor has actually captured. That signal is drawn from the capture itself, which a cycling text strip is not.

The same commit stripped the home screen — hero tagline, the Find Me caption, every decorative card subtitle. One subtitle survived: "This device can't scan", kept explicitly because it is a functional warning rather than decoration. That is the entire test being applied. Does this sentence tell you something you could not otherwise find out?

A day later the during-scan status texts went as well (a1d0e3e). The status line and the coverage-hint banner were deleted from the scan layout, leaving a compact pill: a dot and one word, or "Adding to" and the place’s name. The same change removed a status parameter the relocalizing overlay still accepted but had stopped displaying — in the commit's words, an interface that lied about what it showed.

Seven steps became three

The first-run tutorial was seven steps. It is now three (eb52db4), and the survivors are the ones that require the user to do something: sweep to scan, hold to get located, tap to route.

Cut were five dense cards on what LiDAR cannot scan, shown before the user had scanned anything; a step on fixing weak coverage; and one on stacking floors into a building. All three remain topics in the in-app Help.

The commit states the principle plainly: "Automatic behaviour doesn't need a tutorial step." Recognising a place when a scan begins, offering to expand it, combining overlapping maps after a save — the app does those without being asked, so teaching them up front was teaching something that never needs doing.

A question the app can answer itself

Starting a scan used to open a dialog with three choices: auto-detect the place, start a new place, or add to an existing one. That dialog and its place-picker sheet are gone from both entry points (50e57ff).

New Scan now checks first. The probe relocalizes against saved maps one at a time — a session can only relocalize against a single map — capped at six candidates, five seconds each, ranked recency-first, and reports a match only on a real transition from relocalizing to normal tracking, never on a hopeful guess. If it recognises where you are standing, it offers to expand that place or start a new one. If it does not, it falls into a new scan on its own.

The question was never interesting to the person holding the phone. It was interesting to the app, which can now answer it by looking.

A setting that became a default

Combining two overlapping maps used to be governed by a merge preference in Settings. That preference, its Settings picker, the mid-scan Merge button and the entire camera-probe merge path were deleted together (d6774dd). Every saved new scan now looks for candidate maps and asks once, after the save, when both maps are complete and the scan is safely on disk.

Removing the setting was possible because the underlying work got better in the same commit — the fine alignment stage became point-to-line ICP, solving rotation and translation together. A capability reliable enough to run every time does not need a switch in front of it.

Not only words

Two earlier removals set the pattern. An 8 cm "detailed" grid option appeared briefly in Settings and produced messy, fragmented maps, so the grid is fixed at 12 cm for saved maps. And live new-object detection — amber boxes for things that appeared since the scan — was removed after several test builds, having proved too unreliable in the field. That removal paid for itself twice: navigation could drop scene reconstruction entirely, the session's biggest battery and thermal cost.

What was added, and what it has in common

The additions in the same period follow the same rule. Waypoints gained rename and a visible delete, through a context menu and swipe actions matching how rooms already worked; the previous delete was a bare swipe with nothing hinting it existed (c7e97bc). Tap-to-route used to invent a waypoint named "Destination", which produced messages like "No walkable path to Destination"; it now snaps to a real waypoint within 1.5 m and routes to that one by name, while a tap on open floor honestly reads as "that spot". The escape offered during a stuck scan was moved from twelve seconds to six, with plainer wording about what is and is not recoverable (252fefb).

Each makes an available action visible, or a message true. Neither is the same activity as explaining the app in a paragraph.

The instruction driving most of this was short: less on-screen text.

Where this is

None of it changes what leaves the device, which is nothing. ICIDO has no accounts, no sign-in, no analytics and no network connections; scanned maps, tagged spots and settings stay on the iPhone.

The work described here is in TestFlight builds. ICIDO is coming to the App Store, and scanning requires the LiDAR sensor — iPhone 12 Pro and later Pro models.

Related reading