Dynamic Island: what is it, interactive iPhone notifications

Author: IT Sectr Published: 2026-02-16 Reading time: 9 min

Dynamic Island is an interactive area at the top of iPhone 14 Pro and newer, combining the hardware camera cutout with software notifications into a single interface element. Dynamic Island adapts its shape and size to the type of content: call, timer, music, Live Activity, AirPods connection. Developers interact through the Dynamic Island API based on ActivityKit and WidgetKit. Learn more at Dynamic Island HIG.

Key Takeaways

  • Dynamic Island — a software-hardware UI element on iPhone 14 Pro and newer
  • Three modes — compact, minimal, and expanded with different content sizes
  • Live Activities — the main way for custom content in Dynamic Island
  • Animations — the system automatically manages transitions between Island states
  • System events — calls, AirPods, Face ID, charging are built into Dynamic Island

What is Dynamic Island on iPhone?

Dynamic Island is an iPhone 14 Pro, 15 Pro and newer interface element that uses the area around the front camera and Face ID sensors to display notifications and Live Activity. Unlike the old notch, which was a static black element, Dynamic Island dynamically changes shape and size: it expands to show a timer, shrinks for a connected AirPods icon, turns into a rectangle for sports scores.

Technical implementation of Dynamic Island is based on the hardware pill-shaped cutout of the OLED display and software pixel processing around it. The system increases the pixel refresh rate to 120 Hz in the Island area and uses anti-aliasing for smooth transitions between content and the black camera area. The developer does not program the Island directly — they create content through ActivityKit, and the system places it around the cutout automatically.

User perception — Dynamic Island turns a hardware drawback into a functional element. According to Apple research, users perceive Island as a natural part of the screen after just a few days of use. Highlighting and attention-switching animations — for example, an incoming notification shifts the Island and shows content with an expansion effect at 120 frames per second.

Dynamic Island Display Modes

Dynamic Island supports three content display modes, which the system selects automatically based on the type and number of activities. The developer defines the UI for each mode in WidgetBundle but does not control which mode is currently active. The system can also display two activities simultaneously: one to the left of the cutout, the other to the right.

ModeSizeContentExample
Compact~50pt widthIcon + short textTimer: clock icon + "05:00"
Minimal~22pt roundApp icon onlyScreenshot notification
Expanded~300pt x 80ptCustom SwiftUI ViewSports score with logos

Transition between modes is performed with a system animation lasting 0.4–0.6 seconds with an ease-in-out curve. When a new Activity appears, the Island expands from compact to expanded mode. When it ends, it shrinks back. The user can forcefully collapse the expanded mode by swiping left — the Island transitions to compact or minimal. The system also collapses the expanded mode after 5 seconds of inactivity if no updates are expected.

Two activities — if two apps have active Live Activities, Dynamic Island shows them on both sides of the cutout. The left side is the first started Activity, the right side is the second. If there is only one activity, it occupies the left side, the right remains empty. Tapping either side expands the Island and shows the content of that Activity. The system itself decides which Activity takes priority in case of conflict.

Creating Content for Dynamic Island

Dynamic Island content is created exclusively through Live Activity with the ActivityKit framework. The developer defines four areas in code: compact leading (compactLeading), compact trailing (compactTrailing), minimal (minimal), and expanded (expanded). Each area is a SwiftUI View that receives the current Activity state through context. If an area is not defined, Island does not display that Activity in the corresponding mode.

swift
struct DeliveryIsland: DynamicIsland {
    var body: some DynamicIslandContent {
        DynamicIslandExpandedContent {
            VStack(alignment: .leading) {
                Text(context.state.status)
                    .font(.headline)
                ProgressView(
                    value: context.state.progress
                )
                Text("ETA: \(context.state.minutes) min")
                    .font(.caption)
            }
        } compactLeading: {
            Image(systemName: "box.truck")
        } compactTrailing: {
            Text("\(context.state.minutes) min")
                .monospacedDigit()
        } minimal: {
            Image(systemName: "box.truck")
        }
    }
}

SwiftUI limitations in Dynamic Island — available components: Text, Image, HStack, VStack, ZStack, Spacer, ProgressView, Button (via Link only), Gauge. Prohibited: ScrollView, List, TabView, animations, gesture recognizers. Color palette — only System Colors (label, secondaryLabel, tint). Fonts — system sizes from .caption to .title3. Custom fonts and SF Symbols work correctly.

Testing Dynamic Island — Xcode provides a simulator with Dynamic Island support. Select iPhone 14 Pro or 15 Pro as the target device. ActivityKit simulates different Island modes: the Dynamic Island Mode button in Xcode Debug menu switches between compact, minimal, and expanded. To test multiple Activities simultaneously, use schemes with different ActivityIDs or launch two instances of the app.

System Events in Dynamic Island

System events — calls, AirPods, Face ID, charging, and others — take priority over custom Live Activities. When a system event occurs, Island pauses the display of custom content and shows the system one. After the system event ends, Island returns to custom content with an animation. The developer cannot cancel or modify system events — they are managed at the iOS operating system level.

System EventDisplay FormatPriority
Incoming CallMinimal card with contact nameHigh
AirPodsAnimation + battery chargeMedium
Face IDLock iconMedium
ChargingLightning icon + percentageLow
AirDropTransfer progressMedium
ScreenshotShutter animationLow

Incoming call — the most important system event. Dynamic Island shows the caller's name to the left of the cutout and the duration/status to the right. During an active call, Island does not display any custom Live Activities. The user can expand Island to open the call screen or collapse it to continue working in the app with the active call in the background.

AirPods connection — when opening the case near the iPhone, Dynamic Island animates the connection and shows the charge of each earbud and the case. The animation lasts 2–3 seconds, after which Island returns to its previous state. If the user had no active Live Activities, Island remains empty. AirPods Pro 2 also display volume and noise cancellation mode when pressing the stem.

Best Practices for Dynamic Island Development

Dynamic Island best practices from Apple should be followed to ensure a quality user experience. The compact mode should display only the most important information — an icon and a single number or short label. The expanded mode — only key information without redundant elements. Avoid placing text in compact mode if it exceeds 20 characters — the system truncates text with an ellipsis.

Push updates for Dynamic Island — use ActivityKit push for rare updates (order status, sports results) and local updates for frequent timers or stopwatches. Push notifications go through APNs and take 0.5–2 seconds to appear in Island. StaleDate — set content expiration date: if an update does not arrive on time, the system shows a gray background instead of content, signaling outdated data to the user.

swift
func updateDelivery(activity: Activity<DeliveryAttributes>) {
    Task {
        let newContent = ActivityContent(
            state: DeliveryAttributes.ContentState(
                status: .delivered,
                estimatedMinutes: 0
            ),
            staleDate: Date().addingTimeInterval(300)
        )
        await activity.update(newContent)
        // Ending Activity in 2 seconds
        try? await Task.sleep(nanoseconds: 2_000_000_000)
        await activity.end(newContent)
    }
}

Energy consumption — Dynamic Island and Live Activities have minimal impact on battery thanks to OLED display hardware optimization. Black pixels around the cutout are turned off, and content is rendered on a dedicated coprocessor. Average Live Activity consumption is less than 1% battery per hour of use when updating every 5 minutes. The system automatically pauses Island when the battery is low (below 20%) or in power saving mode.

Design for Dynamic Island does not require adapting the main app UI — Island operates independently of the active screen. Live Activity colors should match the system theme (light/dark) through system Color Assets. SF Symbols are preferred over custom icons — they are guaranteed to display correctly in any Island mode and have built-in Dynamic Type support.

Frequently Asked Questions

What does Dynamic Island look like on older iPhones?

Dynamic Island is only available on iPhone 14 Pro, 14 Pro Max, 15 Pro, 15 Pro Max and newer with iOS 16.1+. On older iPhones with a notch, Dynamic Island is not displayed — Live Activity appears as a regular banner on the lock screen. The developer does not need to write different code: the system itself adapts the interface to the device's capabilities.

Can I place two Live Activities in Dynamic Island?

Dynamic Island supports displaying two activities simultaneously — they are positioned to the left and right of the camera cutout. If there is only one activity, it occupies the left side, and the right side remains in compact state. Tapping either side expands the Island and shows the content of the corresponding Activity.

What system events use Dynamic Island?

System events in Dynamic Island: incoming call with a minimal card and contact name, AirPods connection with animation and battery charge, Face ID with a lock icon, device charging with percentage, modem mode, volume change, Silent Mode activation, AirDrop with transfer progress, and screenshot with shutter animation.

How to add Dynamic Island support to an app?

Dynamic Island does not require a separate API — it displays Live Activities created through ActivityKit together with WidgetKit. The app registers an Activity with DynamicIsland configuration, defines compact, minimal, and expanded SwiftUI Views. The system automatically shows it in Dynamic Island on supported devices.

Are there content limitations in Dynamic Island?

Dynamic Island is limited to three visual states with different sizes: compact up to 50pt, minimal up to 22pt, expanded up to 300pt. In compact mode, it is not recommended to place text longer than 20 characters. Only system SwiftUI components are available — Text, Image, ProgressView, Gauge. Custom fonts and colors are limited to the system palette.

Summary

  • Dynamic Island — interactive area around the camera cutout on iPhone 14 Pro and newer
  • Three modes — compact, minimal, and expanded with system-managed transitions
  • Live Activity — the only way for custom content via ActivityKit and WidgetKit
  • System events — calls, AirPods, Face ID, charging take priority over custom content
  • SwiftUI limitations — only Text, Image, ProgressView, HStack, VStack, ZStack, Gauge
  • Energy consumption — less than 1% battery per hour of use with updates every 5 minutes
  • Two activities — Island displays up to two activities simultaneously on both sides of the cutout

We will develop a mobile application turnkey

IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.

Discuss the project

Read also