[{"data":1,"prerenderedAt":291},["ShallowReactive",2],{"blog:play-store-reviews-bug-or-noise":3,"mdc-8sutuj-key":4},{"document":4,"meta":290},{"data":5,"body":11,"toc":273},{"title":6,"description":7,"date":8,"author":9,"slug":10},"Bug, feature request or noise? Sorting Play Store reviews after a release","How to sort Google Play reviews after an app update into bugs, feature requests and noise, then compare the week before the release with the week after.","2026-11-12","Eryk, Founder, RawQuotes","play-store-reviews-bug-or-noise",{"type":12,"children":13},"root",[14,22,29,34,39,45,50,64,69,74,86,91,97,104,109,115,120,126,131,137,142,148,153,159,164,170,175,188,201,206,215,224,229,238,245,251,256,261],{"type":15,"tag":16,"props":17,"children":18},"element","p",{},[19],{"type":20,"value":21},"text","A bug review says something fails, a feature request asks for something the app never did, and noise gives you nothing to act on. To sort reviews after a release: (1) take a full week on each side, (2) read the text, not the stars, (3) label and group them, (4) compare each group's share across the two weeks.",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"why-the-stars-dont-sort-anything",[27],{"type":20,"value":28},"Why the stars don't sort anything",{"type":15,"tag":16,"props":30,"children":31},{},[32],{"type":20,"value":33},"A one-star review can be a crash report, a complaint about the price, or a request for something the person saw in another app. A five-star review can end with \"but the widget has been blank since Tuesday\". The rating says how the person felt that day; which list the review belongs on is in the text.",{"type":15,"tag":16,"props":35,"children":36},{},[37],{"type":20,"value":38},"A release makes this harder in two ways. The pile now mixes old complaints with new ones, and a bug people have reported for months reads exactly like a regression unless you know when it started. The number of reviews also changes from week to week, so a count on its own misleads: twelve bug reports out of forty reviews is a different week from twelve out of a hundred and twenty.",{"type":15,"tag":23,"props":40,"children":42},{"id":41},"the-three-labels",[43],{"type":20,"value":44},"The three labels",{"type":15,"tag":16,"props":46,"children":47},{},[48],{"type":20,"value":49},"A bug is something that fails. The app crashes, a screen stays empty, data is wrong, or a feature stopped doing what it did last week. \"Since the update\" and \"after updating\" are the strongest hints you get that the release caused it.",{"type":15,"tag":16,"props":51,"children":52},{},[53,55,62],{"type":20,"value":54},"A feature request asks for something the app has never done, and nothing in it is broken. \"Let me share a list with my family\" is one. Whether a request hides a real problem is a separate question, covered in ",{"type":15,"tag":56,"props":57,"children":59},"a",{"href":58},"\u002Fblog\u002Fcustomer-pain-vs-feature-wish",[60],{"type":20,"value":61},"telling customer pain from a feature wish",{"type":20,"value":63},".",{"type":15,"tag":16,"props":65,"children":66},{},[67],{"type":20,"value":68},"Noise has nothing you can act on: \"good app\", a single emoji, a complaint about the phone, the carrier or a different app.",{"type":15,"tag":16,"props":70,"children":71},{},[72],{"type":20,"value":73},"After a release you also get reviews like \"bring back the old week view\". They read like requests, yet nothing new is asked for: the person liked the thing you changed. Put them on the release's list, next to its bugs, because the release is why they were written.",{"type":15,"tag":16,"props":75,"children":76},{},[77],{"type":15,"tag":78,"props":79,"children":85},"img",{"alt":80,"height":81,"loading":82,"src":83,"width":84},"Diagram: sample reviews from a planner app sorted into three columns, bug, feature request and noise, each with the question that decides it, and a strip below for reviews such as \"bring back the old week view\" that go on the release's list",520,"lazy","\u002Fblog\u002Fplay-store-reviews-bug-or-noise\u002Fthree-labels.svg",800,[],{"type":15,"tag":16,"props":87,"children":88},{},[89],{"type":20,"value":90},"Noise and rare are different things. One review about a crash on one phone model may be the first report of a real bug, so keep single reports in a \"seen once\" pile and look at it again the following week.",{"type":15,"tag":23,"props":92,"children":94},{"id":93},"the-method-step-by-step",[95],{"type":20,"value":96},"The method, step by step",{"type":15,"tag":98,"props":99,"children":101},"h3",{"id":100},"_1-take-two-equal-windows",[102],{"type":20,"value":103},"1. Take two equal windows",{"type":15,"tag":16,"props":105,"children":106},{},[107],{"type":20,"value":108},"Use the last full week before the release and the first full week after it, and leave out the release week, which mixes both versions. With a staged rollout, start the second week once most of your users can have the new version, not on the day you started the rollout.",{"type":15,"tag":98,"props":110,"children":112},{"id":111},"_2-read-only-reviews-with-text",[113],{"type":20,"value":114},"2. Read only reviews with text",{"type":15,"tag":16,"props":116,"children":117},{},[118],{"type":20,"value":119},"A rating without text has nothing to sort. In the Play Console reviews export it is a row with an empty Review Text cell.",{"type":15,"tag":98,"props":121,"children":123},{"id":122},"_3-give-each-review-one-label",[124],{"type":20,"value":125},"3. Give each review one label",{"type":15,"tag":16,"props":127,"children":128},{},[129],{"type":20,"value":130},"Bug, feature request, noise, or the release's list. When a review holds two things, say a crash report and a request, file it under the one you would act on first.",{"type":15,"tag":98,"props":132,"children":134},{"id":133},"_4-group-the-bugs-in-the-reviewers-words",[135],{"type":20,"value":136},"4. Group the bugs in the reviewers' words",{"type":15,"tag":16,"props":138,"children":139},{},[140],{"type":20,"value":141},"\"Reminders don't go off with the phone locked\" is a group. \"Notifications\" is your team's word, and it will pull in reviews about other things. Name each group after what people describe.",{"type":15,"tag":98,"props":143,"children":145},{"id":144},"_5-compare-shares-not-counts",[146],{"type":20,"value":147},"5. Compare shares, not counts",{"type":15,"tag":16,"props":149,"children":150},{},[151],{"type":20,"value":152},"For each group and each week, divide its reviews by all the reviews with text that week. A group that did not exist before the release is the first place to look for a regression, and a group that grew is the second. A group that stayed level still deserves a ticket, but the release did not cause it.",{"type":15,"tag":98,"props":154,"children":156},{"id":155},"_6-read-the-reviews-behind-a-group-before-you-file-it",[157],{"type":20,"value":158},"6. Read the reviews behind a group before you file it",{"type":15,"tag":16,"props":160,"children":161},{},[162],{"type":20,"value":163},"Copy two or three of them into the ticket, word for word. They often name the device or the steps that trigger the bug, and they settle arguments about what the group means.",{"type":15,"tag":23,"props":165,"children":167},{"id":166},"doing-it-in-rawquotes",[168],{"type":20,"value":169},"Doing it in RawQuotes",{"type":15,"tag":16,"props":171,"children":172},{},[173],{"type":20,"value":174},"RawQuotes won't label a review as a bug or a request. It groups reviews that say the same thing into named insights, marks an insight as a problem or as praise when it is one, and opens each insight into the exact reviews it was counted from. Step 3 is still yours, done on short lists instead of the whole pile.",{"type":15,"tag":16,"props":176,"children":177},{},[178,180,186],{"type":20,"value":179},"Download the reviews CSV from Play Console and upload it to a project. The ",{"type":15,"tag":56,"props":181,"children":183},{"href":182},"\u002Fsources\u002Fgoogle-play",[184],{"type":20,"value":185},"Google Play preset",{"type":20,"value":187}," reads the review text and the date it was submitted, and leaves out the title, device and app version, so the split between the two weeks goes by date. Play Console writes one file per month; if the release fell near the start of a month, upload the previous month's file as well.",{"type":15,"tag":16,"props":189,"children":190},{},[191,193,199],{"type":20,"value":192},"Reviews from the iPhone version can go into the same project. There is no App Store preset and no connection to App Store Connect: you ",{"type":15,"tag":56,"props":194,"children":196},{"href":195},"\u002Fsources\u002Fapp-store-reviews",[197],{"type":20,"value":198},"paste the reviews or send them through the API",{"type":20,"value":200},". A paste carries one date for all of it, so paste each week separately; through the API, each review keeps its own date.",{"type":15,"tag":16,"props":202,"children":203},{},[204],{"type":20,"value":205},"Then switch Insights to weeks. A week there runs Monday to Sunday, so pick the first full week after the release and compare it with the last full week before it. Both weeks ended before you imported the reviews, so each one first shows how many reviews it hasn't counted yet. Recompute each week by hand, which needs Basic or Pro; on Free, only feedback from the current week and month is analyzed. After that, every insight shows its share of reviews in both weeks. One that nobody mentioned in the first week is marked New. One that grew shows how many percentage points it moved, and a problem that grows is marked red. If only one or two people mentioned an insight in the first week, it says \"Not compared\" instead of showing a share built on so few.",{"type":15,"tag":16,"props":207,"children":208},{},[209],{"type":15,"tag":78,"props":210,"children":214},{"alt":211,"height":212,"loading":82,"src":213,"width":84},"Illustration: a RawQuotes comparison of the week of Nov 2 to Nov 8 with the week of Oct 19 to Oct 25, 47 vs 41 responses, for a planner app; \"Reminders don't go off since the update\" is marked New, 9 of 47 responses and not mentioned in the earlier week; \"App takes a long time to open\" moved up 6 percentage points, from 7 of 41 to 11 of 47, with a red arrow",836,"\u002Fblog\u002Fplay-store-reviews-bug-or-noise\u002Fweek-compare.svg",[],{"type":15,"tag":16,"props":216,"children":217},{},[218],{"type":15,"tag":219,"props":220,"children":221},"em",{},[222],{"type":20,"value":223},"Illustration with example data.",{"type":15,"tag":16,"props":225,"children":226},{},[227],{"type":20,"value":228},"Open an insight and you read the reviews behind it, each with its date, so you can see whether the complaints began when the update went out.",{"type":15,"tag":16,"props":230,"children":231},{},[232],{"type":15,"tag":78,"props":233,"children":237},{"alt":234,"height":235,"loading":82,"src":236,"width":84},"Illustration: the RawQuotes insight \"Reminders don't go off since the update\", marked Problem and backed by 9 Google Play reviews, opened into three reviews quoted word for word, each with its source and date, and a link to see all 9 answers",770,"\u002Fblog\u002Fplay-store-reviews-bug-or-noise\u002Fnew-insight-quotes.svg",[],{"type":15,"tag":16,"props":239,"children":240},{},[241],{"type":15,"tag":219,"props":242,"children":243},{},[244],{"type":20,"value":223},{"type":15,"tag":23,"props":246,"children":248},{"id":247},"where-this-method-stops",[249],{"type":20,"value":250},"Where this method stops",{"type":15,"tag":16,"props":252,"children":253},{},[254],{"type":20,"value":255},"A week is often too short. In any period with fewer than ten reviews with text, across every source in the project, RawQuotes names no insight and shows the count instead. For a small app, compare the month after the release with the month before it, or read the reviews yourself.",{"type":15,"tag":16,"props":257,"children":258},{},[259],{"type":20,"value":260},"Dates also don't prove a cause. A review written after the release can come from someone still on the old version, and a server problem in the same week looks just like a regression. The people who write reviews aren't a sample of all your users either. Use the comparison to decide what to check first, and reproduce the bug on a device before you ship the fix.",{"type":15,"tag":16,"props":262,"children":263},{},[264,266,272],{"type":20,"value":265},"If you want to run this comparison on your own reviews, ",{"type":15,"tag":56,"props":267,"children":269},{"href":268},"\u002Fpricing",[270],{"type":20,"value":271},"see the plans",{"type":20,"value":63},{"title":274,"searchDepth":275,"depth":275,"links":276},"",2,[277,278,279,288,289],{"id":25,"depth":275,"text":28},{"id":41,"depth":275,"text":44},{"id":93,"depth":275,"text":96,"children":280},[281,283,284,285,286,287],{"id":100,"depth":282,"text":103},3,{"id":111,"depth":282,"text":114},{"id":122,"depth":282,"text":125},{"id":133,"depth":282,"text":136},{"id":144,"depth":282,"text":147},{"id":155,"depth":282,"text":158},{"id":166,"depth":275,"text":169},{"id":247,"depth":275,"text":250},{"title":6,"description":7,"date":8,"author":9,"slug":10},1794512559777]