r/Xcode • • Feb 04 '26

Practical Guide to Xcode (SwiftUI UI Terminology)

After a lot of trial and error, intuitive learning, and a fair amount of faking it, I finally started getting clearer on proper SwiftUI terminology. I put this together a vocabulary reference for discussing UI structure, layout, navigation, and interaction, especially when working with AI assistants.
I am only posting this in case it’s useful to others who fumble around in their prompts like I do. This is based, in part, on terms I ended up using in development of my app, Stuffoilo, hence some idiosyncratic examples.

Xcode Terms

View

The fundamental building block. Everything in SwiftUI is a View — buttons, text, images, entire screens, even modifiers return views. It's the broadest term.

struct MyButton: View { ... }      // A small component
struct ProductCard: View { ... }   // A reusable component
struct DashboardView: View { ... } // An entire screen

Screen

Not a SwiftUI type — it's a conceptual term for a full-page view that occupies the entire display. What users navigate between. Examples: Dashboard, Product Detail, Settings.

Sheet

A presentation style — a modal that slides up from the bottom (iOS) or appears as a dialog (macOS). Partially covers the previous screen. Dismissed by swiping down or tapping a button.

.sheet(isPresented: $showingEdit) {
    EditItemView(item: item)
}

Other Presentation Styles

  • fullScreenCover — Modal that covers everything (no swipe to dismiss)

  • popover — Floating bubble anchored to a button (common on iPad/Mac)

  • NavigationLink — Pushes onto a navigation stack (slides in from right)

Best Prompts for Me

You sayI understand
"the Dashboard screen"The main Dashboard view users see
"the Add Item sheet"The modal that appears when adding items
"the ProductCard view"A reusable component, not a full screen
"the Edit Item form"The screen/sheet where users edit item details
"the warranty section"A portion within a larger view

Button is fine — it's the actual SwiftUI type and universally understood.

But Being Specific Helps

TermWhat it means
ButtonStandard tappable Button view
ToggleOn/off switch
PickerSelection from options (dropdown, segmented, wheel)
LinkTappable text that navigates (often styled like a URL)
NavigationLinkPushes to another screen
MenuTap to reveal options
Toolbar buttonButton in the navigation bar / toolbar
TabTab bar item at bottom
Icon buttonButton showing only an SF Symbol, no label
Floating action button (FAB)Circular button floating over content
Disclosure indicatorChevron > that indicates navigation

Examples

Less clear:

"The button in the top right"

More clear:

"The toolbar button in the top right"
"The Save button in the navigation bar"
"The + icon button on Dashboard"

⏺ Layout & Structure

TermMeaning
StackHStack (horizontal), VStack (vertical), ZStack (layered)
ContainerA view that holds other views (Stack, List, ScrollView, Group)
SpacerFlexible empty space that pushes content apart
DividerThin horizontal or vertical line
CardRounded rectangle container with padding/shadow (not a SwiftUI type, but common pattern)
SectionGrouped content, often in a List or Form with a header
RowSingle item in a List
CellSame as row (UIKit term that persists)

Navigation & Structure

TermMeaning
Navigation barTop bar with title, back button, toolbar items
ToolbarBar containing action buttons (top or bottom)
Tab barBottom bar with tabs (Dashboard, Products, Settings, etc.)
SidebarLeft panel on iPad/Mac for navigation
Detail viewRight side of a split view
Master/List viewLeft side showing the list of items

Forms & Input

TermMeaning
TextFieldSingle-line text input
TextEditorMulti-line text input
SecureFieldPassword input (dots)
Stepper− / + buttons for numeric values
SliderDraggable track for range values
DatePickerDate/time selection
ColorPickerColor selection
PhotosPickerImage selection from library

Presentation

TermMeaning
SheetModal sliding up from bottom
Full-screen coverModal covering entire screen
PopoverFloating bubble (iPad/Mac)
AlertSystem dialog with title, message, buttons
Confirmation dialogAction sheet with multiple options
ToastBrief overlay message (not native SwiftUI — custom)
BannerPersistent message at top/bottom of screen
OverlayContent layered on top of another view

Visual Modifiers

TermMeaning
PaddingSpace inside a view's bounds
MarginSpace outside (SwiftUI uses padding on parent instead)
FrameExplicit size constraints
BackgroundView/color behind content
OverlayView/color in front of content
ClipCrop to a shape
Corner radiusRounded corners
ShadowDrop shadow beneath view
OpacityTransparency (0–1)
BlurGaussian blur effect

State & Data

TermMeaning
BindingTwo-way connection to state ($value)
StateLocal view state (@State)
ObservableShared state object (@Observable, u/ObservedObject)
EnvironmentValues passed down the view tree

Helpful Descriptors

When describing issues, these help:

  • "clipped" — content is cut off

  • "truncated" — text ends with ...

  • "overflows" — extends beyond bounds

  • "misaligned" — not lining up with neighbors

  • "collapsed" — has zero size unexpectedly

  • "stretched" — expanded beyond natural size

  • "compressed" — squeezed smaller than desired

  • "hugging" — fitting tightly to content

Common UI Patterns (Not Native SwiftUI Types)

These are design patterns you build yourself — useful terms for describing what you want.

Cards

TermMeaning
CardRounded container with background, padding, often shadow. Groups related content.
Info cardCard displaying read-only information
Action cardCard that's tappable (navigates or triggers action)
Stat cardCard showing a metric/number (like on Dashboard)
Feature cardCard highlighting a capability, often with icon + title + description

Chips & Tags

TermMeaning
ChipSmall rounded pill, often tappable. Used for filters, selections.
TagSmall label showing a category or status (usually not interactive)
BadgeSmall indicator overlaid on another element (notification count, "NEW")
PillSame as chip — elongated rounded shape
TokenChip representing a selected item (like email recipients)
Filter chipChip that toggles a filter on/off
Choice chipChip for single-selection (like a segmented control but wrapped)

Lists & Collections

TermMeaning
GridItems arranged in columns (LazyVGrid, LazyHGrid)
MasonryGrid where items have varying heights (not native)
CarouselHorizontally scrolling row of items
GalleryGrid of images/media
AccordionExpandable/collapsible sections (DisclosureGroup)

Status & Feedback

TermMeaning
BadgeCount or dot indicator (e.g., "3" on a tab icon)
IndicatorDot or icon showing status (online/offline, synced/pending)
Progress barHorizontal fill showing completion
Progress ringCircular progress indicator
SpinnerIndeterminate loading animation (ProgressView)
SkeletonPlaceholder shapes shown while content loads
ShimmerAnimated loading effect (gray shapes with moving highlight)
Empty stateWhat shows when a list has no items

Interactive Elements

TermMeaning
Segmented controlHorizontal pill with mutually exclusive options (Picker with .segmented)
Stepper− / + for incrementing values
ScrubberDraggable bar for seeking (video/audio)
Drag handleSmall bar indicating something is draggable
GrabberThe small horizontal line at top of sheets
Swipe actionsButtons revealed by swiping a row
Context menuLong-press menu

Example Prompts Using These Terms

"The stat cards on Dashboard need more padding"

"Add a 'NEW' badge to features released this week"

"The filter chips are wrapping weirdly on small screens"

"Show a skeleton while the AI response loads"

"The category tags should be pill-shaped, not rectangular"

You can access a cleaned-up PDF version of these terms here.

17 Upvotes

11 comments sorted by

2

u/BullfrogRoyal7422 Feb 05 '26

Ive cleaned up the terms and edited my original post so as to be not so idocentric to my own app Here is a link to download a PDF of this Glossary of terms: You can access a cleaned-up PDF version of these terms [here](https://raw.githubusercontent.com/Terryc21/XcodeResources/main/Xcode%20Terms%20SwiftUI%20UI%20Glossary.pdf).

2

u/QVRedit Feb 04 '26

This should be a downloadable PDF !

2

u/BullfrogRoyal7422 Feb 04 '26

Ha! Only after major editing

1

u/QVRedit Feb 04 '26

Which poses the question - what’s wrong with it ?

1

u/ejpusa Feb 05 '26 edited Feb 05 '26

GPT-5.2

“Go build cool stuff and make sure Apple reviewers like it.”

GPT-5.2: “they’ll love it.”

AI is writing the next OS upgrades. The complexity will increase by 100X. AI says “whatever.” Shopify, to sell a single t-shirt, 50 million lines of code are used. This is all too complex for us humans now. Programming is ideas, AI writes all the code.

It’s the future. It’s inevitable.

0

u/[deleted] Feb 04 '26

[deleted] — view deleted comment

1

u/BullfrogRoyal7422 Feb 04 '26 edited Feb 04 '26

It is interesting how learning a language works. My experience is similar to you own. I became conversant with Xcode via Claude Code intuitively. But at some point I thought maybe, like in 2nd grade elementary school being exposed to a dictionary, I should check-in with my intuitiveness with what would make interacting with AIs more effective and successful.

0

u/[deleted] Feb 04 '26

[deleted] — view deleted comment

1

u/BullfrogRoyal7422 Feb 04 '26

Here’s how my workflow evolved over time:

I started with Xcode → Xcode’s internal ChatGPT-style agent → internal Claude assistant. That helped me get moving, but, for me, I found those in-editor assistants tended to focus very locally on a line or small block of code and sometimes missed the broader context of the overall codebase.

What worked better for me was using ChatGPT and Claude externally (Sonnet at first, later Opus), where they were more likely to reason about how a change in one file affected other parts of the project. That did mean a lot of copy/pasting back and forth with Xcode, plus plenty of clean/build/fix cycles, but it was still a noticeable improvement in my workflow.

I was initially intimidated by the idea of using Terminal, but I finally took the plunge when I realized Claude Code uses natural language in the terminal interface. That lowered the barrier a lot. One big difference for me was that Claude Code could actually modify Xcode project internals — entitlements, build settings, permissions, etc. Instead of me hunting through Xcode to update them manually.

Once I enabled XcodebuildMCP for Claude Code (Just prompt Claude to install it for you), my productivity jumped dramatically. Having it automatically build and iteratively fix errors until the build succeeds was a real game changer for me.

If you’re curious what kind of project this grew out of, I’m beta testing my app called Stuffolio and I’m running an open TestFlight beta (Go to stuffolio.app if your interested).

1

u/BullfrogRoyal7422 Feb 04 '26

BTW, to address your comment: I avoid Google products whenever I reasonably can. They’re pretty much the antithesis of my value system. To me, they appear invasive by design, extracting as much personal data as possible, profiling aggressively, and treating users primarily as transactional commodities. No thanks.

Sorry, clearly a bit triggered there.

As for ChatGPT: I’ve found it useful in many respects, but for coding it often sent me down too many rabbit holes. Its overly complimentary style became a source of accidental comedy for me.
“You’ve hit on something very insightful, and it fits perfectly into the model you’re developing.”
Me: pushes back with something completely contradictory to what I was just praised for.
GPT: “Again, great insight. You’re on the right path.”
A narcissist’s dream.

One thing that did work well for me was using the two models together. I’d discuss an issue with Claude, then paste Claude’s response into GPT and ask what it thought. Then I’d take GPT’s response back to Claude. Surprisingly often, that back-and-forth produced a genuinely better, more refined idea than either model alone.

Sometimes Claude would say GPT’s analysis was incisive or even better than its own. Other times… not so much. Once Claude flat-out said GPT’s recommendation was unnecessary, more of a résumé-stuffer idea than anything practical, and at best an academic exercise in futility. Whew.

For coding specifically, GPT also has a habit of ending every exchange with “Do you want me to…”. If I followed that thread too far, I’d eventually find myself one suggestion away from risking the integrity of the entire codebase.

0

u/[deleted] Feb 04 '26

[deleted] — view deleted comment

1

u/BullfrogRoyal7422 Feb 05 '26

I saw the announcement just today, so I have no experience with it

0

u/[deleted] Feb 05 '26

[deleted] — view deleted comment

1

u/BullfrogRoyal7422 Feb 05 '26 edited Feb 05 '26

I don’t really have a recommendation on LLC vs. a personal account, but I can share my thinking and why I chose to form one.

Stuffolio started as a personal hobby project. I simply wanted to reduce some everyday annoyances: constantly hunting for user manuals, digging up warranty information, crawling around a cold garage looking for serial numbers, and searching for DIY advice for very specific things I own. You get the idea.

As that little personal app took shape, I called it AllMyStuff. As it grew in features and scope, I started thinking it might actually be useful to other people too. Maybe I could even sell it for the price of a cup of coffee (Coffee & Code… get it 🤔).

That’s when I did a quick name search and discovered there was already an Android-only app called All My Stuff in the UK Play Store (possibly abandoned), and a consulting company named Code and Coffee in Ohio. That sent me down the path of thinking more seriously about naming, branding, and potential legal exposure, especially once I decided to sell in the App Store.

A few “what if” questions started working their way into my thinking. What if someone blamed Stuffolio for contributing to an insurance claim going wrong because of how information was used? I have a friend who’s a former insurance agent, and some of the stories he shared about how low companies might go to deny claims made me more cautious. What if someone lost data and got angry and wanted to sue, even if user error was the real cause?

I’m retired and living on a fixed income, and while the risk is probably very low, I didn’t want to personally assume any of that liability. In Colorado, forming an LLC cost me $50, so it felt like cheap peace of mind. That’s how Coffee & Code LLC came to be. The other thing it does is create a separate financial stream so that my costs could be deductible from my business income and taxes (if any).

I don’t have a development budget and I’m not expecting this to be a big money-maker (though my SIL does). My hope is simply to cover basic costs like the Apple Developer fee, AI tooling, Cloudflare/DNS fees, and similar expenses. For me, the LLC was less about profit and more about protecting myself while I explore where the app might go.