<!--
{
  "documentType" : "article",
  "framework" : "Updates",
  "identifier" : "/documentation/Updates/UIKit",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "UIKit updates"
}
-->

# UIKit updates

Learn about important changes to UIKit.

## Overview

Browse notable changes in <doc://com.apple.documentation/documentation/UIKit>.

## June 2026

### General

- Align sensor data from Core Location and Core Motion with your app’s UI orientation by setting a <doc://com.apple.documentation/documentation/UIKit/UIView> as the body of a <doc://com.apple.documentation/documentation/CoreLocation/CLLocationManager> or <doc://com.apple.documentation/documentation/CoreMotion/CMMotionManager> instance.
- Use <doc://com.apple.documentation/documentation/UIKit/UICollectionViewCompositionalLayoutSectionProvider> closures as part of automatic observation tracking to automatically invalidate and update compositional layouts when observable objects change.
- Use <doc://com.apple.documentation/documentation/UIKit/UIRefreshControl> and <doc://com.apple.documentation/documentation/UIKit/UIStepper> in Mac apps built with Mac Catalyst. These controls are now fully supported in the Mac idiom.

### App life cycle

- Adopt the UIKit scene-based life cycle using the guidance in <doc://com.apple.documentation/documentation/UIKit/transitioning-to-the-uikit-scene-based-life-cycle>. Starting in iOS 27, apps built with the latest SDK must use the scene-based life cycle or they fail to launch.

### Drag and drop

- Control drag initiation timing in gesture-rich views by configuring <doc://com.apple.documentation/documentation/UIKit/UIDragInteraction>. Use <doc://com.apple.documentation/documentation/UIKit/UIDragInteraction/allowsPointerDragBeforeLiftDelay> to independently control when pointer-initiated drags begin.

### Text views

- Override viewport layout methods directly in a <doc://com.apple.documentation/documentation/UIKit/UITextView> subclass by conforming to <doc://com.apple.documentation/documentation/UIKit/NSTextViewportLayoutControllerDelegate>.
- Register a <doc://com.apple.documentation/documentation/UIKit/UITextAttachmentViewProviderReusePolicy> on `UITextView` to retain attachment views during scrolling and editing, preventing flicker and preserving view state.
- Use <doc://com.apple.documentation/documentation/UIKit/NSTextTable>, <doc://com.apple.documentation/documentation/UIKit/NSTextBlock>, and <doc://com.apple.documentation/documentation/UIKit/NSTextTableBlock> to represent table structures in attributed strings.
- Access paragraph text blocks using <doc://com.apple.documentation/documentation/UIKit/NSParagraphStyle/textBlocks>.
- Use <doc://com.apple.documentation/documentation/UIKit/NSTextViewportRenderingSurface> to render text in custom views and layers, and <doc://com.apple.documentation/documentation/UIKit/NSTextViewportRenderingSurfaceKey> to identify them for caching.

## June 2025

### General

- Provide seamless immersive visuals by using <doc://com.apple.documentation/documentation/UIKit/UIBackgroundExtensionView> to extend a view’s content under sidebars and inspectors.
- Apply Liquid Glass effects to views using <doc://com.apple.documentation/documentation/UIKit/UIGlassEffect>.
- Organize views together for morph animations in <doc://com.apple.documentation/documentation/UIKit/UIGlassContainerEffect>.
- Add or adjust effects at the edge of a scroll view with <doc://com.apple.documentation/documentation/UIKit/UIScrollEdgeEffect>.
- Apply Liquid Glass effects to buttons with <doc://com.apple.documentation/documentation/UIKit/UIButton/Configuration-swift.struct/glass()> and <doc://com.apple.documentation/documentation/UIKit/UIButton/Configuration-swift.struct/prominentGlass()>.
- UIKit now supports Swift Observable objects. Use observable objects in <doc://com.apple.documentation/documentation/UIKit/UIView/layoutSubviews()>; then UIKit automatically invalidates and updates the UI when those objects change.
- Add a badge to a <doc://com.apple.documentation/documentation/UIKit/UIBarButtonItem> with <doc://com.apple.documentation/documentation/UIKit/UIBarButtonItem/badge-4sz3f>.
- Notification payloads are now strongly typed: <doc://com.apple.documentation/documentation/Foundation/NotificationCenter/MessageIdentifier>.

### Menu bar in iPadOS

- Swipe from the top to reveal an iPad app’s full menu. Menus on iPad support images, submenus, inline sections, checkmarks, and more.
- Configure main menus with <doc://com.apple.documentation/documentation/UIKit/UIMainMenuSystem>.

### High dynamic range (HDR)

- <doc://com.apple.documentation/documentation/UIKit/UIColorPickerViewController> supports picking HDR colors, with a maximum supported exposure value.
- Observe <doc://com.apple.documentation/documentation/UIKit/UITraitHDRHeadroomUsageLimit-swift.struct> to automatically adjust HDR usage when a view with HDR content is not in focus.

## June 2024

### General

- Leverage automatic trait usage tracking inside key update methods such as <doc://com.apple.documentation/documentation/UIKit/UIView/layoutSubviews()>, eliminating the need for manual trait change registration and invalidation.
- Add repeat, wiggle, breathe, and rotate effects to [SF Symbols](https://developer.apple.com/sf-symbols/).
- Take advantage of enhancements to <doc://com.apple.documentation/documentation/UIKit/UIListContentConfiguration-swift.struct>, which now automatically updates to match the style of the containing list by using the new <doc://com.apple.documentation/documentation/UIKit/UIListEnvironment> trait from the trait collection, removing the need to instantiate a configuration for a specific list style yourself.
- Opt out or restrict collaboration on certain types of data through the share sheet using <doc://com.apple.documentation/documentation/UIKit/UIActivityCollaborationMode>.
- Select a specific week of the year in <doc://com.apple.documentation/documentation/UIKit/UICalendarView> using the new <doc://com.apple.documentation/documentation/UIKit/UICalendarSelectionWeekOfYear> selection option.
- Observe, participate in, and affect the UI update process using <doc://com.apple.documentation/documentation/UIKit/UIUpdateLink>.

### Navigation

- Showcase your app and its unique identity with a new, customizable launch design for document-based apps. In UIKit, define <doc://com.apple.documentation/documentation/UIKit/UIDocumentViewController/launchOptions-swift.property> on your <doc://com.apple.documentation/documentation/UIKit/UIDocumentViewController>.
- Make your app’s navigation more immersive by adopting the new tab bar on iPad. If your app presents a rich hierarchy of tab items, set the  <doc://com.apple.documentation/documentation/UIKit/UITabBarController/mode-swift.property> to <doc://com.apple.documentation/documentation/UIKit/UITabBarController/Mode-swift.enum/tabSidebar> to automatically switch between the tab bar and sidebar representations. In SwiftUI, use <doc://com.apple.documentation/documentation/SwiftUI/TabViewStyle/sidebarAdaptable>.
- Transition between views in a way that feels fluid and consistent using a systemwide zoom transition. In UIKit, configure your view controller’s <doc://com.apple.documentation/documentation/UIKit/UIViewController/preferredTransition> to <doc://com.apple.documentation/documentation/UIKit/UIViewController/Transition/zoom(options:sourceViewProvider:)>. In SwiftUI, use <doc://com.apple.documentation/documentation/SwiftUI/NavigationTransition/zoom(sourceID:in:)>.

### Framework interoperability

- Reuse existing UIKit gesture recognizer code in SwiftUI. In SwiftUI, create UIKit gesture recognizers using <doc://com.apple.documentation/documentation/SwiftUI/UIGestureRecognizerRepresentable>. In UIKit, refer to SwiftUI gestures by name using <doc://com.apple.documentation/documentation/UIKit/UIGestureRecognizer/name>.

### visionOS

- Support more varieties of list layouts by configuring whether section headers stretch to fill the entire width of the list or shrink to tightly hug their content. For collection views, use <doc://com.apple.documentation/documentation/UIKit/UICollectionLayoutListConfiguration-swift.struct/contentHuggingElements-swift.property> on <doc://com.apple.documentation/documentation/UIKit/UICollectionLayoutListConfiguration-swift.struct>. For table views, use <doc://com.apple.documentation/documentation/UIKit/UITableView/contentHuggingElements> on <doc://com.apple.documentation/documentation/UIKit/UITableView>.
- Animate SF Symbols on visionOS using the symbol effects API and <doc://com.apple.documentation/documentation/UIKit/UIImageView>.
- Apply hierarchical vibrant text color to labels using <doc://com.apple.documentation/documentation/UIKit/UIColor/Prominence-swift.enum>.
- Specify an action to perform without shifting the focus away from the keyboard using <doc://com.apple.documentation/documentation/UIKit/UITextInputAssistantItem/keyboardAction>.
- Push a new scene in place of an existing scene using <doc://com.apple.documentation/documentation/UIKit/UIWindowScenePushPlacement-swift.struct>. The new scene appears in the same position as the original scene, hiding it. Closing the new scene makes the original scene reappear.

### tvOS

- Create a unifying color theme in your app by specifying an accent color in your app’s asset catalog, which is now supported in tvOS.

## June 2023

### General

- Preview your views and view controllers alongside your code using the new `#Preview` Swift macro.
- Take advantage of a new view controller appearance callback, <doc://com.apple.documentation/documentation/UIKit/UIViewController/viewIsAppearing(_:)>, to run code that depends on the view’s initial geometry. The system calls this method when both the view and view controller have an up-to-date trait collection, and after the superview adds the view to the hierarchy and lays it out. This method deploys back to iOS 13.
- Learn about enhancements to the trait system, which let you define custom traits for your own data, quickly change trait values throughout the view hierarchy, and register for trait changes in more flexible ways. For more information, see WWDC23 session 10057: [Unleash the UIKit trait system](https://developer.apple.com/videos/play/wwdc2023/10057/).
- Display and manage empty state consistently in your app with <doc://com.apple.documentation/documentation/UIKit/UIContentUnavailableConfiguration-swift.struct>, which provides new system standard styles and layouts for common empty states. Help people understand why no content is present, and when possible, provide guidance on how to add content.
- Create a powerful text experience in your app. Define richer interactions by changing the default tap or menu behavior when interacting with a text item. If you implement a custom UI for displaying text, support the redesigned text cursor by adopting the new text selection UI. Mark up text fields with additional text content types to help people fill out forms even faster. For more information, see WWDC23 session 10058: [What’s new with text and text interactions](https://developer.apple.com/videos/play/wwdc2023/10058/).
- Let people drop supported files and content onto your app icon on the Home Screen to open them in your app. To make sure your app is properly configured, verify that your `Info.plist` file specifies the file types your app supports using <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/CFBundleDocumentTypes>.

### Accessibility and internationalization

- Simplify how you maintain your accessibility code with block-based setters for accessibility attributes. Make sure people receive the most important information first by specifying a default, low, or high priority for announcements. Enhance custom accessibility elements with the new toggle and zoom accessibility traits.
- Create a great text experience for international users by testing your UI in all languages. Adopt text styles to take advantage of enhancements to the font system, like improved wrapping and hyphenation for Chinese, German, Japanese, and Korean, as well as enhancements for variable line heights that improve legibility in several languages, including Arabic, Hindi, Thai, and Vietnamese. Access localized variants of symbol images by specifying a locale.

### iPadOS

- Help people customize their Stage Manager configuration by including a larger target area for dragging windows. Leverage new resizing behavior for split view controllers to get the most out of your UI in Stage Manager.
- Support scrolling of your scroll view content with hardware keyboard shortcuts. This behavior is enabled by default, which you can override using <doc://com.apple.documentation/documentation/UIKit/UIScrollView/allowsKeyboardScrolling>.
- Simplify document management in your document-centric apps. Set your `UIDocument` subclass as the rename delegate of a navigation item to handle file renaming automatically. Build your content view controller from `UIDocumentViewController`, which provides a system default experience for managing documents: automatically configuring the title menu, sharing, drag and drop, key commands, and more. For more information, see WWDC23 session 10056: [Build better document-centric apps](https://developer.apple.com/videos/play/wwdc2023/10056/).
- Enhance the Apple Pencil experience in your iPadOS app. Give your app a sense of depth by using <doc://com.apple.documentation/documentation/UIKit/UIHoverGestureRecognizer> to draw a preview of the stroke. Support the beautiful new inks in PencilKit, including monoline, fountain pen, watercolor, and crayon.

### Views and controls

- Animate symbol images with new symbol effects, including bounce, pulse, variable color, scale, appear, disappear, and replace.
- Build even more performant apps with flexible layouts using collection views. Apply diffable data source snapshots and perform batch updates with even better performance. Use the <doc://com.apple.documentation/documentation/UIKit/NSCollectionLayoutDimension/uniformAcrossSiblings(estimate:)> dimension for compositional layouts to specify uniform size across sibling items, with smaller items increasing in size to match their largest sibling.
- Simplify spring animations by providing duration and bounce parameters for the new view animation method, <doc://com.apple.documentation/documentation/UIKit/UIView/animate(springDuration:bounce:initialSpringVelocity:delay:options:animations:completion:)>.
- Represent fractional progress through a page of content with page controls.
- Display and manipulate high dynamic range (HDR) images.
- Display your menu as a palette with <doc://com.apple.documentation/documentation/UIKit/UIMenu/Options-swift.struct/displayAsPalette> for it to appear as a row of menu elements for choosing from a collection of items.
- Take advantage of the <doc://com.apple.documentation/documentation/UIKit/UIStatusBarStyle/default> status bar style, which now automatically chooses a light or dark appearance that maintains contrast with the content underneath it.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)