# Migrating Doximity's iOS Newsfeed to SwiftUI Without Disrupting Users or Development

DevFeed: [Migrating Doximity's iOS Newsfeed to SwiftUI Without Disrupting Users or Development](<https://devfeed.tech/articles/migrating-doximity-s-ios-newsfeed-to-swiftui-without-disrupting-users-or-development-20037.md>)

Original publisher: [Read original article](<https://technology.doximity.com/articles/migrating-doximity-s-ios-newsfeed-to-swiftui-without-disrupting-users-or-development>)

Author: Doximity

Published: 2026-09-04T10:50:00Z

Content type: tutorial

Language: en

Sources: [Doximity](<https://devfeed.tech/sources/doximity.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [Development](<https://devfeed.tech/topics/development.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [bridge](<https://devfeed.tech/tags/bridge.md>), [development](<https://devfeed.tech/tags/development.md>), [incremental](<https://devfeed.tech/tags/incremental.md>), [ios](<https://devfeed.tech/tags/ios.md>), [migration](<https://devfeed.tech/tags/migration.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>)

## AI overview

This article describes Doximity's incremental migration of its iOS Newsfeed from UIKit to SwiftUI. The team moved one section at a time, kept UIKit and SwiftUI compatible, continuously measured behavior, and made each step reversible. The feed's server-driven card and section architecture, with state and logic managed in The Composable Architecture, provided the migration boundary.

## Source excerpt

The Newsfeed is one of the most-used features in the Doximity iOS app. It is the first thing many users see when they open the app. For doctors checking in between patients or residents catching up during a break, it has to be fast and efficient. Those expectations defined success for the migration. Feature work had to continue, analytics had to remain reliable, and the experience had to remain familiar to users even as the underlying implementation changed. We approached the migration less like a rewrite and more like a controlled rollout. We moved one section at a time, kept the UIKit and SwiftUI implementations compatible, measured behavior continuously, and made each step reversible. The technical bridge enabled the migration, but this incremental approach reduced the risk to the product. The Newsfeed brings several types of content together in a single scrolling experience. Here are a few examples of the different cards users may encounter: The Architecture Behind the Newsfeed Before discussing the migration, it helps to understand the architecture that made our incremental approach possible. The Newsfeed is not one large custom view. It is a server-driven list built from cards, with each card assembled from smaller sections. The server controls the composition of the feed. It tells the app which cards should appear, which sections belong inside each card, and the order in which those sections should render. The iOS app owns the rendering and behavior of each known section type. This separation makes the feed flexible. Rather than relying on a fixed set of hardcoded card types, the server can compose cards from reusable sections such as headlines, authors, summaries, media, polls, and social actions. By combining and ordering those sections differently, the server can create different card layouts without requiring a new implementation in the app. This is roughly what the model looks like: Server-driven feed response Newsfeed ├─ Card │ ├─ Section: author │ ├─ S