Shopify App Development & App Store Listing (UAE)

Shopify App Development and App Store Listing (UAE)

Build, test, and publish a review-ready Shopify app: Polaris UI, OAuth and billing, webhooks, GDPR, and App Store submission with reviewer notes.

Polaris-compliant UI OAuth and Billing GDPR & Uninstall hygiene Reviewer notes included
12 apps shipped
Avg. approval 14 days
100% privacy policy pass
Modern workspace showing abstract Shopify app UI mockup (no readable text)

What you get

Polaris UI with embedded Admin

Consistent spacing and typography; iframe-ready layouts.

Why it passes review

Scoped permissions, live privacy/support pages, clear data usage.

Tech and hand-off

Koa server with health endpoint, Admin API sample, GA4/GTM hooks.

Fast, review-ready Shopify app with clear milestones, real files, and bilingual support

Delivery

WHAT YOU GET

Safer, Faster, Greener.

TIMELINE

Day 0–5

Kickoff & scope

Day 6 -9

Polaris UI shell + routes

Alerts

HANDOVER & SUPPORT

Private Git repo or ZIP delivery

🔔
14-day bug-fix window post-handover
1–2h live walkthrough (recorded)
Optional monthly care plan (hotfixes, listing A/B, feature sprints)

WHAT WE NEED TO START

Shopify Partners App (Client ID)

Support email + legal entity name

Day 0–5
1. Support email + legal entity name

+ legal entity name

Day 6–9
2. Primary use-case


& success metric (5-minute first use)

Day 10–14
3. Private Git repo or ZIP delivery

Create, schedule, and publish shoppable content.

Quick Tips
Connect storeSecure OAuth via Shopify.
Sync productsChoose a collection.
Schedule postsPlan your week.
Highlights
SchedulerShoppable PostsReelsAI Captions
No products linked yet

Sync a collection to personalize recommendations.

How to create your Shopify app

Follow each step. Collapsible, clean, and review-friendly.

0 of 19 steps read

1

Golden Path — Open the page

Open the Shopify page that contains this section. The builder UI shows tabs on the left and a phone preview on the right.

Open the Shopify page that contains this section. The builder UI shows tabs on the left and a phone preview on the right.

Read our guide
2

Design tab — essentials

App title ≤ 25 chars (e.g., Vista Commerce).Purpose ≤ 2 lines.CTA text (e.g., Connect store).Brand hex: #0D384D; Accent hex: six-digit format.Optional: Blueprint preset (Commerce / Content / Loyalty).

  • App title ≤ 25 chars (e.g., Vista Commerce).
  • Purpose ≤ 2 lines.
  • CTA text (e.g., Connect store).
  • Brand hex: #0D384D; Accent hex: six-digit format.
  • Optional: Blueprint preset (Commerce / Content / Loyalty).
Read our guide
3

IA tab — structure

Name tabs to fit your product (e.g., Home, Catalog/Library, Schedule, Insights, Settings).Enable the blocks you plan to ship in v1 (Tips, Product Grid, Scheduler, KPI Tiles, Empty card).

  • Name tabs to fit your product (e.g., Home, Catalog/Library, Schedule, Insights, Settings).
  • Enable the blocks you plan to ship in v1 (Tips, Product Grid, Scheduler, KPI Tiles, Empty card).
Read our guide
4

Shopify tab — must-haves

Paste Client ID from Shopify Partners (required).Select ≥ 1 scope (min: read_products; add write_products if you mutate).Note: Application URL and Redirects are locked to vistabylara.com.

  • Paste Client ID from Shopify Partners (required).
  • Select ≥ 1 scope (min: read_products; add write_products if you mutate).
  • Note: Application URL and Redirects are locked to vistabylara.com.
Read our guide
5

Settings tab — listing data

Company: Vista by Lara.Support email: support@vistabylara.com.Privacy URL: https://vistabylara.com/privacy.Support URL: https://vistabylara.com/support.Toggle Embedded and GDPR if needed.

  • Company: Vista by Lara.
  • Support email: support@vistabylara.com.
  • Privacy URL: https://vistabylara.com/privacy.
  • Support URL: https://vistabylara.com/support.
  • Toggle Embedded and GDPR if needed.
Read our guide
6

Generate tab — build files

Open the Preview modal and review each file.Select Generate files to download.Optional: Create ZIP (server) to receive a zip link.

  • Open the Preview modal and review each file.
  • Select Generate files to download.
  • Optional: Create ZIP (server) to receive a zip link.
Read our guide
7

What each tab does — Design

Blueprint presets for Commerce/Content/Loyalty.Validation: title ≤ 25, short purpose, CTA required, hex colors.Profile: Starter (minimal Koa) or Production (OAuth-ready stubs).Live preview mapping ...

  • Blueprint presets for Commerce/Content/Loyalty.
  • Validation: title ≤ 25, short purpose, CTA required, hex colors.
  • Profile: Starter (minimal Koa) or Production (OAuth-ready stubs).
  • Live preview mapping of title/purpose/CTA/highlights/palette.
Read our guide
8

File Outputs & Exact Mapping

The builder composes files from <template> tags and replaces placeholders based on your inputs.[[APP_NAME]] → Design → App title (e.g., Vista Commerce)[[APP_HANDLE]] → Auto from title (kebab)...

The builder composes files from <template> tags and replaces placeholders based on your inputs.

  • [[APP_NAME]] → Design → App title (e.g., Vista Commerce)
  • [[APP_HANDLE]] → Auto from title (kebab) (e.g., vista-commerce)
  • [[CLIENT_ID]] → Shopify → Client ID
  • [[APP_URL]] → Locked → https://vistabylara.com/
  • [[SCOPES]] → Shopify → scopes (e.g., read_products, write_products)
  • [[COMPANY]] → Settings → Company (e.g., Vista by Lara)
  • [[SUPPORT_EMAIL]] → Settings → Support email (e.g., support@vistabylara.com)
  • [[PRIVACY_URL]] → Settings → Privacy URL (https)
  • [[SUPPORT_URL]] → Settings → Support URL (https)
  • [[PURPOSE]] → Design → Purpose
  • [[HIGHLIGHTS]] → Design → Highlights
  • [[EMBEDDED_BLOCK]] → Settings → Embedded (e.g., [embedded]\nenabled = true or blank)
  • [[GDPR_BLOCK]] → Settings → GDPR (webhook subscriptions or blank)
  • [[GDPR_ROUTES]] → Settings → GDPR (adds Koa routes or blank)
Read our guide
9

Files always produced

shopify.app.toml (with [auth], redirect_urls, access_scopes, optional [embedded], optional GDPR).env.examplepackage.json (Koa starter)server.js (Koa baseline + CSP + /health + sample /api/products ...

  • shopify.app.toml (with [auth], redirect_urls, access_scopes, optional [embedded], optional GDPR)
  • .env.example
  • package.json (Koa starter)
  • server.js (Koa baseline + CSP + /health + sample /api/products + optional GDPR routes)
  • README-commands.txt (dev commands + where to register in Partners)
  • PRIVACY.md, SUPPORT.md, LISTING.md

Extra when Profile = Production: shopify.js (API placeholders), auth.js (OAuth route placeholders), session.js (session store placeholders).

Read our guide
10

Validation Rules (hard stops)

Title empty or longer than 25 charactersClient ID emptyScopes list emptyBrand/Accent not 6-digit hex (e.g., #0D384D)Support email present but invalid formatPrivacy/Support URL present but not HTTPS...

  • Title empty or longer than 25 characters
  • Client ID empty
  • Scopes list empty
  • Brand/Accent not 6-digit hex (e.g., #0D384D)
  • Support email present but invalid format
  • Privacy/Support URL present but not HTTPS

If any fail, Preview/Generate/ZIP will refuse. Fix, then retry.

Read our guide
11

Local Autosave & Restore

Every input change writes JSON to localStorage under a key for this section.To factory reset, open console and run:localStorage.removeItem('vbl-app-builder-<YOUR_SECTION_ID>')location.reload()

Every input change writes JSON to localStorage under a key for this section.

To factory reset, open console and run:
localStorage.removeItem('vbl-app-builder-<YOUR_SECTION_ID>')
location.reload()

Read our guide
12

Dev Commands (Windows PowerShell)

From your app foldernpm i$env:SHOPIFY_FLAG_STORE="your-store.myshopify.com"npm run devWhat this does: installs deps from package.json, starts server.js (Koa) on port 3000, health at http://localhos...

From your app folder
npm i
$env:SHOPIFY_FLAG_STORE="your-store.myshopify.com"
npm run dev

What this does: installs deps from package.json, starts server.js (Koa) on port 3000, health at http://localhost:3000/health

Read our guide
13

Dev Commands (macOS / Linux)

From your app foldernpm iexport SHOPIFY_FLAG_STORE="your-store.myshopify.com"npm run devWhat this does: installs deps, starts Koa (default 3000). Health: http://localhost:3000/health

From your app folder
npm i
export SHOPIFY_FLAG_STORE="your-store.myshopify.com"
npm run dev

What this does: installs deps, starts Koa (default 3000). Health: http://localhost:3000/health

Read our guide
14

Using the Server ZIP (optional flow)

Generate → Create ZIP (server) sends a POST and returns a zip link on success.Payload includes: app_name, handle, client_id, app_url (https://vistabylara.com/), redirects (https://vistabylara.com/a...

Generate → Create ZIP (server) sends a POST and returns a zip link on success.

Payload includes: app_name, handle, client_id, app_url (https://vistabylara.com/), redirects (https://vistabylara.com/auth/callback and https://vistabylara.com/api/auth), scopes (read_products, write_products), template (koa-minimal | koa-prod), source (vbl-app-builder-pro-ultra).

On non-200, a clear error is shown in the blue box; check Network and server logs.

Read our guide
15

Quality Gate (before Generate)

Design: Title ≤ 25, CTA set, Purpose ≤ 2 lines, Highlights 3–6 items; hex valid; preview contrast good in Light/Dark.IA: Tabs match product; only necessary blocks enabled.Shopify: Client ID present...

  • Design: Title ≤ 25, CTA set, Purpose ≤ 2 lines, Highlights 3–6 items; hex valid; preview contrast good in Light/Dark.
  • IA: Tabs match product; only necessary blocks enabled.
  • Shopify: Client ID present; scopes deliberate (min read_products).
  • Settings: Reachable support email; https privacy/support URLs; decide Embedded + GDPR.
  • Generate: Preview modal checked, especially shopify.app.toml and server.js.
Read our guide
16

Troubleshooting Matrix

“App title must be ≤ 25 characters.” → Shorten.“Client ID is required.” → Paste from Partners.“Select at least one scope.” → Choose read_products at minimum.“Brand/Accent color must be a 6-digit he...

  • “App title must be ≤ 25 characters.” → Shorten.
  • “Client ID is required.” → Paste from Partners.
  • “Select at least one scope.” → Choose read_products at minimum.
  • “Brand/Accent color must be a 6-digit hex.” → Use #RRGGBB.
  • Create ZIP shows 4xx/5xx → Inspect Network; check server logs.
  • No download after Generate → Use per-file Download in Preview modal or try another browser.
  • Phone preview empty → Enable Tips or Product Grid in IA.
  • GDPR routes missing → Toggle GDPR in Settings.
Read our guide
17

Production Hardening (Profile = Production)

Keep shopify.js, auth.js, session.js in repo.Wire OAuth in auth.js; store sessions in session.js.Replace /api/products demo with real Admin API using shopify.js.Add rate-limit, input sanitization; ...

  • Keep shopify.js, auth.js, session.js in repo.
  • Wire OAuth in auth.js; store sessions in session.js.
  • Replace /api/products demo with real Admin API using shopify.js.
  • Add rate-limit, input sanitization; tighten CSP if embedding custom scripts.

Power-User Tips: Presets are idempotent; arrow keys cycle tabs; theme toggle switches preview Light/Dark.

Read our guide
18

Minimal First App (for Shopify review)

Scopes: read_products only (expand later).Embedded: enabled.GDPR: enable stubs early.Listing copy: 45–60 char title; <160 char short description.Ensure live Support and Privacy pages on vistabyl...

  • Scopes: read_products only (expand later).
  • Embedded: enabled.
  • GDPR: enable stubs early.
  • Listing copy: 45–60 char title; <160 char short description.
  • Ensure live Support and Privacy pages on vistabylara.com.
Read our guide
19

Exact Review Checklist

Title ≤ 25; Purpose/CTA/Highlights present.Brand & Accent hex valid; readable in Light/Dark.IA tabs clear; only necessary blocks enabled.Client ID set; ≥ 1 scope chosen.Company, support email, priv...

  • Title ≤ 25; Purpose/CTA/Highlights present.
  • Brand & Accent hex valid; readable in Light/Dark.
  • IA tabs clear; only necessary blocks enabled.
  • Client ID set; ≥ 1 scope chosen.
  • Company, support email, privacy/support URLs valid and https.
  • Preview checked; TOML & server.js correct.
  • ZIP (client/server) unzips cleanly.
  • npm i → npm run dev works; /health returns { ok: true }.
Read our guide

Process — How we ship

  1. Scope & UX — define value, data flows, and states.
  2. Build — Polaris screens, OAuth, billing, webhooks, logs.
  3. Hygiene — uninstall behavior, privacy/support, CSP.
  4. Review pack — permission rationale, reviewer notes.
  5. Submit & iterate — respond quickly to feedback.

Packages — Pricing

Starter

AED 9,500–18,000

  • Polaris UI (core flows)
  • OAuth and uninstall hygiene
  • Privacy and support pages
  • Review submission
Book a Strategy Call

Pro

AED 18,000–38,000

  • All Starter plus billing
  • Webhooks and logs
  • Analytics events (GA4/GTM)
  • Reviewer notes pack
Book a Strategy Call

Review-Rescue

Custom

  • Permission trim and data map
  • Uninstall and CSP fixes
  • Resubmission support
  • Response drafts
Book a Strategy Call

FAQs — App Store Listing

How long to get listed?

Typical first approval is 7 to 21 days if permissions, privacy, and uninstall or webhooks are correct.

Do you support embedded Polaris UI?

Yes. We follow Polaris spacing and typography and validate in the Admin iframe with correct CSP and allowed origins.

Can you handle OAuth, billing, and GDPR?

Yes. We wire OAuth, trial or billing flows, GDPR endpoints, and document uninstall hygiene for reviewers.