Filesystem Permission Error - Checkout UI Extension Development
Hi, I'm trying to build a Thank You page extension for my app following the Shopify docs. The AI assistant has tried to fix a persistent filesystem error without success. I'm not a developer, so I'm still learning about the platform and Shopify’s requirements, so I asked the AI to summarize the problem. ISSUE SUMMARY:
EACCES: permission denied, mkdir '/gadget/app/extensions/my-extension/dist'
Shopify CLI fails to create the dist/ build folder for Checkout UI Extension (purchase.thank-you.block.render) when running yarn shopify:dev in Gadget cloud environment.
\ud83c\udfd7️ ENVIRONMENT:
Platform: Gadget Cloud Development Environment
Extension Type: checkout_ui_extension
Target: purchase.thank-you.block.render
Command: yarn shopify:dev (Shopify CLI in Gadget terminal)
\ud83d\udcdd EXTENSION CONFIGURATION:
toml
api_version = "2024-10"
name = "my-checkout-extension"
handle = "my-checkout-extension"
type = "checkout_ui_extension"
output_dir = "/tmp/my-extension-dist" # Attempted fix
[[targeting]]
target = "purchase.thank-you.block.render"
[capabilities]
network_access = true
api_access = true
\ud83d\udd0d BEHAVIOR COMPARISON:
✅ Theme Extension: Compiles successfully, no filesystem issues
❌ Checkout UI Extension: Cannot create dist/ folder
\ud83d\udd27 ATTEMPTED SOLUTIONS (ALL FAILED):
Manual directory creation:
bash
mkdir dist
Result: Permission denied
Temporary directory + symlink:
bash
mkdir -p /tmp/my-extension-dist
ln -sfn /tmp/my-extension-dist dist
Result: ln: failed to create symbolic link 'dist': Permission denied
TOML output_dir configuration:
toml
output_dir = "/tmp/my-extension-dist"
Result: Shopify CLI ignores this setting and still attempts to create local dist/ folder
8 Replies
ERROR LOG:
00:52:12 │ my-checkout-extension │ EACCES: permission denied, mkdir
'/gadget/app/extensions/my-checkout-extension/dist'
❓ QUESTIONS for support:
Are there specific filesystem restrictions for checkout_ui_extension types in Gadget cloud environment?
Why do Theme Extensions work but Checkout UI extensions fail?
Is there a Gadget-specific configuration to handle Shopify CLI build output for checkout extensions?
Should we develop this extension locally using ggt dev instead of cloud terminal?
\ud83c\udfaf GOAL:
Enable Checkout UI Extension development in Gadget cloud environment for purchase.thank-you.block.render target.
Hello,
This is because the Gadget terminal doesn't have permission to write to the application. You will need to run shopify app dev locally until we've had a chance to address security concerns we have with allowing the terminal to write to the app
Ok, thanks. But when developing the Thank You Page extension locally with shopify app dev, will the extension automatically sync back to the Gadget cloud environment, or will I need to take additional steps to deploy the built extension to the cloud app?; also do you know approximately when those security concerns will be solved?, I mean should I wait until then?
If you're running ggt dev locally, your code will be in the app. Note that deployments of extensions is not done by Gadget but instead needs to be done using the Shopify CLI since Shopify hosts extensions
We don't have an ETA for the terminal functionality at this time
So Just to confirm, those extension files will also sync back to the Gadget cloud editor automatically? And the AI can continue editing them in the cloud afterward?
Yes, ggt dev is a command the syncs the code between your local machine and the cloud environment. If that's running, any changes that are made locally will also be reflected in the cloud env
Great, Thank you
No problem!