Imagine if every time you swiped a credit card and it didn't work for whatever reason, the money was just lost. I think you would get angry pretty quick. I certainly would.
So why are we accepting applications where user input is dropped on the floor when there's a network problem. Drastic analogy with the money? Maybe. But when you type a paragraph or two into a tiny little phone, press send, and see "Request failed" with your hard-thought words abandoned I bet you get pretty angry.
I'm looking at you every Reddit app ever...
I don't care how you do it. I don't care what library you use. User input is gold. Treat it as such.
Square has Tape. Path has a priority job queue. The support library has AtomicFile. The OS has SharedPreferences and sqlite. Do it on the main thread for all I care. Just persist the damn data somewhere.
The state of affairs is so absolutely terrible that I actually don't even care if you persist it. Just pop the original dialog or text field with my data still in tact so that I can retry. Sure you look like a mediocre app, but at least you're not an abysmal app that hates its users. At this point, I'm happy to do your job and retry the request myself.
Publicly shame apps that discard user input.