Figment.so
Mac hostingWebsite hostingGuidesHow to usePricing

Xcode Cloud vs Self-Hosted Mac Runner Costs

Break-even between Xcode Cloud and a flat-rate dedicated Mac lands near 42 builds per day at a 12-minute average. Below that, Apple's metered plans are usually cheaper. Above it, the Figment Managed Build Mac at $249/month wins because you stop paying per compute hour. The math below lets you plug in your own numbers.

Xcode Cloud Pricing and Free Allowance

Every active Apple Developer Program membership ($99/year) includes 25 free compute hours per month. Additional capacity is billed as a monthly subscription from inside App Store Connect. Pricing per Apple's Xcode Cloud page:

PlanMonthly compute hoursMonthly priceEffective rate
Included with membership25——
100-hour100$49.99$0.50/hr
250-hour250$99.99$0.40/hr
1,000-hour1,000$399.99$0.40/hr
10,000-hour10,000$3,999.99$0.40/hr

Unused hours do not carry forward. If you exhaust the allocation before the month ends, builds queue until the plan renews or you upgrade to the next tier.

What Counts as a Compute Hour

Apple's definition on the same page: "A compute hour is an hour of time used to execute a specific task in the cloud, such as building an app or running automated tests. For example, running 5 tests of 12 minutes each equals one compute hour." Two practical consequences for a buyer:

  1. Parallel actions multiply consumption. Xcode Cloud runs tests in parallel with analyze, archive, and build. Four actions running for 15 minutes each equals one compute hour of wall-clock time, but it still spends an hour of metered capacity.
  2. Post-actions draw from the same budget. Notarization and TestFlight distribution started by the workflow run inside the environment and count against the allotment, just like the build itself.

A re-run after a flaky test consumes another full action. Teams with unstable suites routinely see measurable overage; plan a buffer or fix the flakes before sizing the tier.

What the Figment Managed Build Mac Includes

The Figment Managed Build Mac is $249/month at a flat rate — no per-build or per-hour charge. The plan covers:

  • One M-series Mac (exact chip generation, RAM, and disk are confirmed on your configuration quote)
  • CI runner agent setup and toolchain configuration
  • Backups and monitoring
  • 30 minutes of monthly support

A day with 300 builds costs the same as a day with five. Because the machine is persistent, your SwiftPM resolution cache, CocoaPods cache, and DerivedData survive between runs — a meaningful time saving over ephemeral cloud runners that start clean.

Physical Mac plans are request-based until the specific hardware is confirmed, so agree on an evaluation before purchase. See /mac-hosting for plan overview, or start a configuration request.

Worked Example: 50 Builds/Day at 12 Minutes

Scenario A — high volume team:

50 builds/day × 12 min ÷ 60 = 10 compute hours/day
10 × 30 = 300 compute hours/month

300 hours exceeds the 250-hour tier, so this team needs the 1,000-hour plan at $399.99/month.

Line itemMonthly cost
Xcode Cloud 1,000-hour plan$399.99
Figment Managed Build Mac$249.00
Monthly difference$150.99 in favor of Figment

These are different service models — Xcode Cloud is fully managed by Apple; the Figment plan gives you a dedicated M-series Mac with the CI runner set up for you, and you operate your own pipeline.

Scenario B — lower volume team (15 builds/day at 12 minutes):

15 × 12 ÷ 60 × 30 = 90 compute hours/month → 100-hour plan at $49.99/month

At this volume Xcode Cloud is $199.01/month cheaper than the Managed Build Mac. A dedicated Mac does not pay off at that cadence; stay on metered pricing.

A Small Cost Worksheet

Paste the block below into Google Sheets via File → Import → Paste data, then edit rows 2–5.

Field,Value
Builds per month,1500
Average build duration (minutes),12
Xcode Cloud effective rate ($/hr),0.40
Figment flat rate ($/month),249
Compute hours/month,=B2*B3/60
Xcode Cloud plan cost,=IFS(B6<=25,0,B6<=100,49.99,B6<=250,99.99,B6<=1000,399.99,B6<=10000,3999.99,TRUE,3999.99)
Figment monthly cost,=B5
Break-even builds/month at this duration,=250*60/B3

The break-even formula uses 250 compute hours — the point at which Xcode Cloud jumps from $99.99 to $399.99 and crosses the $249 flat rate. At a 12-minute average, that is 1,250 builds/month, or roughly 42/day. Change row 3 for your own suite's average wall time; the threshold moves inversely.

Hidden Costs

Apple Developer Program ($99/year): required for App Store distribution either way; not an incremental Xcode Cloud cost for existing members, but a dependency for new teams.

Re-runs: every rerun of a failed action pays again at the per-action rate. Count rerun history from a representative month before sizing a tier.

Peak sprints: a release week can exhaust the 250-hour plan several days early. Xcode Cloud lets you move to a larger tier mid-cycle; check the current proration behavior in App Store Connect before relying on it. Flat-rate pricing is unaffected by spikes.

Parallelism: fan-out across four simultaneous actions finishes faster but spends four times the compute hours per minute of wall clock. A dedicated Mac's core count is fixed and is not billed per lane.

When Each Option Wins

Team situationBetter optionWhy
Solo dev, under ~90 hrs/monthXcode Cloud 100-hr plan$49.99 vs $249 flat
Small team, under ~250 hrs/monthXcode Cloud 250-hr plan$99.99 vs $249 flat
Over ~42 builds/day at 12-min averageFigment Managed Build Mac$249 vs $399.99
Long nightly integration (60+ min)FigmentLong jobs disproportionately consume compute hours
Need persistent caches between runsFigmentDedicated disk; no ephemeral teardown
Zero infra ownership desiredXcode CloudApple runs the environment
visionOS or ARM-only targetsFigment M-series (not the $29 Intel VM)visionOS requires Apple silicon; confirm the chip on the quote

Migration: Xcode Cloud to Self-Hosted

  1. Inventory secret names, not values, from the Xcode Cloud environment. Re-enter each value directly into the new CI platform's secret manager (or sync from your existing store such as 1Password, Vault, or AWS Secrets Manager). Do not export values to a plaintext file.
  2. Export signing material properly. From Keychain Access, export the iOS Distribution identity as an encrypted .p12 with its private key and a strong password. Copy the matching .mobileprovision files from ~/Library/MobileDevice/Provisioning Profiles/ as files — provisioning profiles are not Keychain items.
  3. Install a runner agent on the Figment Mac. For GitHub Actions, follow the self-hosted runner docs; Buildkite and GitLab publish equivalent steps.
  4. Translate workflow actions into explicit pipeline steps against your real scheme and configuration: xcodebuild -workspace … -scheme <YourScheme> archive, xcrun notarytool submit for notarization, and the Fastlane pilot action for TestFlight upload. The commands above are an unexecuted outline; adapt them to your project before running.
  5. Run both pipelines in parallel for one sprint, compare output, then decommission the Xcode Cloud workflow.

Related reading: Manage Build Queues Across Mac CI Runners and CI Artifact Storage and Retention on a Mac. If your developers need Xcode access from Windows, see Remote Xcode from Windows.

Configure your Figment Managed Build Mac →


Subscribe for Figma design and website publishing guides.


Figment.so

Contact

Twitter

Website pricing

Compute index

About

Privacy

Terms