To make it stable, taking FPS into account is important
That's the wrong solution, and uses an extremely coarse measurement anyway. You probably should use something like requestIdleCallback instead. Besides in the C3 runtime layout loading is now asynchronous so may not jank the game any more while loading. Also the whole idea of preloading an entire other layout will spike the memory usage high, significantly increasing the risk of out-of-memory crashes... it kind of defeats the point of the layout-by-layout memory management that aims to keep peak memory usage low.
I'm not sure why this needs to have anything to do with loadingprogress either - why not just give the plugin its own expression? The more you hack in to the runtime code, the more brittle it is in the face of future changes. The best architecture is to keep as much code as possible entirely independent of the runtime.