Your app works without failures, but users increasingly notice that it doesn't use new OS capabilities. Latest iOS versions offer Dynamic Island, interactive widgets, Live Activities — competitors have already implemented these features, and your app stays behind. This affects metrics: retention drops by 15–20% per month after major platform updates. We’ll help fix this without losing backward compatibility. We’ve adapted over 30 apps for new iOS and iPadOS versions, including features like Dynamic Island, Live Activities, widgets, and Stage Manager. Our experience allows us to implement features quickly and reliably.
Which new OS features should you implement first?
The choice depends on your app’s specifics. But universal ones include Lock Screen widgets for quick data access, Live Activities for real-time event tracking, Interactive Widgets for actions without opening the app, and for iPad—Stage Manager support for comfortable multitasking. According to our data, implementing Live Activities increases engagement 2.5 times compared to regular notifications.
Lock Screen Widgets and Live Activities
Lock Screen Widgets — widgets on the lock screen. They use WidgetKit with families .accessoryCircular, .accessoryRectangular, .accessoryInline. Simply porting a Home Screen widget is not enough—explicit support for these families is required.
struct LockScreenWidgetView: View { @Environment(\.widgetFamily) var family var body: some View { switch family { case .accessoryCircular: Gauge(value: progress, in: 0...1) { Image(systemName: "star") } .gaugeStyle(.accessoryCircular) case .accessoryRectangular: VStack(alignment: .leading) { Text(title).font(.headline) Text(subtitle).font(.caption) } default: EmptyView() } } } The color scheme of the widget is configured via .widgetAccentable() — without this modifier, the widget looks standard, not adopting the user's accent color.
Live Activities (ActivityKit) — dynamic banners on the Lock Screen and in Dynamic Island. They update via push notifications (ActivityKit push) or directly from the app. Typical scenarios: delivery, taxi, sports match.
// Start an Activity let attributes = DeliveryAttributes(orderId: "12345") let state = DeliveryAttributes.ContentState(status: .preparing, eta: Date().addingTimeInterval(1800)) let activity = try Activity.request( attributes: attributes, content: .init(state: state, staleDate: nil), pushType: .token ) Key point — pushType: .token. The server receives a push token and updates the activity via APNs without waking the app. Without a server component, Live Activities do not work.
Interactive Widgets and TipKit for new versions
Starting from the current iOS version, widgets have become interactive: Button and Toggle execute an AppIntent directly from the widget, rather than just opening the app.
struct QuickActionWidget: Widget { var body: some WidgetConfiguration { StaticConfiguration(kind: "QuickAction", provider: Provider()) { entry in QuickActionWidgetView(entry: entry) .containerBackground(.fill.tertiary, for: .widget) } } } struct QuickActionWidgetView: View { var entry: Entry var body: some View { Button(intent: ToggleTaskIntent(taskId: entry.taskId)) { Image(systemName: entry.isCompleted ? "checkmark.circle.fill" : "circle") } } } containerBackground — a required background modifier; otherwise Xcode shows a warning and the widget may display incorrectly.
TipKit — a framework for educational tips. It shows hints only to users who haven't yet used a feature. Display rules (#Rule) filter by donation count or time. TipKit stores state in iCloud and syncs across devices—no need to write your own tracking logic.
How to adapt an app for iPadOS Stage Manager?
Stage Manager on iPad allows opening windows of arbitrary size. The app must work correctly at any aspect ratio, not just fixed iPad sizes.
// Check for multiple window support UIApplication.shared.supportsMultipleScenes // true on iPad with Stage Manager UIWindowScene.sizeRestrictions sets minimum and maximum window size:
windowScene.sizeRestrictions?.minimumSize = CGSize(width: 400, height: 300) windowScene.sizeRestrictions?.maximumSize = CGSize(width: 1200, height: 900) AutoLayout with correct constraint priorities and UIContentSizeCategoryAdjusting for fonts are mandatory. Hard-coded sizes (e.g., frame = CGRect(x:0, y:0, width:375, height:812)) guarantee problems with Stage Manager.
Comparison of impact on metrics
| Feature | Engagement Increase | Retention Increase |
|---|---|---|
| Live Activities | 2.5x | 1.8x |
| Lock Screen Widgets | 1.5x | 1.3x |
| Interactive Widgets | 2.0x | 1.6x |
| Stage Manager | 1.2x | 1.1x |
Our work process
- Code and design audit: determine which new features are relevant to your app and how they fit into the current architecture.
- Prioritization: choose 2–3 features that will deliver maximum benefit. We don’t inflate the scope.
- Development: write code with
@availableand conditional implementations for backward compatibility. - Testing: test on real devices with the latest iOS versions and in simulators, including scenarios with different OS versions.
- Publication: update the App Store description, prepare screenshots with new features.
- Documentation: describe changes, provide maintenance instructions.
We have completed adaptation for over 30 apps—from financial to fitness trackers. Each project is delivered on time with a compatibility guarantee. Over 5 years of work, we have accumulated experience that allows us to avoid typical mistakes when implementing new features.
Estimated timelines
| Feature | Time |
|---|---|
| Lock Screen Widgets (addition to existing) | 1–2 days |
| Live Activities + server integration | 3–5 days |
| Interactive Widgets | 1–2 days |
| Stage Manager adaptation for iPad | 2–3 days |
| Comprehensive adaptation for new iOS | 3–5 days |
The cost is calculated individually after the audit. For a consultation and project evaluation, contact us. Order an audit of your app — we will suggest the optimal set of features.







