Frameworks Behind the Apps: Exploring ChatGPT’s iOS Dependencies (Part 1)
In this new series, we will uncover the dependencies powering some of the most popular apps on the market. Our first focus? ChatGPT’s iOS app.
In this new series, we will uncover the dependencies powering some of the most popular apps on the market. Our first focus? ChatGPT’s iOS app.
As a big fan of OpenAI, I have been closely following their 12 Days of OpenAI event. Yesterday, OpenAI rolled out improvements to ChatGPT’s search functionality—well-timed, considering competitors like Perplexity AI are making big strides in search innovation.
One of the standout features I discovered is the preview of updates, which includes information about places, their ratings, articles, news, and more. As shown in the image below, the new UI provides a clean and visually appealing way to preview the results of the searched prompt.
This raised a question: How are these previews implemented after searching for the entered prompt online?
To dig deeper, I began tracking their use of third-party SDKs and noticed a new addition in the Licenses section of ChatGPT’s iOS app settings.
Discovery: ReadabilityKit Integration
Here’s what I found: The new library, Readability, was added between December 12 and December 17. To demonstrate the change, see the comparison images below:
- Left: Screenshot of ChatGPT’s iOS app settings on December 12 (before the update).
- Right: Screenshot of the same settings on December 17 (after the update, showing the new library).
What is ReadabilityKit?
After a quick investigation, I discovered that the library is ReadabilityKit, an open-source tool for Swift. As the description states:
“A preview extractor for news, articles, and full-texts in Swift.”
Key Features
ReadabilityKit can extract the following from a given URL:
- Title
- Description
- Top image
- Top video
- Keywords
- Date published
Here’s an example of how simple it is to use:
1
2
3
4
5
6
7
8
9
let articleUrl = URL(string: "https://someurl.com/")!
Readability.parse(url: articleUrl, completion: { data in
let title = data?.title
let description = data?.description
let keywords = data?.keywords
let imageUrl = data?.topImage
let videoUrl = data?.topVideo
let datePublished = data?.datePublished
})
To test this, clone the repo and run pod install from the Example directory. That is all it takes for you to try out the new library that openai uses
OpenAI’s Continuous Improvements
It’s worth noting that OpenAI has been consistently improving their iOS app—almost every two days, new updates and features are rolled out. This rapid pace highlights OpenAI’s commitment to enhancing user experience and staying ahead of competitors.
Final Thoughts
That’s all for this post! I hope you found this discovery interesting. If you enjoyed the content, don’t forget to give it a like and share your thoughts in the comments below. Suggestions for future app analyses are always welcome!
Stay tuned for Part 2, where we’ll explore another popular app and its dependencies.
☕ Support My Work
If you found this post helpful and want to support more content like this, you can buy me a coffee!
Your support helps me continue creating useful articles and tips for fellow developers. Thank you! 🙏


