On the macOS executor specifically, timeout issues, or builds hanging, are generally caused by one of two issues.
The most common issue is a keychain popup (prompting for keychain access or a password) occuring that blocks execution. As the job is executed in a "head-less" environment with no user interaction available, this essentially blocks any further execution and the job then times out.
This is commonly caused by not having the 'setup_circle_ci' action called in the Fastfile. It is important this is called before each lane so that the keychain is set up in a way that facilities the CI environment.
Please ensure this is set up like so:
# fastlane/Fastfile ...
platform :ios do
Secondly, when the macOS executor runs out of usable memory, it may freeze/hang due to the way memory management in macOS works. This is more difficult to diagnose, but if you have a large app and/or testing suite then memory can become exhausted over time. The only method to test this would be to check if switching to the large macOS resource class helps. This requires manual activation, so please reach out to us in these instances.