… one sign-out
- Search's "Added ✓" and "+ Watchlist" pills draw the platform's check and plus symbols.
- Sign out lives on Profile only; Settings no longer repeats it. Profile shows the Trakt username.
- Library's sort is a bar item beside the avatar: a native bar menu on iOS, a sort icon
button with a dropdown on Android. BarItems takes the menu and redeclares the bar only
when the menu's look changes.
- Row titles in Up Next, History, Calendar and Search stop at two lines; detail shows them
whole and the row's spoken label keeps the full title.
- A filter with no match in the current chip names the other chips it matches in, as
buttons that switch to them.
- Chevrons and the remaining hand-drawn icons (sort, bell, swipe check and stop, avatar
placeholder) come from SF Symbols and Material icons through PlatformIcon. A lint rule
keeps react-native-svg to the Cue mark, and a test rejects typed check and cross glyphs.
- The iOS role override on Toggle's Switch is a registered platform-owned exception judged
against react-native 0.86.3, so a React Native upgrade reopens it
(react/react-native#59333, #59334).
Follow-ups from the owner's feedback (app-feedback 2026-10-18) that were still open on
feat/expo-nativeat cc7c8f5.Changes
.maestro/flows/account.yamlnow run from Profile, and the Jest sign-out cases moved fromsettings.test.tsxtoprofile.test.tsx.PRIVACY.mdpoints at Profile.BarItemstakes an optional menu and puts it beside the avatar. iOS gets a native bar menu with thearrow.up.arrow.downsymbol. Android gets a sort icon button whose dropdown mounts only while open, the same way the header More button works. The bar is declared again only when the menu's look changes, not on every Library render.LibraryToolbarandGlyphare deleted.TITLE_LINES, shared with Library tiles). The row's spoken label still has the full title, and detail screens show it whole.Chevronnow draws SF Symbols on iOS and Material icons on Android throughPlatformIcon. The Settings picker uses the menu-picker symbols (chevron.up.chevron.down,arrow_drop_down). The other hand-drawn icons went the same way: the sort, the Calendar alerts bell, the swipe check and stop, and the avatar placeholder.role="none"(#170)platform-owned.test.tsas rule H, "platform control's own role overridden", judged against react-native 0.86.3. A React Native upgrade fails the version check and forces a re-check (react/react-native#59333, #59334).Not changed: the chip rail's duplicate draw (baseline item 32). It happened once on the real account after a sideways swipe and did not happen again on a second try. No code path in
ChipRailor the Library list explains it: the chip keys are unique and the header element does not remount. It needs a reproduction on a device.Gates added
platform-owned.test.ts:biome.jsonc:react-native-svgis a restricted import everywhere. The only exception is the Cue mark, which has abiome-ignorethat gives the reason. Shipped icons have to come fromPlatformIcon..native-assets.jsonlists the 11 new Android vector drawables.Tests
Each new test fails on cc7c8f5 on both Jest platforms:
@jo on Trakt.Mutations, each caught:
react-native-svginChevron,Avatar,RowsorSwipeRow.Existing tests updated for the new structure:
library-window: no menu host now mounts in the grid;swipe-row: counts reveal icons as images;maestro-ids: the Library flow's one input is now "coastal";.maestro/flows/library.yamltypes "coastal" on Watching. That captures the new empty state aslibrary-no-match, taps "Show N in Not started", and then clears the filter.Copy for your decision
@{username} on Trakt. It was "Trakt account".No shows in Watching match "dune".with one button per chip, for exampleShow 2 in Finished;No shows match "dune".PRIVACY.md: "open Profile → Sign out (Profile is your avatar at the top of the screen)".Footprint
Product-Growth: 64 lines net (304 added, 240 deleted) in
packages/native/srcandpackages/native/app. 44 of those lines are the 11 Android vector drawables.BarItemsgrows by the menu slot, andLibraryToolbar(82 lines) andGlyph(26 lines) are deleted.Binary-Size: the Hermes bundles grow 747 B on iOS (5,447,980 to 5,448,727) and 4,298 B on Android (5,482,577 to 5,486,875). That was measured with
expo exportandscripts/measure-sizes.shon cc7c8f5 and on this branch. The 11 Android vector drawables add 3,305 B of assets.Comment-Load: one product comment line, the
biome-ignorereason inCueMark.tsx.pnpm checkpasses on Node 22.23.4.