← All daysDay 46 of 49 · Part 11: Platform features and shipping
Day 46

Widgets, App Intents, and Foundation Models · Shipping to the App Store

These are the lesson notes for this day. Its build-along tutorial and flash cards have not been written yet.

Lesson 52

Widgets, App Intents, and Foundation Models

Widgets are small SwiftUI views shown on the Home Screen, the Lock Screen, and elsewhere. You build them with WidgetKit from a timeline of entries, because a widget does not run continuously. App Intents describe your app's actions and data to the system. They power Shortcuts, Siri, Spotlight, and interactive widgets.

The Foundation Models framework, introduced in iOS 26, gives your app access to an on-device language model through a Swift API. You can generate text, produce typed Swift values by marking a type @Generable, and let the model call your own functions (tool calling). iOS 27 adds image input and a wider choice of models.

Exercise

Add a widget that shows the next lesson due in this course. Then add one App Intent that performs an action in your app.

After this lesson you should be able to answer
  1. Why does a widget use a timeline instead of running continuously?
  2. What does adopting App Intents make possible?
  3. What does @Generable do?
Resources
Lesson 53

Shipping to the App Store

To release an app: set its bundle identifier, version, and build number. Provide an app icon and the privacy details. Archive in Xcode. Upload to App Store Connect. Test with TestFlight. Then submit for review, with screenshots and a description. Xcode Cloud, or another CI system, can build and upload for you automatically.

Exercise

Upload a build of your practice app to TestFlight and install it on a device.

After this lesson you should be able to answer
  1. What is the difference between a version number and a build number?
  2. What is TestFlight for?
  3. What does App Review need from you?
Resources