Flipper: Flipper iOS consumes 5-7min build time in entires production build process(about 15min)

Created on 2 Jun 2020  路  8Comments  路  Source: facebook/flipper

I am a RN developer and using 0.62.2 and flipper.
The building process of iOS with flipper is so long almost 3 times than not integrated with flipper.

All 8 comments

An empty RN project including Flipper takes roughly 1.5 minutes to build. Can you quantify 3 times longer and elaborate how you came to the conclusion that this is related to Flipper?

Ok, I am sorry to my first question makes confusion.
But I mean, I can see Flipper related libraries are compiled a long time in the iOS production build process.
Also, Flipper related targets have so many warnings... It makes me feel like that this library is unstable.

Please do quantify 'long time', some people mean 10 seconds with that, other hours :).

Note that although these libs are build as part of the production build, they are not included in the build. It is just that, afaik, the default iOS toolchain doesn't allow skipping or caching the builds of those libraries. So the compilation is completely pointless but out of our control.

Approximately, it consumes 5-7 min in entire production build press(about 15m).
Anyway, thank you for your response. I understood :)

@mym0404 I'm sorry to hear that. I'm not an iOS dev, so I can't give you any practical advice, but it sounds that the build process isn't very optimal in that case. It takes for me a little more than 2 minutes for a production build on my test project, and ~20 seconds for a subsequent production build, so it sounds that your production build process involves some other expensive steps that aren't necessary? (at least not for the Flipper libraries?).

Hey - for comparison - these two apps have similar build settings. the former not having flipper.

 Initialize job --- took: 0.07848333333333334 minutes
 Install Apple certificate --- took: 0.031183333333333334 minutes
 Install Apple provisioning profile --- took: 0.013033333333333333 minutes
 Checkout caltex-frontend-app@development to s --- took: 0.2001 minutes
 Install build scripts --- took: 0.0489 minutes
 Select Node.js Version v2 --- took: 0.08923333333333333 minutes
 Pre Build Script --- took: 0.0111 minutes
 Generate source map --- took: 1.7998333333333334 minutes
 Copy source map file to staging --- took: 0.004066666666666666 minutes
 Tag build --- took: 0.012166666666666666 minutes
 Set Xcode path --- took: 0.00665 minutes
 Determine project file path --- took: 0.0035833333333333333 minutes
 Determine signing style and pods update --- took: 0.02811666666666667 minutes
 Pod install --- took: 5.6477 minutes
 Set Bundle version --- took: 0.026866666666666667 minutes
 Update Xcode build settings --- took: 0.0237 minutes
 Copy build files to staging --- took: 0.006233333333333333 minutes
 Copy symbol files to staging --- took: 0.019866666666666668 minutes
 Publish build --- took: 0.07603333333333333 minutes
 Publish symbols --- took: 0.2879833333333333 minutes
 Create distribution --- took: 0.5260666666666667 minutes
 Xcode build (signed) --- took: 0.0030833333333333333 minutes
 Install Apple provisioning profile --- took: 0.0032166666666666667 minutes
 Install Apple certificate --- took: 0.00355 minutes
 Checkout caltex-frontend-app@development to s --- took: 0.007316666666666667 minutes
 Finalize Job --- took: 0.019016666666666668 minutes
 yarn/npm install --- took: 3.320316666666667 minutes
 Xcode build (signed) --- took: 17.196883333333332 minutes
 Initialize job --- took: 0.7717166666666667 minutes
 Install Apple certificate --- took: 0.2810166666666667 minutes
 Install Apple provisioning profile --- took: 0.0517 minutes
 Install build scripts --- took: 0.04763333333333333 minutes
 Select Node.js Version v2 --- took: 0.13191666666666665 minutes
 Pre Build Script --- took: 0.01365 minutes
 Generate source map --- took: 2.5033333333333334 minutes
 Copy source map file to staging --- took: 0.00515 minutes
 Tag build --- took: 0.014583333333333334 minutes
 Set Xcode path --- took: 0.00495 minutes
 Pod install --- took: 6.83725 minutes
 Determine project file path --- took: 0.005116666666666667 minutes
 Determine signing style and pods update --- took: 0.06141666666666667 minutes
 Set Bundle version --- took: 0.0321 minutes
 Update Xcode build settings --- took: 0.018666666666666668 minutes
 Xcode build (signed) --- took: 0.0034833333333333335 minutes
 Install Apple provisioning profile --- took: 0.00335 minutes
 Install Apple certificate --- took: 0.0036666666666666666 minutes
 Checkout z-nextgen-app@release/platform to s --- took: 0.009466666666666667 minutes
 Finalize Job --- took: 0.00485 minutes
 Checkout z-nextgen-app@release/platform to s --- took: 2.6241 minutes
 yarn/npm install --- took: 2.5786 minutes
 Xcode build (signed) --- took: 43.90396666666667 minutes

i'll run some more experiments and update this post (if it interests you guys)

UPDATE: we got rid of flipper

@akiwarheit Would you be so kind to share how did you get such a nice summary for each build step and it's time?

We document here on how to make the inclusion in CI optional: https://fbflipper.com/docs/troubleshooting/#disable-flipper-on-ci-builds-ios. Thanks for the pointers!

Was this page helpful?
0 / 5 - 0 ratings