# Sofapps

We build apps. Get comfortable.

We design, build and look after our own apps, for the people who use them every day.

## Our apps for iPhone, iPad, Mac and Apple Watch.

- [Voltidia](https://www.sofapps.it/voltidia/): The battery, the charging and the costs of your Renault group electric car. (iPhone, iPhone Duo, Apple Watch)
- [MLX Benchmarks](https://www.sofapps.it/mlxbenchmarks/): How fast language models run on your iPhone, iPad and Mac, measured the same way on every device. (iPhone, iPad, iPhone Duo)
- [Prezzi Carburante](https://www.sofapps.it/prezzicarburante/): Fuel prices at the stations near you, from the Italian ministry’s open data. (iPhone, iPad, iPhone Duo)
- [Grade](https://www.sofapps.it/grade/): Ride real roads on your smart trainer. Bring a GPX or a FIT, or record the road yourself. (iPhone, iPad, iPhone Duo, Mac, Apple Watch)

## Our services.

What we learn making our own apps is available to companies and startups.

- **Consulting**: Idea, strategy and business model, before writing any code.
- **Design and development**: Native apps in Swift and SwiftUI, from scratch or starting from yours. No cross-platform frameworks.
- **Training**: Swift and SwiftUI courses and workshops for your team, from the basics to the architecture of an app.
- **Accessibility**: VoiceOver, Dynamic Type and increased contrast are part of the design from the first sketch.
- **Release and care**: TestFlight, App Store review and updates for every new version of Apple's systems.

## Made by people, on the slopes of Mount Etna.

Sofapps was born in Catania, a stone's throw from the most famous volcano in Europe. Behind every app is the person who thought of it and still looks after it.

Costantino Pistagna is a software architect and consultant. One of the first teachers of Apple's iOS Developer Academy in Europe, he has been building for the Apple world since the first iPhone was born in 2009. When he is not writing apps, he loves making sushi and travelling with his wonderful family.

## From the blog

- [Liquid Glass vs Material 3: The End of Convergence in Mobile Design](https://www.sofapps.it/blog/liquid-glass-vs-material-3/): Apple's Liquid Glass and Google's Material 3 Expressive pull mobile design apart, ending years of convergence and forcing new choices on app developers.
- [WWDC25: Hello, Liquid Glass](https://www.sofapps.it/blog/wwdc25-liquid-glass/): How Apple's design went from the skeuomorphism of 2007 to iOS 7 flat minimalism and now Liquid Glass, and why glass suits layered, spatial interfaces.
- [Dynamic Island: Neverland and the new iPhone 14 Pro](https://www.sofapps.it/blog/dynamic-island-iphone-14-pro/): The Dynamic Island on iPhone 14 Pro: how Apple turned the notch, born with iPhone X in 2017, into a software feature, and why it feels like a stroke of genius.
- [App Tracking Transparency using Combine](https://www.sofapps.it/blog/app-tracking-transparency-combine/): How to wrap ATTrackingManager and ASIdentifierManager in an ObservableObject with Combine, to ask for tracking consent and read the advertising ID.
- [SwiftUI within UIKit: Connecting two worlds](https://www.sofapps.it/blog/swiftui-within-uikit/): How to move only the content of a UITableViewCell to SwiftUI through UIHostingController and Combine notifications, with no scrolling issues.
- [Apple Silicon: Back to the future](https://www.sofapps.it/blog/apple-silicon-back-to-the-future/): Why the M1 may be for computers what the iPhone was for phones in 2007: Apple's hardware and software integration, and a lead rivals will struggle to close.
- [SwiftUI Programming: ObjectBinding and BindableObject](https://www.sofapps.it/blog/swiftui-programming-objectbinding/): How to share a class based model between SwiftUI views with @ObjectBinding and BindableObject, using Combine PassthroughSubject to notify changes.
- [SwiftUI Programming: An Introduction to States](https://www.sofapps.it/blog/swiftui-programming-states/): How @State ties a SwiftUI view to its data, why this beats the UIKit controller approach, and how to extract subviews and pass a model to them.
- [SwiftUI Programming: Building more complex views](https://www.sofapps.it/blog/swiftui-programming-complex-views/): How to build a custom table view cell in SwiftUI with VStack, HStack, Image and Spacer, and how the ViewBuilder closure composes views without addSubview.
- [SwiftUI Programming: Classes and Structs in SwiftUI](https://www.sofapps.it/blog/swiftui-programming-classes-structs/): Why a class cannot simply replace a struct as a SwiftUI View, what error the compiler gives, and how a final class makes it possible when needed.

## The podcast

Il Morso: News and stories from the Apple world, a new episode every week, in Italian. 208 episodes. https://www.ilmorso.it/

## Write to us.

We read every message and reply personally.
