Screen · Finance
Activity SwiftUI Screen
Account activity grouped by day, with rows that swipe to categorize, split or hide.
Account activity built on a finance row that swipes right into a category tray and left to split or hide, expands inline with a map slot and receipt items, rolls its amount and pulses while pending.
- SwiftUI
- iOS 17.0+
- transaction-row
$199 once, every piece included. See how installing works · Sign in
01
What's included
SwiftUI source you own, built on Apple frameworks only.
- Swipe right into a category tray, left to split or hide
- Rows expand inline with a map slot and receipt items
- Rolling amounts and a pulse while pending
- The Activity screen from the preview: balance, search and days
In the Build Kit
Studio (style), Personal Finance (brief), Send Money (recipe). Your agent builds around this screen in the same design.
Used in
Finance App (template)
02
Implementation notes
How it behaves, what it handles, and the decisions behind it.
The row shows a category tile, merchant, subtitle and an amount that tints for credits and rolls with numericText when it changes. Swipe right and a tray of category tiles scales in one by one; tap a tile to categorize with a firm haptic. Swipe left for split and hide. Tap the row to expand it in place with a spring, revealing a map slot and receipt line items with a total. Pending rows breathe the amount until they post.
Notes
- States: resting, pressed, categorize tray open, actions open, expanded, pending.
- The swipe is a
simultaneousGesturewith a 12pt minimum that only claims clearly horizontal drags, so it lives happily insideListandScrollView. Limits rubber-band,predictedEndTranslationcommits flicks, and a soft impact fires when a side opens. - Pass a changed
FinanceTransactionvalue (new amount,isPendingfalse, a category) and the row animates the difference; the tile symbol replaces with a symbol effect. - The map slot is any view; the default
TransactionMapPlaceholderis a quiet fill with a pin, so no MapKit dependency until you want one. - VoiceOver reads the row as one button with Categorize, Split and Hide actions; the tray tiles are labeled buttons once open. Reduce Motion stops the pending pulse and shortens the springs.
TransactionRowExampleat the end ofTransactionRow.swiftis the screen shown in the preview; copy it as a starting point.
03
Keep building
Pieces that work well next to this one.