0197288b-c23a-71e9-8db3-094edd5793d3
Tuist Logo

Swift Stories

View in web browser
UI design by Manuel Muñoz Solera

Featured work: Manuel Muñoz Solera

#6 - Mar 7, 2025

Adding a language interface to your apps

Welcome to issue 6!

With LLM-based technologies becoming more widespread, and models getting more sophisticated and cheaper, people are getting used to a new type of interface that's not made by pixel but by language. It's still early, but there's a high possibility that many of the interactions that we know today in the context of apps (tab bars, buttons, navigation, etc.) will be replaced by natural language interactions. Can you imagine booking a flight or ordering a pizza with just a few words? To enable that future, it's necessary a standard interface that eliminates the MxN problem that can emerge, where there are multiple interfaces to communicate between a chat application like Claude or OpenAI, and the app itself. Anthropic has realized the need for it, and has gone ahead proposing a protocol, MCP for this purpose. An app can share resources, tools, and prompts (among others) that the LLM can interface with. @mattt (NSHipster) talked about it recently and shared his new project iMCP where he is building an interface between LLMs and your digital life in a macOS environment.

Despite more and more LLM-based apps like editors adopting it, OpenAI remains hesitant, most likely because it's a proposal from a competitor. But as we saw two issues ago, if an ecosystem forms around a technology, like it's currently happening with MCP, not just due to the clients that support it, but the number of integrations that are emerging and the marketplaces that are available, neglecting it or attempting to fork it is most likely a bad idea. For instance, I wonder what Apple will do with Siri. They are now on the spot for not being able to meet their promises around Apple Intelligence. Siri, like Claude and OpenAI models, interacts with users through text or voice-converted-to-text. However, while Claude suggests a standard method to maintain conversation context (MCP), Siri uses its own proprietary interface instead. Will they adopt MCP between Siri and the system? Will they disregard MCP (and its ecosystem) and continue betting on a proprietary solution? We'll see in this year's WWDC, but it's an excellent opportunity for Apple to jump on the existing ecosystems and find ways where Apple's hardware and OS can augment the possibilities, as opposed to neglecting it.

On the app development side, this whole trend also poses a very interesting question. If the interface becomes more text-based, and Siri (or its future evolution) takes that role across all Apple devices, and apps become a context provider, the UI of the app will become even less important. So all the heavy investment teams are doing these days in coming up with a perfect UI and an architecture that powers it might not be as relevant anymore. But even more than that, if all the application does is providing context, and many apps are presentation layers to server services, what's the point in adding the indirection of an app, if Siri could proxy directly with the server that exposes the interface. Sure, from the financial perspective it makes sense because you force developers through your marketplace rules, but it'll create unnecessary friction worsening the experience. Imagine having to install an app to just interface with your Linear issues (as opposed of authenticating against your Linear account using web technologies).

Who knows what the future holds, but languages are here to stay and challenge many of the patterns and assumptions that exist since the inception of the Internet and app development. I'm personally excited because it means new opportunities for companies and organizations, and also more accessible technologies. So if you are building an app, I'd recommend to keep an eye on what's happening and looking at the patterns that are emerging with curiosity. Sooner or later, you might need to design a language interface for your app, so that language-based apps can interface with it.


Tools & sites

Codea

Turning code into a visual coding tool

Codea just announced a new version, 3.13, which includes a coding feature you might have never seen before: annotating your code with an Apple Pencil. How cool is that?

Sake

Manage project commands using Swift

Want to automate your project tasks in Swift? Sake simplifies the process with a CLI and a DSL for defining your tasks. Pair it with Mise, and your automation will receive a well-deserved boost.

Docs

Collaborative writing, Simplified

More alternatives to closed-source products are emerging in Europe. Docs is the French government's proposal to replace the widely used Google Docs.

dba

Meet your database wingman.

Agentic tools are gaining popularity. This one not only helps you identify performance bottlenecks but also assists in resolving them. Can you picture the same for your Xcode projects? That’s the goal with Tuist, ensuring your energy is focused on creating great products rather than troubleshooting bugs.

Bloaty

A size profiler for binaries

An open source tool by Google to profile the size of binaries. And it works with Apple-compiled binaries. With a simple command you can get a detailed breakdown of your binary's size and spot opportunities for optimizations.


Worthy Five: Anastasia Petrova

Anastasia Petrova is a self-taught Ukrainian iOS Engineer based in London. She currently works at Depop, one of the largest online marketplaces for second-hand fashion. Before that, she worked on popular UK fintech apps, Monzo and Dojo. In 2024, Anastasia gave her first conference talk at SwiftLeeds '24, where she spoke about the hidden engineering complexities of A/B testing.

Anastasia Petrova

An app worth installing:

I love apps that get creative with Home Screen Widgets, and one great example is Locket Widget. It lets you share photos directly with close friends and family, which then pop up on their Home Screen widget. I use it to send cute pictures of my cats to my family 🐈. The app still needs some polish, especially with data syncing, but it’s a fun and personal alternative to corporate social media and messaging apps.


An open-source project worth checking out:

I recommend keeping an eye on the open-source Swift packages that Apple publishes under the swiftlang umbrella. Just recently, I ran into a production issue that required deduplicating elements in a sorted array, and switching from Array to OrderedSet from swift-collections turned out to be the perfect solution!


A developer tool worth using:

I highly recommend bookmarking Chris Eidhof’s SwiftUI Field Guide. As a visual learner, I found this interactive guide incredibly helpful for understanding the SwiftUI Layout System much faster than just reading the docs. Another great tool is Interactful, often use it to quickly check what Views and APIs are available in SwiftUI before diving into the documentation.


A developer worth following:

I recommend following Alex Ozun on LinkedIn and checking out his blog at Swiftology. He regularly shares insights from the trenches as a staff engineer working on a complex iOS app. That real-world experience makes his content stand out from more traditional creators who may not be working in large-scale codebases anymore.


A book worth reading:

Domain Modeling Made Functional is probably the book that has influenced my Swift coding the most, which is ironic, considering it uses F# for its examples! Luckily, the book focuses on the core principles of functional domain modeling, and the choice of language isn’t all that important as long as it supports basic static type system features, which Swift absolutely does!


Food for thought

JavaScript Fatigue Strikes Back

Read

Many developers prefer Apple app development over other ecosystems because it involves less fatigue. The standard library is mature, there’s a single official toolchain, and the ecosystem is more cohesive. If you’ve never explored the web and JavaScript ecosystems, you might find this blog post about JavaScript fatigue interesting and come to appreciate Apple’s ecosystem even more.

A 10x Faster TypeScript

Read

A slow compiler can hamper your productivity. Given the prevalence of large TypeScript codebases, Microsoft has opted to rewrite their compiler from TypeScript to Go to boost performance and efficiency. Apple has begun enhancing performance with their new build system, swift-build, but one question lingers: will they rewrite the Swift compiler in Swift?

In S3 simplicity is table stakes

Read

As an app developer, you may not interact with S3 directly, but your organization’s server likely does. S3 has become a standard for storing and accessing objects globally, with AWS placing strong emphasis on its simplicity. This straightforward design has made S3 a widely adopted solution for data storage and retrieval.

Travel Salesman Problem (TSP)

Check out

This art form, known as "TSP" (Travel Salesman Problem), transforms a mathematical challenge into stunning visuals, despite its rather unassuming name. The goal is to find the most efficient route to connect all points on a map. Interestingly, the solutions often resemble natural, organic structures. These prints, created from sketches using dithering and custom software, trace a single line across every black pixel in the image, resulting in pieces sized 27x27 cm and 29x29 cm.

The future of serialization & deserialization APIs

Read

The widely adopted Codable protocol for encoding and decoding data structures in Swift has a performance limit, prompting Kevin to propose a solution inspired by Rust’s Serde crate to enhance efficiency. The method involves implementing a visitor pattern with better ergonomics, leveraging Swift Macros for optimization.