<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sukhmeet Singh</title>
    <description>The latest articles on DEV Community by Sukhmeet Singh (@sukhmeet_singh).</description>
    <link>https://dev.to/sukhmeet_singh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1709008%2Ff136279e-81bc-4d52-ad35-1865b804eaf2.png</url>
      <title>DEV Community: Sukhmeet Singh</title>
      <link>https://dev.to/sukhmeet_singh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sukhmeet_singh"/>
    <language>en</language>
    <item>
      <title>Shopify App Store Submission — 14 Things I Wish I Knew Before My First Submit</title>
      <dc:creator>Sukhmeet Singh</dc:creator>
      <pubDate>Tue, 07 Jul 2026 18:01:54 +0000</pubDate>
      <link>https://dev.to/sukhmeet_singh/shopify-app-store-submission-14-things-i-wish-i-knew-before-my-first-submit-2oj6</link>
      <guid>https://dev.to/sukhmeet_singh/shopify-app-store-submission-14-things-i-wish-i-knew-before-my-first-submit-2oj6</guid>
      <description>&lt;p&gt;I just submitted multiple Shopify app .&lt;br&gt;
Here's everything I learned that the docs don't clearly tell you.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Screencast video is REQUIRED — not optional
&lt;/h2&gt;

&lt;p&gt;I assumed the demo video was a "nice to have." It's not. You literally cannot submit without a screencast URL (YouTube, Vimeo, or Loom). Plan for this before you open the listing form.&lt;/p&gt;

&lt;p&gt;Keep it 60-90 seconds: install → enable → core feature working. Upload as unlisted on YouTube.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Screenshots must be exactly 1600×900
&lt;/h2&gt;

&lt;p&gt;Not "at least 1600 wide." Not 2400×1350 (same aspect ratio). &lt;strong&gt;Exactly 1600×900 pixels.&lt;/strong&gt; I had to re-render all my screenshots after discovering this the hard way.&lt;/p&gt;

&lt;p&gt;Pro tip: if you're using Chrome to capture, set &lt;code&gt;devicePixelRatio&lt;/code&gt; to 1 — HiDPI screens will silently render at 2400×1350.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. No pricing language anywhere in images
&lt;/h2&gt;

&lt;p&gt;Shopify's automated scanner catches text in screenshots too. I had "Free forever" as a badge in one screenshot — flagged immediately. &lt;br&gt;
No "free", no "$0", no pricing references in any image. Pricing info belongs only in the pricing section.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The subtitle is a sentence, not a keyword list
&lt;/h2&gt;

&lt;p&gt;"GDPR, CCPA, Cookie Banner, Consent Mode" gets flagged as keyword stuffing. Write a value statement instead: "A consent banner that keeps your analytics working after consent."&lt;/p&gt;

&lt;h2&gt;
  
  
  5. "Never breaks" = unsubstantiated claim
&lt;/h2&gt;

&lt;p&gt;Any absolute or comparative claim gets rejected. "Never breaks your tracking", "the fastest", "guaranteed results" — all flagged. &lt;/p&gt;

&lt;p&gt;Describe the mechanism instead: "Consent is applied through Shopify's Customer Privacy API, so pixels continue working in a consent-aware way."&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Your app icon goes on the Dev Dashboard, not Partner Dashboard
&lt;/h2&gt;

&lt;p&gt;Spent 20 minutes looking for the icon upload in the Partner Dashboard. It's not there. Go to &lt;code&gt;dev.shopify.com&lt;/code&gt; → your app → settings. Must be exactly 1200×1200.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Feature Media ≠ Screenshots
&lt;/h2&gt;

&lt;p&gt;I originally uploaded the same image for both. They display adjacent in the listing — duplicating looks unprofessional. Feature Media (1 image) = hero benefit image that sells the value. Screenshots (3+) = product walkthrough showing how it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Category cannot be changed after submission
&lt;/h2&gt;

&lt;p&gt;Choose carefully. I almost picked the wrong one and would have had to create a new app to fix it.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Embedded app checks run every 2 hours
&lt;/h2&gt;

&lt;p&gt;Your submit button will be greyed out until these checks pass. They run automatically every ~2 hours. To trigger them faster: open your app on a dev store so it generates session data, then click "Run" on the checks page.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. There are hidden required fields
&lt;/h2&gt;

&lt;p&gt;Category-specific tags (e.g., "Compliance types", "Accessibility tools"), Languages, and App Capabilities checkboxes are all required but don't appear until you've selected your category. I hit these at submit time and had to go back.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. "Embedded" + "Online store" capabilities
&lt;/h2&gt;

&lt;p&gt;If your app has an admin page (App Bridge) AND a theme extension (storefront widget), you need to check BOTH "Embedded" and "Online store" in the capabilities dialog. Missed "Online store" on my first try.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Testing instructions are gold — write them clearly
&lt;/h2&gt;

&lt;p&gt;Reviewers follow your testing instructions step-by-step. A clear numbered list (install → enable → test → verify) reduces back-and-forth. &lt;br&gt;
Include specific values to enter: "Enter phone number 1415555267100" — don't make the reviewer guess.&lt;/p&gt;

&lt;h2&gt;
  
  
  13. Approval is faster than you think
&lt;/h2&gt;

&lt;p&gt;Every post online says "3-5 weeks." My first app was approved in &lt;strong&gt;3 days&lt;/strong&gt;. The second took 3 days too. Don't delay submission waiting for perfection — submit and iterate. You can update your listing after approval.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus: My pre-submission checklist
&lt;/h2&gt;

&lt;p&gt;I use this before every submission now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Icon: 1200×1200, uploaded to Dev Dashboard&lt;/li&gt;
&lt;li&gt;[ ] Screenshots: exactly 1600×900 (devicePixelRatio=1), no pricing text&lt;/li&gt;
&lt;li&gt;[ ] Feature Media: 1600×900, different from screenshot #1&lt;/li&gt;
&lt;li&gt;[ ] Screencast: uploaded to YouTube (unlisted), URL ready&lt;/li&gt;
&lt;li&gt;[ ] Listing copy: intro ≤100 chars, details ≤500 chars, features 3-5 × ≤80 chars&lt;/li&gt;
&lt;li&gt;[ ] No "free" in features/images, no absolute claims, subtitle is a sentence&lt;/li&gt;
&lt;li&gt;[ ] Category tags filled, languages selected, capabilities checked&lt;/li&gt;
&lt;li&gt;[ ] SEO fields: title tag (≤60), meta description (≤160)&lt;/li&gt;
&lt;li&gt;[ ] Privacy + Terms URLs returning 200&lt;/li&gt;
&lt;li&gt;[ ] App installed on dev store + working (triggers embedded checks)&lt;/li&gt;
&lt;li&gt;[ ] Testing instructions: clear numbered steps with specific test values&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Hope this saves someone a few hours of confusion. If you're building Shopify apps and have questions about the process, happy to share more in the comments.&lt;/p&gt;

</description>
      <category>shopify</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>indie</category>
    </item>
  </channel>
</rss>
