Skip to content
Back to journal
EngineeringDevOpsiOS

How We Build iOS Apps Without Making You Buy a Mac

CCode2Native EngineeringEngineering team
2025-01-25

Here's a frustrating reality of iOS development: you can write your app on Windows, design it on Figma, test it in a simulator—but the moment you want to actually compile it into an installable IPA, you need a Mac running Xcode.

Apple has made this non-negotiable. The code signing process requires macOS-specific toolchains that can't be legally replicated on other operating systems.

So we built a fleet of Mac Mini workers that do the compilation for you.

The build pipeline architecture

When you click "Build" in our dashboard, here's what happens:

[Dashboard]User clicks "Build iOS"
↓ HTTPS request with project config
[API Server]Job added to Redis queue
↓ Worker polls for available jobs
[Mac Worker]Picks up job, starts build
• git clone project template
• inject user config (URL, icons, colors)
• fastlane match (sync certificates)
• xcodebuild -archivePath ...
• codesign and export IPA
↓ Upload artifact to S3
[Dashboard]Download link appears

The hard part: certificate management

Building the Swift code is actually the easy part. The hard part is code signing.

Every iOS app must be signed with a valid Apple certificate and provisioning profile. If you've ever dealt with "Signing for 'App' requires a development team" errors in Xcode, you know the pain.

We use Fastlane Match to handle this complexity. When you upload your certificates to our platform, here's what happens:

Ephemeral keychains

We create a temporary macOS keychain just for your build. Your certificate is imported, used for signing, then the keychain is destroyed. No persistence.

Encrypted storage

Your P12 files are encrypted at rest using AES-256. They're only decrypted on the worker during active builds, then purged from memory.

The hardware: Apple Silicon workers

Speed matters. Our workers run on M-series Mac Minis (currently M2 and M2 Pro configurations).

This isn't just about being "fast"—Apple Silicon reduced our average iOS build time from ~12 minutes (Intel) to ~3-5 minutes. That's the difference between waiting for a build and getting your app while your coffee is still hot.

~3 min
Avg iOS build
~2 min
Avg Android build
24/7
Worker availability

On trusting us with your certificates

Yes, you're uploading your Apple signing certificates to a third party. We take this seriously—we're a small team with our reputations on the line. But if your security policy prohibits third-party certificate access, you'll need to build locally using our source code export option.

How is this different from Expo EAS?

Expo EAS is excellent if you're building a React Native app from source code.

But Code2Native solves a different problem: you already have a website, and you want to wrap it in a native container. You don't have React Native code. We provide the Swift/Kotlin template; you just configure it.

Think of us as "EAS for websites"—same cloud build concept, different input.

Build iOS from Windows or Linux

Stop fighting with Xcode. Let our Mac workers handle it.

Start Cloud Build
C

Code2Native Engineering

Engineering team

Written by the Code2Native engineering team — the people who build and operate the cloud build pipeline.