My app has been approved after two rejections! This is I've learned
It has been a hard period. March 30th I sent my app for review for the first time. After a entire month, on April 30th, it was rejected due to a bug in the app. On the same day, I fixed it and resubmitted it for review. On May 7th, my app was rejected again due to a bug I introduced when fixing the previous issue. Two days later, I submitted it for review for the third time, and on May 11th, it was finally approved!
The chronology:
- March 25 -> First time submission
- April 30 -> App rejected
- April 30 -> Second time submission
- May 7 -> App rejected for second time
- May 9 -> Third time submission
- May 11 -> App approved!
What I've learned and tips:
- The first rejection was caused due to a runtime mismatch. My code used the Web Fetch API static helper Response.json(...) in Remix loaders/actions. That worked under
shopify app devenvironment because dev was running on my local Node runtime, which supports Response.json. But production was running on Node 18. In that production runtime, Response.json was not available, so affected routes crashed when trying to return JSON.
So, caution with the diff between your local and production enviroment.
- The second rejection was caused by a false positive. Shopify’s MCP review suggested there might be a problem with the embedded install flow, so I tried to fix it by manually adding the App Bridge CDN script at the Remix root level, while the app was already using Shopify’s Remix
AppProviderinside the embedded app route. This created a mismatch with the expected Shopify Remix auth flow, and the app silently crashed. This second rejection was partly my fault too, because I wanted to send it back for review quickly and didn’t do a proper round of testing before resubmitting it. - The best tip I can give you is probably to keep things as simple as possible to get through the review. Submit the most simple and functional version you can. Once it passes, then you can start adding all the improvements and extra complexity you want.
Now it’s time for me to start with the hard part, product distribution. I’ll keep you guys updated!