SwiftUI & Interface Design

Chapter 14
Production Delivery and Emerging SwiftUI Practice

Certificate in IOS Development
SwiftUI & Interface Design   •   Certificate

Production Delivery and Emerging SwiftUI Practice

Introduction

A SwiftUI interface is not complete when it compiles or looks attractive in a simulator. A production interface must be reliable, accessible, maintainable, testable, secure, and appropriate for every device and operating system that it supports. It must also be deliverable through a controlled release process. These requirements change interface design from an individual coding activity into a coordinated engineering practice.

SwiftUI is particularly suited to this practice because its declarative model encourages developers to describe interface state and relationships rather than manually control every visual transition. However, declarative code does not remove the need for architecture, design systems, quality assurance, version control, or ethical judgment. A poorly structured SwiftUI application can still contain inconsistent styling, inaccessible controls, unstable state, fragile tests, and unsafe data practices.

This chapter examines the final stage of interface development: preparing SwiftUI products for release and adapting them to contemporary professional practice. It covers production readiness, design systems, collaboration, continuous integration, multi-platform delivery, evolving APIs, AI-assisted development, and ethical AI-powered experiences.

Learning Objectives

By the end of this chapter, you should be able to:

  • evaluate whether a SwiftUI interface is ready for production;
  • organize reusable visual and interaction rules into a design system;
  • collaborate effectively using source control, code review, and documentation;
  • describe a continuous integration and delivery workflow for an Apple-platform application;
  • design SwiftUI interfaces that adapt across iPhone, iPad, Mac, Apple Watch, and Apple TV;
  • manage API evolution and deployment-target differences;
  • use AI-assisted development tools responsibly;
  • identify ethical, privacy, accessibility, and governance issues in AI-powered interfaces.

1. From Working Prototype to Production Product

A prototype answers the question, “Can this interaction be demonstrated?” A production product must answer additional questions:

  1. Does the interface remain usable with real data and realistic error conditions?
  2. Does it work across supported devices, orientations, text sizes, and input methods?
  3. Can another developer understand and modify it safely?
  4. Can defects be detected before release?
  5. Does it comply with platform policies, privacy expectations, and legal obligations?
  6. Can the team deliver updates repeatedly without excessive risk?

Production readiness is therefore multidimensional. A useful review considers the following quality dimensions:

DimensionTypical evidence of readiness
Functional qualityFeatures work for normal, empty, loading, offline, and error states
Visual qualityLayout, typography, color, spacing, and motion are consistent
AccessibilityVoiceOver, Dynamic Type, contrast, focus, and reduced motion are supported
PerformanceScrolling, launch, navigation, and data loading remain responsive
Security and privacySensitive data is minimized, protected, and disclosed appropriately
MaintainabilityCode is modular, documented where necessary, and covered by tests
Release qualityBuilds are reproducible, signed, tested, and traceable

1.1 State completeness

Many interface defects occur because developers design only the successful state. A production screen should normally consider at least:

  • initial loading;
  • successful content;
  • empty content;
  • partial content;
  • network failure;
  • authorization failure;
  • validation failure;
  • offline operation;
  • destructive-action confirmation;
  • recovery after an error.

SwiftUI makes state explicit. A view might receive an observable model containing a loading state, content, or an error. The exact implementation varies with the project architecture, but the design principle is stable: each meaningful state should have an intentional visual and interaction outcome.

1.2 Release configuration

A release build differs from a development build. It should use the appropriate optimization settings, production service endpoints, release signing identity, privacy declarations, and analytics configuration. Development tools such as verbose logging, test accounts, mock data, and debug menus must not accidentally appear in the public product.

Teams should distinguish at least three environments:

  • Development: local experimentation and rapid feedback.
  • Test or staging: a controlled environment resembling production.
  • Production: the environment used by customers.

Configuration should be externalized rather than scattered through view code. For example, a service URL, feature flag, or logging level should be supplied through a configuration mechanism rather than hard-coded in many views. This reduces accidental misconfiguration and makes testing more predictable.

2. SwiftUI Design Systems

A design system is a shared set of visual tokens, components, interaction patterns, content rules, and usage guidance. It is more than a color palette. Its purpose is to reduce arbitrary decisions and make a product coherent as it grows.

2.1 Tokens and semantic naming

A token is a named design value. Common token categories include:

  • color roles, such as primaryBackground or destructiveAction;
  • typography roles, such as screenTitle or supportingText;
  • spacing values;
  • corner radii;
  • control heights;
  • elevation or material treatments;
  • animation and transition conventions.

Semantic names are preferable to names based on appearance. warningText communicates purpose; orangeText communicates only a current visual choice. Semantic tokens allow a theme, brand, or accessibility treatment to change without rewriting every screen.

SwiftUI already provides many semantic system styles, including platform-aware colors, fonts, materials, and control styles. Developers should prefer these where they meet the product requirement because they adapt to appearance modes, accessibility settings, and operating-system conventions.

2.2 Reusable components

A reusable component should have a clear responsibility and a small, understandable interface. Examples include:

  • a branded button style;
  • a form field with validation messaging;
  • a loading content placeholder;
  • an empty-state view;
  • a card displaying a domain object;
  • a navigation destination;
  • a confirmation dialog pattern.

Reuse should not be pursued mechanically. A component is valuable when it represents a stable concept used in multiple contexts. Excessively generic components often require many Boolean parameters and become harder to understand than two focused views.

A good component documents its intended behavior. For example, a custom button style should make clear whether it supports disabled state, loading state, destructive actions, and long localized labels. The component should also preserve accessibility semantics rather than merely drawing a visually similar rectangle.

2.3 Accessibility as a design-system property

Accessibility cannot be added reliably at the end. A design system should define accessible defaults. Text should support Dynamic Type rather than depending on fixed sizes. Images should have meaningful labels when informative and be hidden from assistive technologies when decorative. Controls should expose their purpose, value, and enabled state.

Color must not be the only carrier of meaning. A validation error should use text or an icon in addition to a color change. Touch targets must be sufficiently large and separated from neighboring targets. Keyboard, switch control, VoiceOver, and pointer interaction should be considered where relevant.

Motion also needs a system-level policy. Animation can clarify cause and effect, but excessive or automatic motion may distract users or cause discomfort. Interfaces should respect reduced-motion preferences and avoid making essential information depend on animation.

3. Team Collaboration and Maintainable Architecture

SwiftUI encourages small view structures, but a project still needs architectural boundaries. A practical separation may include:

  • Views: describe presentation and user interaction;
  • View models or observable models: coordinate presentation state and actions;
  • Domain models: represent business concepts and rules;
  • Services: communicate with networks, databases, sensors, or system frameworks;
  • Repositories: abstract storage or data retrieval where appropriate;
  • Design-system modules: contain shared styles and components.

This separation is not a mandatory pattern for every application. Its purpose is to prevent a view from becoming responsible for networking, persistence, validation, navigation, and visual layout simultaneously.

3.1 Source control practices

A team should agree on a branching and integration strategy. Small, focused commits are easier to review and revert than large mixed changes. Commit messages should identify the change’s purpose rather than merely state that a file was edited.

A pull request or merge request should explain:

  • the user problem addressed;
  • the principal implementation decisions;
  • testing performed;
  • accessibility and localization considerations;
  • screenshots or recordings for visual changes;
  • known limitations or follow-up work.

Code review is not a contest in personal style. Reviewers should prioritize correctness, security, accessibility, maintainability, and consistency with agreed design rules. Automated formatting and linting can handle mechanical issues, allowing human review to focus on design and behavior.

3.2 Documentation and decision records

Documentation is most useful when it explains decisions that are not obvious from the code. Examples include why a particular navigation structure was chosen, why a feature requires a minimum operating-system version, or why a service caches data locally.

A short architecture decision record can state the context, decision, alternatives considered, and consequences. This prevents a team from repeatedly revisiting the same question and helps future developers understand constraints.

4. Testing and Continuous Integration

Continuous integration (CI) automatically builds and tests changes whenever code is proposed or merged. Continuous delivery extends this process by producing a releasable artifact, while continuous deployment automatically releases under defined conditions. Mobile teams often use continuous delivery with a deliberate human approval before public release.

A typical pipeline is:

  1. A developer pushes a branch or opens a merge request.
  2. The system checks formatting, lint rules, and dependency resolution.
  3. The project builds for supported configurations.
  4. Unit tests run for models, services, and business rules.
  5. SwiftUI-related tests and previews are checked where practical.
  6. UI tests exercise critical journeys.
  7. Static analysis and security checks run.
  8. A signed test artifact is distributed to reviewers or testers.
  9. Release notes and version information are prepared.
  10. An authorized person submits the build through the appropriate Apple distribution process.

4.1 Testing levels

Unit tests verify small pieces of behavior, such as validation rules or date formatting. They should be fast and deterministic.

Integration tests verify cooperation among components, such as a repository and a local persistence layer. They may require controlled test data.

UI tests simulate user journeys such as signing in, searching, editing, and recovering from an error. They are valuable but can be slower and more fragile than unit tests.

Manual exploratory testing remains important for visual quality, unusual device conditions, accessibility, localization, and interactions that automated tests do not represent well.

A useful test is not one that merely increases a coverage percentage. It is one that detects a meaningful regression. Teams should identify high-risk journeys and test them consistently.

4.2 Preview and production data

SwiftUI previews accelerate visual development, but preview data should be stable, local, and representative. Previews should include long text, empty collections, error states, and different color schemes where relevant. They should never depend on a production account or an unreliable network request.

4.3 Performance and diagnostics

Performance testing should examine launch time, scrolling, memory use, network behavior, and rendering complexity. Instruments and platform diagnostics can help identify excessive allocations, repeated work, or expensive image processing.

Developers should avoid assuming that declarative code is automatically efficient. A view hierarchy can still perform unnecessary calculations, load large images synchronously, or trigger repeated network requests. Stable identity in lists, appropriate caching, and asynchronous work are practical concerns.

5. Designing Across Apple Platforms

SwiftUI supports a shared declarative approach across Apple platforms, but “write once” does not mean “design once.” Each platform has different screen sizes, input methods, conventions, and user expectations.

PlatformImportant design considerations
iPhoneCompact layout, touch interaction, one-handed use, interruptions
iPadSplit views, multitasking, pointer and keyboard, larger information density
MacResizable windows, menus, keyboard shortcuts, pointer precision, multiple windows
Apple WatchGlanceable information, short interactions, limited space and battery
Apple TVFocus navigation, distance viewing, remote-based input

Adaptive design uses available space and capabilities rather than targeting a fixed device image. Size classes, flexible stacks, grids, split navigation, and platform-specific modifiers help an interface respond to context. However, excessive conditional code can make a shared view difficult to maintain. Shared domain logic and design tokens can be reused while platform-specific presentation remains separate where necessary.

5.1 Navigation and input

Touch navigation does not map directly to keyboard, pointer, focus engine, or remote navigation. A Mac interface may need commands and menu items; an Apple TV interface must make focus movement obvious; an iPad interface may benefit from a persistent sidebar. The correct question is not “How can the phone screen be enlarged?” but “What is the natural task flow on this platform?”

5.2 Localization and content growth

Production interfaces must support translated text, right-to-left layouts where applicable, and text expansion. Fixed-width labels and assumptions about English word length are common sources of failure. Dates, numbers, currencies, units, and plural forms should use locale-aware APIs. Testing with pseudo-localized or deliberately long content can reveal layout weaknesses before translation begins.

6. Evolving SwiftUI APIs and Deployment Targets

SwiftUI continues to evolve. New operating-system releases may introduce improved navigation, observation, presentation, animation, charts, widgets, controls, and accessibility capabilities. Teams must balance the advantages of newer APIs against their supported deployment targets.

A disciplined approach includes:

  • reading official release documentation;
  • identifying the minimum operating-system version;
  • isolating newer features behind availability checks;
  • providing a coherent fallback rather than an incomplete experience;
  • testing both the newest and minimum supported systems;
  • avoiding adoption merely because an API is new.

API evolution also affects migration. A deprecated API may continue to function, but delaying migration indefinitely increases future cost. Migration should be planned, tested, and reviewed rather than performed as an unexamined search-and-replace operation.

Developers should distinguish an API’s availability from its suitability. A new framework feature may reduce code but introduce a dependency on an operating system that many users do not yet have. Product teams should make that trade-off explicitly.

7. AI-Assisted SwiftUI Development

AI tools can assist with code completion, explanations, test generation, refactoring suggestions, documentation drafts, and design exploration. They may improve productivity, particularly for repetitive code. They do not replace engineering accountability.

7.1 Productive uses

Appropriate uses include:

  • generating a first draft of a simple view from a clear specification;
  • proposing unit-test cases for validation logic;
  • explaining unfamiliar compiler diagnostics;
  • converting repetitive data mappings;
  • identifying possible accessibility omissions;
  • suggesting alternative layouts for review;
  • summarizing a small, non-sensitive code fragment.

The developer remains responsible for checking API accuracy, concurrency behavior, memory management, localization, security, licensing, and alignment with the project architecture.

7.2 Verification workflow

A responsible AI-assisted workflow is:

  1. Define the desired behavior and constraints before prompting.
  2. Provide only information that may safely be shared.
  3. Inspect the generated code rather than accepting it blindly.
  4. Compile and run tests.
  5. Review accessibility, privacy, and failure states.
  6. Check dependencies and license implications.
  7. Record significant AI-assisted decisions when team transparency requires it.

Generated code can contain plausible but incorrect API names, obsolete patterns, insecure storage, inefficient view updates, or fabricated explanations. Its fluency is not evidence of correctness.

7.3 Intellectual property and confidentiality

Organizational policy should define whether proprietary source code, customer data, credentials, unreleased product plans, or personal information may be entered into an AI service. The safest default is not to submit confidential material unless an approved, governed tool explicitly permits it.

8. Ethical Design of AI-Powered User Experiences

An AI-powered interface may summarize, recommend, classify, generate, or converse. These capabilities create new design responsibilities because users may not know how outputs were produced or how reliable they are.

8.1 Transparency and calibrated trust

The interface should communicate when content is generated or algorithmically selected. It should avoid implying certainty when the system is probabilistic. A recommendation should not appear to be an objective fact, and generated text should not be presented as verified professional advice unless it has undergone appropriate validation.

Useful transparency includes:

  • identifying AI-generated or AI-assisted content;
  • explaining the purpose of data collection;
  • indicating when an answer may be uncertain or incomplete;
  • providing a route to inspect sources where available;
  • allowing users to correct, reject, or report output.

8.2 Human control and meaningful consent

Users should retain control over consequential actions. An AI system may draft a message, but sending it, deleting records, making a purchase, or changing a medical or financial setting should require understandable confirmation. Consent should not be hidden in dense terms or obtained through manipulative defaults.

8.3 Privacy and data minimization

AI features often depend on user content. Teams should collect only what is needed, explain retention and processing, protect data in transit and at rest, and provide appropriate deletion or access mechanisms. Sensitive categories such as health, precise location, identity, or financial information require heightened care.

A privacy review should ask:

  • What data enters the model or service?
  • Is it retained, used for training, or shared with another provider?
  • Can the feature work with less data?
  • What happens when the user withdraws permission?
  • How are children and vulnerable users protected?

8.4 Bias, accessibility, and unequal impact

AI outputs can reproduce bias in training data or system design. Testing should include varied names, dialects, languages, disabilities, and user contexts. A feature that performs well for a dominant group may disadvantage others. Accessibility must include not only the interface around the model but also the model’s output: generated descriptions, recommendations, or classifications should not undermine users with disabilities.

8.5 Safety and escalation

High-risk outputs require guardrails and escalation pathways. A conversational feature dealing with health, crisis, legal, or financial matters should not create a false impression that it is a qualified professional. The product should direct users to appropriate human or emergency services when necessary. Logging for safety must itself respect privacy and retention limits.

9. Illustrative Case: Releasing a Cross-Platform Study Planner

Background

A small team has built a SwiftUI study planner for iPhone and iPad. Students can create tasks, receive reminders, and ask an AI assistant to convert a topic into a suggested study plan. The prototype works with sample data but has not been released.

Problem

Early testing reveals four issues: the interface has no empty state, long task names are truncated, the AI assistant presents generated plans as authoritative, and the team has no automated release process. The product also stores student notes in a cloud service without a clear retention explanation.

Analysis

The problems are not isolated visual defects. The missing empty state affects first-use comprehension; truncation affects accessibility and localization; authoritative language creates a trust risk; and unclear retention creates a privacy and governance problem. The absence of CI increases the likelihood that fixes will be released inconsistently.

Approach and solution

The team creates semantic design tokens and reusable components for task rows, empty states, errors, and buttons. It replaces fixed text sizes with Dynamic Type-compatible styles and tests long localized strings. The iPad layout uses a navigation split view, while the iPhone layout uses a compact navigation flow.

The team defines explicit loading, success, empty, offline, and error states. Unit tests cover task validation and date calculations; UI tests cover creating, editing, and deleting a task. CI builds the application, runs tests, checks the release configuration, and distributes a signed build to testers.

For the AI assistant, the team changes the wording to “Suggested study plan,” displays a notice that content is generated, allows editing before saving, and provides a report option. The application sends only the topic necessary for generation, explains processing and retention, and provides a deletion control. The team tests outputs using varied subjects and deliberately ambiguous prompts.

Outcome

The product becomes more understandable for first-time users, more robust under varied content, and easier for the team to release. The AI feature is positioned as a drafting aid rather than an authority. The team also has evidence that important behavior is tested and that privacy decisions were considered before launch.

Learning points

  • Production readiness includes states, accessibility, operations, and governance.
  • Cross-platform reuse should preserve shared concepts without forcing identical layouts.
  • CI reduces release risk but does not replace human review.
  • AI features require transparency, user control, privacy protection, and testing for unequal impact.

10. A Practical Production Checklist

Before release, a SwiftUI team should be able to answer “yes” or provide a documented reason for “no” to the following questions:

  • Are all important loading, empty, success, offline, and error states designed?
  • Does the interface support Dynamic Type, VoiceOver, suitable contrast, and reduced motion?
  • Have long localized strings and right-to-left layouts been considered?
  • Are shared styles and components defined semantically?
  • Are secrets absent from the source repository and release binary?
  • Are unit, integration, UI, and exploratory tests appropriate to the risk?
  • Does CI build and test the supported configurations?
  • Are release signing, privacy declarations, permissions, and support links correct?
  • Has the application been tested on minimum and current supported systems?
  • Are AI-generated features transparent, controllable, privacy-conscious, and safe?
  • Can the team monitor failures and respond to user reports?

The checklist is a prompt for evidence, not a substitute for judgment. A product may satisfy a checklist mechanically and still fail users if the underlying decisions were careless.

Chapter Summary

Production SwiftUI development extends beyond constructing views. A releasable application must handle complete interaction states, use a coherent and accessible design system, remain maintainable under team development, and pass an appropriately layered testing process. Source control, code review, documentation, and CI make delivery repeatable and traceable.

SwiftUI supports multiple Apple platforms, but effective cross-platform design adapts navigation, input, layout, and information density to each context. Developers must manage evolving APIs through availability checks, migration planning, and testing across deployment targets. AI-assisted coding can improve productivity when generated work is inspected, tested, and governed. AI-powered user experiences require additional attention to transparency, consent, privacy, bias, accessibility, safety, and human control.

The central professional principle is responsible delivery: every interface decision should be evaluated not only for appearance and convenience, but also for reliability, inclusion, security, and its consequences for real users.

Key Terms

Design system: A coordinated collection of design tokens, components, patterns, and usage guidance.

Design token: A named value representing a shared visual or interaction decision.

Semantic naming: Naming based on purpose or meaning rather than current appearance.

Production readiness: The condition in which a product is sufficiently reliable, accessible, secure, maintainable, and deliverable for real users.

Deployment target: The minimum operating-system version and platform configuration an application supports.

Continuous integration: Automated building and testing of code changes as they enter a shared repository.

Continuous delivery: A process that keeps software in a releasable state and produces delivery artifacts automatically.

Unit test: A test of a small, isolated piece of behavior.

UI test: An automated test that exercises interface behavior through user-like interaction.

Availability check: A conditional mechanism that permits code to use APIs only on supported operating-system versions.

Dynamic Type: Apple’s system for adapting text presentation to a user’s preferred text size.

Localization: Adapting software to languages, regions, cultural conventions, and writing directions.

Feature flag: A configuration-controlled switch that enables or disables functionality.

AI-assisted development: Use of artificial-intelligence tools to support coding, testing, explanation, or design work.

Generated content: Text, images, recommendations, or other output produced partly or wholly by an algorithmic model.

Data minimization: Collecting and processing no more personal information than a purpose requires.

Human-in-the-loop: A design in which a person reviews, approves, or controls an automated system’s consequential action.

Calibrated trust: Presenting system capability and uncertainty so that users form an appropriately accurate level of confidence.

Accessibility: Designing products so that people with varied abilities can perceive, understand, navigate, and operate them.

Governance: Policies, responsibilities, controls, and review processes used to manage technical and ethical risk.

Review Questions

Short Answer Questions

  1. Why is a prototype not necessarily production ready?
  2. What is the difference between a visual token and a semantic token?
  3. Identify two benefits of continuous integration.
  4. Why must a cross-platform SwiftUI interface adapt to platform-specific input methods?
  5. State two responsibilities that remain with a developer when AI generates code.

Long Answer Questions

  1. Explain how a SwiftUI design system can improve consistency, accessibility, and maintainability.
  2. Describe a suitable CI and continuous-delivery workflow for an Apple-platform application.
  3. Discuss the major differences that should be considered when adapting an iPhone interface for iPad and Mac.
  4. Explain how a team should manage evolving SwiftUI APIs when it supports older operating systems.
  5. Discuss the ethical requirements for an AI-powered study or productivity feature.

Analytical / Application Questions

  1. A release candidate works for a successful network response but has no offline, empty, or error states. Analyze the risks and propose a prioritized improvement plan.
  2. A generated AI summary is displayed in the same visual style as verified institutional information. Evaluate the trust and safety problems and redesign the presentation.
  3. Design a release strategy for a SwiftUI application maintained by four developers. Include source control, code review, testing, CI, staged distribution, and post-release monitoring.

Multiple Choice Questions with Answers

Question 1

Which feature most directly indicates production readiness?

A. The app contains only a successful content state

B. The app handles loading, empty, success, offline, and error states

C. The app uses the newest available API everywhere

D. The app has no reusable components

Correct Answer: B. The app handles loading, empty, success, offline, and error states

Question 2

What is the main advantage of semantic design-token names such as destructiveAction?

A. They describe the current RGB value precisely

B. They eliminate the need for accessibility testing

C. They communicate purpose and permit visual changes without rewriting usage

D. They ensure every platform has identical layouts

Correct Answer: C. They communicate purpose and permit visual changes without rewriting usage

Question 3

What is the primary purpose of continuous integration?

A. To replace all manual design decisions

B. To automatically build and test proposed code changes

C. To prevent developers from using source control

D. To publish every commit immediately to all users

Correct Answer: B. To automatically build and test proposed code changes

Question 4

Which test is most appropriate for an isolated task-validation rule?

A. Unit test

B. Snapshot of the App Store page

C. Manual device purchase test

D. Localization translation review only

Correct Answer: A. Unit test

Question 5

Why should cross-platform SwiftUI design not simply enlarge an iPhone layout for Mac?

A. Mac applications cannot use SwiftUI

B. Mac users have different input methods and window conventions

C. Mac applications cannot display text

D. iPhone layouts are always inaccessible on iPhone

Correct Answer: B. Mac users have different input methods and window conventions

Question 6

What should a team do when a SwiftUI API is unavailable on its minimum supported operating system?

A. Use it without testing

B. Remove support for every older system automatically

C. Use availability checks and provide a coherent fallback

D. Copy the API implementation from an unrelated framework

Correct Answer: C. Use availability checks and provide a coherent fallback

Question 7

Which is a responsible use of AI-assisted coding?

A. Submitting customer passwords to obtain debugging help

B. Accepting generated code without compiling it

C. Using AI to draft tests and then reviewing and running them

D. Treating generated explanations as official documentation

Correct Answer: C. Using AI to draft tests and then reviewing and running them

Question 8

What does data minimization require in an AI-powered feature?

A. Collecting every available user attribute

B. Collecting only the information necessary for the stated purpose

C. Keeping all data indefinitely

D. Avoiding any explanation of data processing

Correct Answer: B. Collecting only the information necessary for the stated purpose

Question 9

Which design best supports human control over an AI-generated purchase recommendation?

A. Automatically completing the purchase

B. Hiding that the recommendation was generated

C. Allowing review and explicit confirmation before purchase

D. Disabling the ability to reject the recommendation

Correct Answer: C. Allowing review and explicit confirmation before purchase

Question 10

Why should generated AI content be clearly identified?

A. To make the interface appear more complex

B. To help users form an appropriately calibrated level of trust

C. To guarantee that every generated statement is correct

D. To remove the need for privacy protection

Correct Answer: B. To help users form an appropriately calibrated level of trust

SwiftUI & Interface Design
Chapter 14 of 14