iOS 27 (and macOS 15) brings the systemExtraLargePortrait widget family โ previously visionOS-only โ to iPhone, iPad, and Mac, giving widgets a tall canvas to display rich app content. Developers can now support this new family size alongside existing families with minimal code changes.
โข systemExtraLargePortrait widget family added to iOS, iPadOS, and macOS 27 (was visionOS-only before).
โข No changes to the WidgetKit timeline or provider APIs themselves โ adoption is purely additive via supportedFamilies.
โข Existing widgets can reuse the same timeline provider and entry types; only a new SwiftUI view for the larger canvas is needed.
โข The systemExtraLargePortrait family unlocks a significantly larger display area on iPhone/iPad/Mac, letting users see more content at a glance without opening the app.
โข Reusing existing timeline providers means adopting this new family requires only a new SwiftUI view and a one-line addition to supportedFamilies โ very low effort for high visibility.
โข Supporting more widget families increases discoverability in the Widget Gallery and gives users more customization choices.
Demonstrates adding the new systemExtraLargePortrait family to an existing WidgetKit widget, showing a reading schedule across multiple days in the new tall layout.
import WidgetKit
import SwiftUI
// MARK: - Timeline Entry
struct ReadingScheduleEntry: TimelineEntry {
let date: Date
let todayChapter: String
let tomorrowChapter: String
let pagesRemaining: Int
let daysUntilMeeting: Int
}
// MARK: - Timeline Provider
struct ReadingScheduleProvider: TimelineProvider {
func placeholder(in context: Context) -> ReadingScheduleEntry {
ReadingScheduleEntry(date: .now, todayChapter: "Chapter 5", tomorrowChapter: "Chapter 6", pagesRemaining: 120, daysUntilMeeting: 5)
}
func getSnapshot(in context: Context, completion: @escaping (ReadingScheduleEntry) -> Void) {
completion(ReadingScheduleEntry(date: .now, todayChapter: "Chapter 5", tomorrowChapter: "Chapter 6", pagesRemaining: 120, daysUntilMeeting: 5))
}
func getTimeline(in context: Context, completion: @escaping (Timeline<ReadingScheduleEntry>) -> Void) {
let entry = ReadingScheduleEntry(date: .now, todayChapter: "Chapter 7", tomorrowChapter: "Chapter 8", pagesRemaining: 95, daysUntilMeeting: 3)
let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: .now) ?? .now
let timeline = Timeline(entries: [entry], policy: .after(tomorrow))
completion(timeline)
}
}
// MARK: - Extra Large Portrait View (NEW in iOS 27)
struct ReadingScheduleExtraLargeView: View {
let entry: ReadingScheduleEntry
var body: some View {
VStack(alignment: .leading, spacing: 16) {
Text("๐ Reading Schedule")
.font(.title2.bold())
Divider()
VStack(alignment: .leading, spacing: 8) {
Label("Today: \(entry.todayChapter)", systemImage: "book.fill")
.font(.title3)
Label("Tomorrow: \(entry.tomorrowChapter)", systemImage: "book")
.font(.title3)
.foregroundStyle(.secondary)
}
Divider()
HStack {
VStack(alignment: .leading) {
Text("Pages Left")
.font(.caption).foregroundStyle(.secondary)
Text("\(entry.pagesRemaining)")
.font(.largeTitle.bold())
}
Spacer()
VStack(alignment: .trailing) {
Text("Days Until Meeting")
.font(.caption).foregroundStyle(.secondary)
Text("\(entry.daysUntilMeeting)")
.font(.largeTitle.bold())
.foregroundStyle(entry.daysUntilMeeting <= 2 ? .red : .green)
}
}
}
.padding()
.containerBackground(for: .widget) {
Color(.systemBackground)
}
}
}
// MARK: - Widget Definition
struct ReadingScheduleWidget: Widget {
let kind = "ReadingScheduleWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: ReadingScheduleProvider()) { entry in
ReadingScheduleExtraLargeView(entry: entry)
}
.configurationDisplayName("Reading Schedule")
.description("Track your daily reading goals.")
// iOS 27: add .systemExtraLargePortrait alongside existing families
.supportedFamilies([.systemMedium, .systemLarge, .systemExtraLargePortrait])
}
}Liquid Glass is Apple's new material and visual design language introduced in iOS 27, bringing translucent, refractive glass-like surfaces to system and custom UI elements. It replaces the frosted vibrancy aesthetic with a more dynamic, depth-aware material that responds to content beneath it.
PaperKit is Apple's full-featured canvas framework โ previously internal-only โ now publicly available in iOS/macOS/visionOS 27. It powers the drawing and markup experience in Notes, Preview, and Freeform, giving developers access to a complete pencil, shapes, images, and text canvas with a rich data model.
Xcode 27 introduces a fully customizable toolbar and theme system, untitled scratch projects, coding agent integration directly in the editor, and the new Device Hub for evaluating apps across simulators and physical devices side-by-side.
In-depth guide
SwiftUI & Liquid Glass in iOS 27 โThe systemExtraLargePortrait family was previously visionOS-only; code checking for this family at runtime will need updating for backward compatibility on older OSes. Ensure containerBackground is applied correctly or the system cannot apply tinting. Budget your timeline reload calls โ frequent reloads while the app is in the foreground may be throttled.
None beyond OS version; available on all iPhone/iPad/Mac devices running iOS/iPadOS/macOS 27+.
iOS 27 introduces new SwiftUI drag and drop APIs including reorderable, reorderContainer, dragContainer, and configuration modifiers that enable reordering within and across collections, multi-item drag, and fine-grained control over how data is transferred during drag and drop operations.