whatisgithub

What is xctool?

facebookarchive/xctool — explained in plain English

Analysis updated 2026-06-24

6,873Objective-CAudience · developerComplexity · 2/5Setup · moderate

In one sentence

An archived command-line wrapper around Apple's xcodebuild that produced cleaner output, structured JSON test results, and parallel test runs for iOS and macOS projects.

Mindmap

mindmap
  root((xctool))
    What it does
      Wraps xcodebuild
      Clean test output
      JSON test results
      Parallel test runs
    Filtering tests
      By target
      By class
      By method
      Exclude by prefix
    Status
      Build support deprecated
      Xcode 8 not supported
      Archived by Facebook
    Alternatives
      xcpretty for formatting
      xcbuild for complex builds
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Run iOS or macOS test suites in a CI pipeline and get structured JSON output to feed into a results dashboard.

USE CASE 2

Speed up test runs by distributing test suites across multiple CPU cores in parallel.

USE CASE 3

Replace verbose xcodebuild output with a clean summary that only shows failures.

USE CASE 4

Filter a large test suite to run only a specific class or a single test method from the command line.

What is it built with?

Objective-CXcodexcodebuildJSONiOSmacOS

How does it compare?

facebookarchive/xctoolmacpass/macpassblockskit/blockskit
Stars6,8736,8486,838
LanguageObjective-CObjective-CObjective-C
Setup difficultymoderateeasyeasy
Complexity2/52/52/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires macOS with Xcode installed, build functionality does not work with Xcode 8 or later and the project is archived.

No license information was mentioned in the explanation.

So what is it?

Xctool is a command-line tool created by Facebook that wraps Apple's built-in xcodebuild to make running iOS and macOS tests easier, particularly in automated build pipelines. It was designed to solve specific frustrations with xcodebuild: the default tool produces enormous walls of text even when nothing goes wrong, outputs results in an unstructured format that is hard to parse automatically, and runs all test suites one at a time. The three main improvements xctool brought were cleaner output, structured results, and parallelism. By default, xctool only prints detailed output when a build or test fails, so you can spot the problem without scrolling through thousands of lines. Test results are captured as structured JSON objects, which makes it straightforward to feed results into dashboards or notification systems without writing fragile text parsers. The parallel test runner can split test suites across CPU cores, and Facebook reported two to three times faster test runs by enabling it. The tool accepts nearly all the same arguments as xcodebuild, so switching to it is typically a matter of replacing the command name. You can run all tests, limit to a specific test target, narrow further to a specific class, or drill down to a single test method. You can also exclude tests by name prefix. An important note: xctool's support for building projects (compiling code) is deprecated and does not work with Xcode 8 or later. The testing functionality continued to be supported, but the project itself is archived. Facebook recommends xcpretty (a formatting wrapper around xcodebuild) for simple needs, or their separate xcbuild project for more complex build requirements. The repository is now in the facebookarchive organization, which means it is no longer actively maintained.

Copy-paste prompts

Prompt 1
Show me the xctool command to run only the LoginTests class in my iOS project and output results as JSON to a file.
Prompt 2
How do I set up xctool in a GitHub Actions CI workflow to run my iOS tests and fail the build if any test fails?
Prompt 3
I want to run my iOS test suites in parallel with xctool. What flag do I use and what are the trade-offs I should know about?
Prompt 4
xctool is archived. Give me the equivalent xcpretty command that replaces my xctool test run with formatted output and JSON reporting.

Frequently asked questions

What is xctool?

An archived command-line wrapper around Apple's xcodebuild that produced cleaner output, structured JSON test results, and parallel test runs for iOS and macOS projects.

What language is xctool written in?

Mainly Objective-C. The stack also includes Objective-C, Xcode, xcodebuild.

What license does xctool use?

No license information was mentioned in the explanation.

How hard is xctool to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is xctool for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.