Fiber reactive dyes attach permanently to cellulose fibers using a covalent (electron-sharing) bond. These molecules carry a "chromophore" which absorb varying spectrums of the light, allowing only certain spectrums to reflect.
Covalent bonding is the one of the most basic and strongest types of chemical reactions. This reaction happens gradually over time depending on temperature and/or the Ph level of the surrounding environment. Higher pH speeds the reaction, as does heat. But with the cooler water Procion type dyes, too much heat can cause the colors to actually not bond. Procion type Fiber Reactive dye prefers lukewarm temps for dye baths (tub dyeing), around 105º F, and no less than 70º F for tie-dye and dye painting where you are able to "cure" it longer.
Soda Ash (Sodium Carbonate) raises the pH level of the dye bath, or in the case of tie-dyeing, the garment or fabric when pre-soaking, to approximately 10.5. Raising the pH level of the solution that the fabric or garment is soaked in raises the level of negative hydrogen ions in the dyeing environment. The chemical bonding process uses these ions in the reaction. Pre-soaking in Soda Ash fixer solution is what allows the fiber reactive dyes to work at room temperature for tie-dye and dye painting.
Temperature matters! The reaction can actually be aided with heat. Some tie-dyers have had success with using baking soda (sodium bicarbonate) and microwaving their dyed articles. Since baking soda is a weaker alkali than Soda Ash, it must be accompanied by heat. Some people who are "chemically sensitive" or don't want to work with the caustic soda ash choose to use this method. Also some folks paint silk with baking soda, and microwave or steam, since Soda Ash is too strong for silk and can cause silk to break down, so it is less shiny, or even "rots" with too strong or long of an exposure. In the winter time, tie-dyers will get weaker results if they are curing their tie-dyes in cold basements or garages where it is less than 70ºF. Conversely, if you use too hot of water, the dye will go "bad" quickly because it will then hydrolyze (see below) with the water and not be available to react with the fabric.
Water matters! The dye is allowed to react in a desirable moist environment for up to 24 hours for tie-dye. When tub dyeing in warmer 105º, where the fabric is swimming in lots more water and you have salt in the dye bath (see below), it only takes 30 to 60 minutes, depending on the depth of shade required. After this time, the bonding sites on the cellulose should be saturated with dye molecules. Excess dye molecules that have not bonded permanently are washed away using heavy rinsing and a final wash in HOT water and a dye-carrying detergent like Synthrapol or Professional Textile Detergent.
Salt (plain, not iodized!) is also necessary when tub dyeing, where the fabric is swimming freely in water, and the dye used is way less concentrated than with tie-dye or other methods of direct application. That is because the dye has a weak magnetic attraction to water, and can form a weak magnetic bond with the opposite charge of the water molecules. (This is called hydrolyzing. This is also why dye mixed with water goes "bad" - the dye reacts with the water and becomes unavailable to the fabric.) The salt has a much stronger magnetic attraction to the water, so the salt molecules "hold hands" with the water molecules, forcing the dye to go over to the fabric molecules, where it can chemically react if the bath is alkaline enough from the soda ash. Also, a little bit of salt, plus refrigeration (don't forget to label so no one drinks it!) helps solutions of dye mixed up for tie-dye or dye painting last a little bit longer. But hydrolyzing is the reason the dye solutions go bad quickly - try to use up your dye for tie-dye and dye painting within a couple of days if possible, or by a week at most. The solution gets gradually weaker and weaker as time goes by. It will always look good going on, then more and more will wash out at the end, the older the dye solution is.
Calsolene oil is used in tub dyeing, especially when trying to dye larger numbers of items or for tightly woven fabrics, because it is a spreading agent. It helps the dye distribute through the fabric more evenly, so you get even or "level" color, rather than blotchy color. (Other things cause blotchy color too, like not enough water in the dye bath for the fabric to swim freely, or not pre-washing or "scouring" fabric before dyeing.) Calsolene oil is also often added in small amounts to concentrated dye solutions for tie-dye and dye painting to get the dye to spread more, for example, to have less white left when tie-dyeing. To get the dye to spread less, you do the opposite, you add a thickener like Superclear or a tiny amount of Sodium Alginate to the dye solution.
Urea is used with tie-dye and dye painting techniques for two reasons - first, for those methods you are adding a lot of dye to a little water, trying to get a very concentrated solution. Urea helps dissolve more dye in a small amount of water. For the darker colors where you need to use more dye to get the colors darker, or colors that are harder to dissolve, it is even more important. Second, urea is what is called a humectant - it helps keep the fabric wet longer, so in hot or very dry climates, it helps, because if the tie-dyed or dye painted fabric dries out too quickly, the chemical reaction of dye to fabric stops dead, and more dye will wash out, and colors will be faded.
Water Softener, Sodium Hexametaphosphate, is very helpful if you have hard water. Hard water has calcium and other minerals that can interfere with dye and cause dull colors to result. it can be added to the dye bath, or to the dye solutions for direct application.
One last thing for folks doing the tub dyeing to dye things one solid color -