Why you need the -ObjC flag

In this blog post, I explain why you might need to set the -ObjC flag in the OTHER_LDFLAGS build setting of your Xcode project.

Incremental Xcode workflows across environments

Xcode struggles to achieve incremental builds within the same environment. What about across environments? Not even close. Tuist is working on bringing incremental builds and test execution to Xcode projects across environments.

Xcode is too magic

Xcode is a great tool for beginners, but it makes it hard for developers to understand what's going on under the hood and optimize their workflows.

Implicitness in Xcode and SPM. Why Apple?

Apple embraced implicitness in some areas of the build system, and it's causing headaches to developers. In this post, I share my thoughts on the topic and how we are planning to address it in Tuist.

Swift Packages default to supporting all platforms

Swift Package Manager defaults to supporting all platforms when they don't specify any. This is a problem for tooling like Tuist that integrates Swift Packages as Xcode project targets.

From side project to sustainable tool

Tuist, now 6 years old, has become essential for organizations using Xcode. While initially a side project, its popularity surged. To ensure sustainability, we're introducing paid features alongside free ones, navigating challenges like unauthorized forks and finding the right business model.

Empowering Development: The Journey and Vision of Tuist

Tuist provides solutions to challenges in large-scale app development overlooked by Apple. It's a foundation for developers, promising simplicity and a future filled with actionable insights.

The role of flexibility in scaling up Xcode projects

I often wonder why Apple continues to build features that are closed into Xcode, for example Swift Package Manager's integration. While some developers might see that as something positive, because that means it can be seamlessly integrated…

Tuist and the Swift Package Manager

It's common to see developers wondering why they should use Tuist instead of the Swift Package Manager (SPM) for modeling their projects. I think it's normal. It happened to me a few times too. Some of them even made me wonder if I should c…

Tackling technical debt in Tuist

I've recently spent a lot of time in Tuist tackling technical debt. It'd been a while since the last time I have to pause some other work for weeks to do something that would be beneficial for the long-term of the project. This time the wor…

Sparking joy working with Xcode

I learned by working with Ruby and Ruby on Rails during my time at Shopify that using tools and programming languages that spark joy is crucial for developers' motivation. Even though we developers love to understand complexities, we enjoy…

Tree-shaking Xcode projects

Tree-shaking is a concept inspired by Javascript and used by Tuist to generate lean Xcode projects that are processed and compile faster.

Module caching in Xcode projects

Bazel and Buck is the solution large companies have adopted to make Xcode build fast. However, it's complex and not accessible to medium and small companies. In this blog post, I share the approach Tuist is taking and how it's inspired by tools the community is already using.

Streamlining app development

One thing that I noticed after Shopify 's commitment to React Native is that it foster a culture of turning ideas into mobile apps. Doing app development is no longer a thing that only mobile developers do. In hindshight, it was a good comp…

WWDC's FOMO

I'm avoiding opening Twitter these days. It makes me a bit anxious receiving WWDC news through people racing to be the first one to publish the clickbait-type of tweet. I used to have energy to be part of that race and not suffering from FO…

Cognitive overhead

Bootstrapping and publishing an app to the App Store is not a straightforward process. I tried to do it myself yesterday and a lazy me got stuck when I had to create signing artifacts, write automation scripts, and set up things on the App…

A better signing experience in Xcode

A few days ago, Marek decided to take on a proposal that I made for Tuist a while ago, management of certificates and provisioning profiles . As it happened with the definition of dependencies, dealing with certificates and provisioning pro…

Generation of Swift interfaces to access resources

Many of you might already be familiar with SwiftGen ; a tool that generates Swift code to access resources in a type-safe manner. Having a type-safe API is something that Android developers have had for a long time, and that Apple has never…

A standard CLI for Xcode projects

There’s an idea that I’d love Tuist to move towards: provide a CLI that is standard across all the projects defined using Tuist. This is not a new idea; we can see it in frameworks like Rails that thanks to being opinionated about the struc…

Evolving Tuist's architecture

I'm flying back from Tokyo and took the opportunity to code a bit on Tuist. Since I don't have Internet connection to get distracted with, I decided to work on something that doesn't require Internet connection: improving the project archit…

Signing with Xcode on CI

Today, I worked on automating the release process of Angle on CI. At first, I thought it'd be a straightforward task, but it turned out not to be so. Most Xcode projects don't have to deal with this because they use Match , which abstracts…

What's coming to Tuist

A Monday blog post with some reflections about the current state of Tuist and its future.

Project generation

This blog post describes the advantages of dynamic over static Xcode projects, and how Tuist leverages project generation to help teams overcome the challenges associated to scaling up projects.

Adding error tracking to a CLI written in Swift

Trying to add error tracking to Tuist, I realized how the process is not very straightforward. This blog post describes the process that I followed to help other Swift developers add error tracking to their CLI tools.

Derived Info.plist files

In this mini-post I talk about some recent work that I've done in Tuist to support defining Info.plist files in the manifest file.

All you need is tools (talk)

This post contains the video of the talk that I gave at AltConf about why I think it's important investing into tooling and some tips to build great tools.

Abstracting Info.plist files

On this blog post I talk about an idea that I'm pondering for Tuist. In the aim of abstracting implementation details from Xcode projects, I think there's an opportunity for Tuist to abstract `Info.plist` files which are barely modified by developers after they get created.

Xcode updates are fun

On this blog post I talk about Xcode updates and how painful they can sometimes be.

Reliably installing Xcode

I started developing a tool, install-xcode that aims to help developers to install and upgrade versions of Xcode easily. In this blog post I talk about the motivation behinds building it and some design principles that I'm embrazcing.

Interacting with Xcode projects in Swift

This blog post is an introduction to the format of Xcode projects and xcodeproj, a Swift library that helps read and update Xcode projects in Swift. The post contains a few hands-on examples for developers to experiment with the library.

Open source mindfulness

Not being mindful when contributing and maintaining open source projects might lead to burnout or low self-steem. In this blog post I talk about some principles that I applied to have a healthier relationship with the open source.

Open Source

In this blog post I talk about why I work on open source projects and what are the most important elements for me when starting an open source community.

Linting your Xcode projects with xclint

In this post I talk about a tool I've been working on that allows you to check the state of your Xcode projects, finding missing references and duplicated files.

Consistent vs convenient

I analyze in this post why some decisions that we make in our projects might turn into bad viruses that spread all over the code base.

Modular Xcode projects

This post presents some elementary concepts of how Xcode projects are structured, and introduces an structural approach to build modular Xcode apps.

Composable UIs

Build UIs based on reusable components that you can compose in more complex hierarchies.

Divide and conquer

How modularizing your apps is helping us to scale our Xcode app.

Developing tools for developers

Learnings from being a core developer and providing other teams with the tools that they need for their daily work.

Xcode scripts to rule them all

Set of normalized scripts very useful for Xcode projects. Individual contributors will be familiar with them after they clone the project.

Modularize your mobile projects

Learn how to split your app components in different bundles instead of dealing with an unique bundle that packages the whole app