Overview
Checkout extensions let you add custom UI components to the checkout process. Display delivery estimates, upsells, custom fields, payment options, and more.Extension Points
Checkout extensions can appear in multiple locations:Delivery
purchase.checkout.delivery-address.render-afterShow shipping estimates, delivery dates, or custom shipping options
Payment
purchase.checkout.payment-method-list.render-afterAdd payment instructions, installment options, or trust badges
Cart Line
purchase.checkout.cart-line-item.render-afterDisplay product details, warranties, or customization options
Block
purchase.checkout.block.renderFull-width custom content anywhere in checkout
Example: Delivery Estimate
Generate a checkout extension that shows delivery estimates:1
Describe Your Extension
2
Review Generated Code
Synapse generates a complete extension with:
- React component with Shopify UI components
- GraphQL queries for shipping address
- Date calculation logic
- Proper styling and icons
3
Validate & Deploy
- MCP validation ensures all APIs are correct
- Automatic deployment to your dev store
- Available in checkout editor immediately
4
Configure in Checkout
- Go to Settings → Checkout → Customize
- Find your extension in the left sidebar
- Drag to desired location
- Configure settings and save
Generated Extension Structure
Main Component
Common Checkout Patterns
- Delivery Estimate
- Upsell
- Custom Field
- Trust Badge
Use Case: Show when items will arriveTarget:
purchase.checkout.delivery-address.render-afterFeatures:- Calculate based on address
- Show date range
- Handle holidays/weekends
- Display transit time
Available UI Components
Synapse generates code using Shopify’s UI components:Layout Components
Layout Components
<BlockStack>- Vertical layout<InlineLayout>- Horizontal layout<Grid>- Grid layout<Divider>- Section dividers<View>- Generic container
Content Components
Content Components
<Text>- Styled text<Heading>- Section headings<Image>- Product/brand images<Icon>- Built-in icons<Banner>- Info/warning messages
Form Components
Form Components
<TextField>- Text input<Checkbox>- Checkboxes<Select>- Dropdowns<Button>- Action buttons<Form>- Form container
Data Hooks
Data Hooks
useShippingAddress()- Get shipping infouseCartLines()- Access cart itemsuseApplyMetafieldsChange()- Save datauseApplyCartLinesChange()- Modify cartuseSettings()- Extension settings
Best Practices
Performance
- Minimize Re-renders: Use React.memo for expensive components
- Lazy Load: Don’t fetch data until needed
- Cache Results: Store calculated values
- Small Bundle: Keep dependencies minimal
UX Guidelines
- Clear Messaging: Be explicit about what you’re showing
- Mobile-First: Checkout is 70%+ mobile
- Loading States: Show skeleton loaders
- Error Handling: Gracefully handle failures
Validation
Synapse ensures your extension:- ✅ Uses valid extension targets
- ✅ Only calls allowed APIs
- ✅ Follows Shopify’s UI guidelines
- ✅ Has proper error handling
- ✅ Includes TypeScript types
Advanced Features
Metafields
Store custom data on orders:
Cart Modifications
Add/remove items programmatically:
Conditional Display
Show/hide based on conditions:
Settings
Make extensions configurable:
Example Prompts
Get started with these prompts:Free Shipping Progress Bar
Free Shipping Progress Bar
Product Protection Offer
Product Protection Offer
Personalization Field
Personalization Field
Sustainable Shipping Option
Sustainable Shipping Option
Testing Your Extension
1
Local Testing
Extensions deploy automatically, but you can test locally:
2
Preview in Checkout
- Open your dev store
- Add items to cart
- Go to checkout
- See your extension in action
3
Test Different Scenarios
- Empty cart
- Single item vs multiple items
- Different shipping addresses
- Various cart totals
- Mobile vs desktop
4
Validate Behavior
- Data saves correctly
- Loading states work
- Errors are handled
- Performance is good
Troubleshooting
Extension Not Showing
Extension Not Showing
Causes:
- Not added to checkout editor
- Extension target doesn’t match checkout flow
- Conditional logic hiding it
- Check Settings → Checkout → Customize
- Verify extension target in shopify.extension.toml
- Review conditional rendering logic
- Check browser console for errors
Data Not Saving
Data Not Saving
Causes:
- Metafield namespace/key conflicts
- Missing permissions
- Validation errors
- Use unique namespace (e.g., “custom”)
- Check metafield definitions
- Review error messages in console
- Verify applyMetafieldsChange syntax
Styling Issues
Styling Issues
Causes:
- Custom CSS not supported
- Component props incorrect
- Theme conflicts
- Use Shopify UI component props only
- Check component documentation
- Test in different themes
- Avoid custom CSS