# App load order **Dev note**: As of March 2022, the skin is no longer part of the app load order at all. The document's graphs have been kept untouched for posterity. Old slow flow: ![image](https://user-images.githubusercontent.com/2403652/73848963-00a2a080-4821-11ea-97d4-1200fc2638f3.png) Current more parallel flow: ![image](https://user-images.githubusercontent.com/2403652/83146440-303a2900-a0ee-11ea-806b-4f53f039b957.png)
Code


digraph G {
  node [shape=box];

subgraph cluster_0 {
color=orange;
node [style=filled];
label = "index.ts";

    entrypoint, s0, ready [shape=point];
    rageshake, config, i18n, theme, skin, olm [shape=parallelogram];
    mobile [shape=diamond, label="mobile"];
    modernizr [shape=diamond];
    redirect, incompatible [shape=egg];

    entrypoint -> rageshake;
    rageshake -> mobile [color=blue];
    mobile -> s0 [label="No"];
    mobile -> redirect [label="Yes"];

    s0 -> platform;
    s0 -> olm;
    platform -> config;

    config -> i18n [color=blue];
    config -> theme [color=blue];
    config -> skin [color=blue];

    i18n -> modernizr [color=blue];
    theme -> modernizr [color=blue];
    skin -> modernizr [color=blue];

    modernizr -> ready [label="Yes"];
    modernizr -> incompatible [label="No"];
    incompatible -> ready [label="user ignore"];

    olm -> ready [color=red];
    config -> ready [color=red];
    skin -> ready [color=red];
    theme -> ready [color=red];
    i18n -> ready [color=red];

}

subgraph cluster_1 {
color = green;
node [style=filled];
label = "init.tsx";

    ready -> loadApp;
    loadApp -> matrixchat;

}
}

Key: - Parallelogram: async/await task - Box: sync task - Diamond: conditional branch - Egg: user interaction - Blue arrow: async task is allowed to settle but allowed to fail - Red arrow: async task success is asserted Notes: - A task begins when all its dependencies (arrows going into it) are fulfilled. - The success of setting up rageshake is never asserted, element-web has a fallback path for running without IDB (and thus rageshake). - Everything is awaited to be settled before the Modernizr check, to allow it to make use of things like i18n if they are successful. Underlying dependencies: ![image](https://user-images.githubusercontent.com/2403652/73848977-08624500-4821-11ea-9830-bb0317c41086.png)