Thankfully we haven’t deployed them yet - they are sitting ready to go next week after the firmware is made more robust.
At this stage - we were getting 25% failure rates on flash attempts. A lot of the time the devices said they were online, but were not. I suspected it was a issue with the connection keep alive time - but a whole lot of testing seemed to identify it wasn’t.
We have now put in more watchdog timers and I have noticed that at times I can still run a function… yet not be able to flash… So I have created a system.reset() function which lets us do the restart OTA which enables a flash. That seems to work 99% of the time - but we are still testing away to make sure.
Edit: I sometimes suspect a few of our functions (even with their delays or timers built in) when doing Particle.publish must clip the publish rate and maybe get blocked… but I don’t have a way to tell when a device of mine is blocked. Maybe that would be a great idea for the Particle dashboard to show when devices are blocked? At least would help with customer troubleshooting. We are lucky at the moment, I use a dashboard provided by Telstra (our local 4G provider) that lets us run a connection attempt all the way to the device at the network level to see if it is talking over TCP which helps identify if the device is at least powered on okay.