I agree with this. Outside of explicitly signaling to users that they have a saved 'draft' of the form, and having them click a button on the page to restore their filled out fields from the draft, there aren't really very many sane implementations.
Some other issues:
- doesn't work in IE
- saved data doesn't expire
- Storage keys aren't unique to the URL, so if two pages have the same exact layout, but different content, identical forms on the page will be filled out with stored information.
So it's a good concept, but I think that there are definitely some questions about user privacy, and that it needs to be paired with some extra UI cues that make it clear to the user that they're looking at draft information, and not something that's saved.
I wonder if you should have some sort of icon or text indicator (per field) that shows there is saved form data available, but don't populate until the user triggers it, or an option to restore all available form data in one click? There are situations where I want to clear a form so I'll refresh the page if a clear option isn't available. I guess the solution would be for everyone that uses garlic.js to make sure they have a clear option.
There are all sorts of use cases that might want one thing over the next (display server data vs local data for example).
Keep you API open and flexible for the UX designer to choose what's best when. Also, if it's showing local data do something simple, like give the field a class of "garlic-data". That way the UX designer can choose the best way to differentiate it for their use case.