We're still working out the exact process, but apps return a dictionary when they are put to 'sleep' to allow them to return to a previous state. The app state is stored in RAM currently, but could also be saved to disk. They can request that certain hardware is available for when they are woken, and they can request to be woken up at a certain frequency.
We can for example put the ESP32 into a light sleep for some time [1] and keep networking alive if apps require it. The idea is to just stretch the battery to the length of a day, shutting down the display gets a lot of the way already.
If you freeze them to save the battery, how do you handle unfreezing?