Overview
In this tutorial, you’ll create a checkout extension that displays estimated delivery dates based on the customer’s shipping address.What You’ll Build
A checkout extension that:- Shows a delivery estimate banner
- Updates based on shipping address
- Uses Shopify UI components
- Follows best practices
Step 1: Write Your Prompt
Go to your Synapse dashboard and enter this prompt:Step 2: Review Generated Code
Synapse will generate TypeScript/React code like this:Step 3: Validation
Synapse automatically validates your code:Component Validation
Component Validation
✅ All Shopify UI components exist and are imported correctly
Hook Usage
Hook Usage
✅ React hooks are used properly (no conditional calls)
GraphQL Queries
GraphQL Queries
✅ Any GraphQL queries match Shopify’s schema
TypeScript
TypeScript
✅ Type safety and proper imports
Step 4: Self-Correction
If validation finds issues, Synapse automatically fixes them: Example Issue Found:- ✅ Fixed in attempt 1
- Validation score: 95/100
Step 5: Deployment
Click “Deploy” and Synapse will:- Push to GitHub: Code is committed to your repository
- Create Fly.io Service: Container is built automatically
- Run Shopify CLI: Extension is deployed to your dev store
- Auto-Release: Latest version is released
Step 6: Test in Checkout
- Go to your Shopify dev store admin
- Navigate to Settings → Checkout
- Click Customize
- Add your “Delivery Estimate” extension from the sidebar
- Click Save
- Add a product to cart
- Go to checkout
- Enter different shipping addresses (US vs international)
- See the delivery estimate update automatically
Next Steps
Customize Styling
Learn about Shopify’s design system
Add Settings
Make your extension configurable
Build Functions
Create discount or shipping functions
Deploy to Production
Launch on real stores
Common Variations
Add a Countdown Timer
Show Shipping Method Impact
Troubleshooting
Extension not showing in checkout
Extension not showing in checkout
Make sure you’ve added it in the checkout editor at Settings → Checkout → Customize
Delivery estimate not updating
Delivery estimate not updating
Check that
useShippingAddress() is imported from the correct package and the address object has a countryCodeBanner styling looks wrong
Banner styling looks wrong