Early on Desktop
The 'isEarlyStartup' flag for features will write variables to prefs to ensure data is available once prefs are loaded. Nimbus uses its own internal prefs. If youre talking to Nimbus via JS you can just interact with it normally and it will read from prefs if it hasn't yet loaded its data store. Then you can use the C++ API.
You don't have to do anything special through, as long as isEarlyStartup is set it should Just Work. Assuming everything is main thread, you shouldnt have any issues.
First startup initializes Normandy and then nimbus, which will then try to grab experiments and rollouts for all features (code). This happens before we paint the first window. First startup blocks painting.
Early on Mobile