Overview
Shopify has quality standards for extensions that appear in the Shopify App Store. Synapse generates code that follows these standards automatically.Quality Requirements
Performance
Fast loading and responsive
- Load in under 500ms
- No blocking operations
- Optimized bundle size
- Efficient re-renders
Accessibility
Usable by everyone
- Keyboard navigation
- Screen reader support
- Sufficient color contrast
- Clear focus states
User Experience
Intuitive and helpful
- Clear messaging
- Proper error handling
- Loading states
- Mobile-optimized
Security
Safe and compliant
- Data validation
- Secure API calls
- No sensitive data exposure
- GDPR compliant
Shopify’s Extension Guidelines
1. Performance Standards
Extensions must meet these performance benchmarks:| Metric | Requirement | Best Practice |
|---|---|---|
| Initial Load | < 500ms | < 300ms |
| Bundle Size | < 50KB | < 30KB |
| Time to Interactive | < 1s | < 500ms |
| Memory Usage | < 5MB | < 3MB |
- What Synapse Does
- What You Should Avoid
✅ Generates minimal, optimized code✅ Only imports used components✅ Avoids unnecessary dependencies✅ Uses React.memo for expensive renders✅ Lazy loads non-critical features
2. Accessibility (A11y)
Extensions must be accessible to all users:Keyboard Navigation
Keyboard Navigation
Screen Readers
Screen Readers
Content must be readable by screen readers:Requirements:
- Label all form inputs
- Describe icons and images
- Use semantic HTML
- Announce dynamic changes
Color Contrast
Color Contrast
Text must have sufficient contrast:
Synapse automatically:
| Element | Min Contrast | WCAG Level |
|---|---|---|
| Body text | 4.5:1 | AA |
| Large text | 3:1 | AA |
| UI components | 3:1 | AA |
- Uses Shopify UI components (compliant by default)
- Avoids custom colors
- Tests contrast ratios
Focus States
Focus States
Interactive elements must show focus:Requirements:
- Visible focus indicator
- Consistent across extension
- Not removed with CSS
3. User Experience
1
Clear Messaging
Tell users what your extension does:
- Use plain language
- Be specific
- Set expectations
2
Loading States
Show when processing:
- Use skeleton loaders
- Show progress bars
- Don’t block interaction
3
Error Handling
Handle failures gracefully:
- Explain what went wrong
- Offer solutions
- Allow retry
4
Mobile Optimization
70%+ of checkout is mobile:
- Touch targets ≥ 44×44px
- Readable text (≥ 16px)
- No horizontal scroll
- Thumb-friendly layout
4. Security & Privacy
Data Validation
Validate all inputs:
Secure API Calls
Use HTTPS and authentication:
No Sensitive Data
Don’t log or expose:
- Credit card numbers
- Passwords
- API keys
- Personal information
GDPR Compliance
Respect privacy:
- Get consent for data collection
- Allow data deletion
- Provide privacy policy
- Honor do-not-track
Code Quality Standards
TypeScript
All extensions must use TypeScript:Error Boundaries
Catch and handle errors:Testing
Include tests for critical logic:Validation Process
Synapse validates extensions before deployment:1
Static Analysis
Checks code quality:
- TypeScript compilation
- ESLint rules
- Import validation
- Bundle size
2
API Validation
Verifies Shopify APIs:
- Valid extension targets
- Allowed components
- Correct GraphQL queries
- Proper hooks usage
3
Runtime Testing
Tests execution:
- Loads without errors
- Handles edge cases
- Performance benchmarks
- Memory leaks
4
Accessibility Audit
Checks A11y compliance:
- Keyboard navigation
- Screen reader support
- Color contrast
- Focus management
Common Violations
Issues Synapse prevents:Using Unsupported APIs
Using Unsupported APIs
❌ Problem: Calling APIs not in Shopify’s allowlist✅ Solution: Synapse only generates code using approved APIs
Missing Error Handling
Missing Error Handling
❌ Problem: Unhandled promise rejections✅ Solution: Synapse wraps API calls in error handlers
Performance Issues
Performance Issues
❌ Problem: Large bundles, blocking operations✅ Solution: Synapse optimizes dependencies and code
Accessibility Failures
Accessibility Failures
❌ Problem: Missing labels, poor contrast✅ Solution: Synapse uses semantic components
App Store Requirements
If publishing to Shopify App Store:Listing Requirements
- Clear Description: Explain what your extension does
- Screenshots: Show extension in action (3-5 images)
- Privacy Policy: Link to privacy policy
- Support Contact: Email or support URL
Technical Requirements
- GDPR Compliance: Handle user data properly
- Error Handling: Graceful failures
- Documentation: User guide and setup instructions
- Localization: Support multiple languages (if applicable)
Review Process
- Automated Testing: Shopify runs automated checks
- Manual Review: Human reviewers test functionality
- Approval: App is approved or feedback is provided
- Publication: Live in App Store
Best Practices Checklist
Before deploying extensions:- Loads in under 500ms
- Bundle size under 50KB
- All inputs are validated
- Error states are handled
- Loading states are shown
- Keyboard accessible
- Screen reader compatible
- Sufficient color contrast
- Works on mobile devices
- No console errors
- No memory leaks
- Tests pass
- TypeScript types complete
- Documentation added