I like the ‘minimum viable product’ idea, i.e. release a product or feature when it’s reached a usable state and then you can refine it as and when necessary, based on user feedback. Obviously that works well with web-based apps as the changes can be rolled out without needing any input from the user, but maybe these days mobile device users are more used to frequent updates to their installed apps?
Like you, I try to hold back until I think it’s near perfect, but then code would sit in my digital vaults forever.
I tend to release when most of the core features are in place, and I’ve done a pass at bug testing as a whole.
How thorough I am depends on what type of product is being released. I tend to take a reasonably relaxed approach for site templates (try is the operative word here, though). eCommerce platforms or platforms containing personal information are held under a microscope.