Posted At: Sep 08, 2025 - 669 Views
Are you a Shopify merchant or developer wondering what the best practices are for 2025? Here is a guide based on my experience with several apps in production (GTOrderForm, GTAdminHub, GTLayers, GTMail Verif).
Shopify has established itself as a major SaaS e-commerce platform. Since Online Store 2.0 (now the standard), the ecosystem has settled around GraphQL APIs and a modern architecture.
The modern Shopify ecosystem
Shopify Plus and the B2B expansion: Shopify is no longer just about B2C. The arrival of Shopify Plus and native B2B features opens up new markets for app developers.
Key technical developments:
- APIs: GraphQL Admin API preferred for new development (REST is still widely supported)
- CLI: Shopify CLI available to make development easier
- Deployment: Shopify Functions and App Extensions for extensibility
- Supported languages: Node.js, PHP, Ruby, Python - all officially maintained
Types of apps
Unlike the old private/public distinction, Shopify now offers 3 types of integrations:
1. Custom apps (formerly private apps)
Use case: Specific integrations for a single merchant
- Direct access token (no OAuth)
- Ideal for ERP/CRM integrations and custom projects
- Example from my work: GTMail Verif for email validation
2. Public apps (Shopify App Store)
Use case: Reusable solutions for thousands of merchants
- OAuth 2.0 required
- Partner Dashboard interface
- Examples of my apps: GTOrderForm (order customization), GTLayers (product management)
3. Organization apps
Use case: Reusable apps within the same group of stores (agencies, franchises)
- Deployment limited to one Shopify Plus organization
- Perfect for agencies and custom app development
Modern API architecture
GraphQL Admin API (preferred)
query getProducts($first: Int!) {
products(first: $first) {
edges {
node {
id
title
variants(first: 5) {
edges {
node {
id
priceRangeV2 {
minVariantPrice {
amount
currencyCode
}
}
}
}
}
}
}
}
}
Advantages over REST:
- A single request for complex data
- Strict typing possible with type generators
- Optimized performance
Webhooks: improved event-driven architecture
Webhooks remain essential, with reliability improvements:
- Automatic retries with exponential backoff
- HMAC signature required for security
- New events related to subscriptions, markets and internationalization
Webhook implementation example:
// Exemple PHP - GTOrderForm
Route::post('/webhooks/orders/paid', function (Request $request) {
$order = $request->all();
// Traitement personnalisé de la commande
});
Technology choices for Shopify apps
Officially supported languages: Shopify maintains support for several languages, each with its own advantages:
PHP (Laravel/Symfony):
composer require shopify/shopify-api
- Mature, stable ecosystem
- Excellent database integration
- Affordable, high-performance hosting
Node.js (Express/Next.js):
npm install @shopify/shopify-api
- Feature-rich official SDK
- Native integration with React/Polaris
- Modern JavaScript ecosystem
Ruby (Rails):
gem install shopify_api
- Same language as Shopify Core
- Mature, convention-based framework
- Active community
Technical choice for this guide: The examples in this guide mainly use PHP with Laravel, a stack I know inside out and use for my production apps (GTOrderForm, GTAdminHub, GTLayers, GTMail Verif). I also have experience with Node.js for some React/Polaris-oriented projects, but Laravel remains my main specialty. The concepts presented here are easy to adapt to other languages.
Planning a modern app
Essential questions
- What specific problem are you solving?
- Example: GTOrderForm: Advanced customization of order forms
- Technical architecture:
- Embedded app (inside the admin) or standalone?
- Using Shopify Functions?
- Checkout extensions needed?
- Integration with your existing services?
- Business model:
- Freemium with usage limits?
- Monthly subscription?
- Commission on transactions?
Modern scope: feature-first development
Instead of listing features, define “Jobs to Be Done”:
Job 1: “As a merchant, I want to customize my order forms”
- Solution: GTOrderForm
- Value prop: Advanced customization with no code
Job 2: “As a merchant, I want to manage complex variants”
- Solution: GTLayers
- Value prop: A simplified interface for multi-variant products
Job 3: “As an agency, I want to centralize multi-store management”
- Solution: GTAdminHub
- Value prop: A unified dashboard for several stores
Key differences from the old ecosystem
What no longer works as well:
- Apps based solely on the REST API (GraphQL recommended)
- Non-responsive admin interfaces
- Development without modern tools
What is recommended:
- Shopify CLI as the standard tool for local development
- Polaris interface for a consistent UX
- Built-in GDPR/CCPA compliance
- Mobile-first support
My Shopify projects: lessons learned
GTOrderForm: Order form customization
- Key lesson: Admin UX matters more than the number of features
- Tech stack: PHP with Laravel
- Insight: Merchants value ease of use
GTAdminHub: Centralized management dashboard
- Key lesson: Multi-store businesses need an overview
- Innovation: Real-time cross-store data aggregation
GTLayers & GTMail Verif: Vertical solutions
- Key lesson: Better to dominate a niche than to spread yourself thin
- Strategy: Solve one specific problem very well
These apps show that the value lies in solving concrete business problems, regardless of the tech stack you choose.
Discover my work: GTOrderForm, GTLayers, GTAdminHub, and GTMail Verif
Conclusion
Shopify app development is more accessible thanks to modern tools, but more demanding in terms of quality. The mature ecosystem favors solutions that deliver real business value.
To go further:
- Discover my development services
- Need an e-commerce website redesign?
- Interested in local SEO?
- Have a project? Contact me