How do you collect bug details from users/clients?

"Feature X doesn't work. Please fix!". As makers/creators, you probably know this sentence, right? If you're lucky you get a screenshot, ... that shows nothing.

How do you get the details that you need in order to understand the issue and fix it (in case it is actually a bug)?

- Tools for log management/analysis? (e.g. Loggly, ...)
- Tools for contextual bug insights? (e.g. Instabug, ...)
- Written communication? (e.g. eMail, GitHub issues, Jira, ...) 
- Custom solution?
- Nothing? (In this case: Why?)

I usually have some kind of logging service (ex. Rollbar) and then try to log time and all errors to it. If I find a bug via the logs, which usually don't happen, I write it as a trello ticket and finish it later or perhaps I fix it immediately when it is fresh in the mind.

The key reason as you may know is just to be able to reproduce the error locally. So what you probably want to do is make your local dev environment as similar as the production environment as possible.

Some people like to use Docker for this reason, but I don't really like Docker that much and just setup everything manually on my local dev machine to be as similar to prod as possible. That way, you can ususally reproduce the issue quite quickly. I use a clone script to clone the production database so that I can have the same state on my local machine.

I have worked as a dev for about 10 years now and I don't think there really is any better way to do it than to reproduce the issue yourself and fix it. Usually reproducing the issue is what takes the most time.

Thanks, Markus. But I was more looking from a client's perspective on that question.

For me as a dev, I'm doing exactly what you're saying. The dev env is similar to the prod env as much as possible. Without Docker ;)

But even if both envs are the same, there are bugs that just cannot be reproduced on the dev env. So let's assume a client reaches out to you with such a problem. What tools do you use to tackle that problem? (see list I mentioned in my question)

Sorry for misunderstanding you. I use spoken or written language as my tool of choice. :D

Usually, I ask for what time the user had this issue and see if the error is displayed in my logs and then try to replicate it. Or I ask the user to provide a screenshot if possible, what device, os etc the user runs my application on.

After the intel gathering, it is manual labor of investigating and trying to replicate the issue.

That's exactly how I did it for quite a while when I was still developing mobile apps for mobiles (good old Windows Phone days :D). Later I switched to some kind of one button solution that (when clicked by the user) packaged up everything (logs, system info, ...) and send that package via eMail.

For the last two years I worked more on web apps where I always felt like something similar is missing.

Think of a feedback button. When selected by the user, he is able to briefly describe his issue. In addition he should be able to directly capture screen casts and screen shots, or add any arbitrary file that could help me to solve the problem faster. Logs and basic browser info is attached automatically. So I as a dev would receive such package that contains all the info that I need to solve that problem.

Sounds like a great idea, but does that store recent errors somehow?

Currently, it catches errors (reported by console.err) of the same browser session. I'm working on capturing those even when you refresh the page (console lost usually).

I will also use the general error event listener for web sites to make sure that every single error is catched.

For Thundercontent, I use a custom solution ( +

Hi Paul, thanks for the answer. How do you get logs in case of issues on customer side? (Or does allow you to get those somehow?)

Most of the time users send me a message with Crisp, and then I take note :)