You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Searched existing issues to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
In which of these areas are you experiencing a problem?
App
Expected behavior
I should be able to run my app. However, upon trying to run it I get an error.
Actual behavior
I just received this error when updating to the latest CLI version 3.75.0. This looks like this is because I have 5 admin links in my app. None of my handles are named "t:name." I have put a sample .toml file below. Looks like it is now using the name instead of the handle as a unique identifier.
[[extensions]]
name = "t:name"
handle = "admin-link-draft-index"
type = "admin_link"
Verbose output
Verbose output
2025-02-11T14:45:21.746Z: Running command app dev
2025-02-11T14:45:21.752Z: Notifications to show: 0
2025-02-11T14:45:21.762Z: Reading cached app information for directory D:/Development/Repos/...
2025-02-11T14:45:21.763Z: Reading the content of file at shopify.app.toml...
2025-02-11T14:45:21.765Z: Reading the content of file at shopify.app.toml...
2025-02-11T14:45:21.767Z: Ensuring that the user is authenticated with the Partners API with the following scopes:
[]
2025-02-11T14:45:21.767Z: Getting session store...
2025-02-11T14:45:21.768Z: Validating existing session against the scopes:
[
"openid",
"https://api.shopify.com/auth/shop.admin.graphql",
"https://api.shopify.com/auth/shop.admin.themes",
"https://api.shopify.com/auth/partners.collaborator-relationships.readonly",
"https://api.shopify.com/auth/shop.storefront-renderer.devtools",
"https://api.shopify.com/auth/partners.app.cli.access",
"https://api.shopify.com/auth/destinations.readonly",
"https://api.shopify.com/auth/organization.store-management",
"https://api.shopify.com/auth/organization.apps.manage"
]
For applications:
{
"partnersApi": {
"scopes": []
}
}
2025-02-11T14:45:21.769Z: - Token validation -> It's expired: false
2025-02-11T14:45:21.769Z: Sending Identity Introspection request to URL: https://accounts.shopify.com/oauth/introspection
2025-02-11T14:45:21.770Z: Sending POST request to URL https://accounts.shopify.com/oauth/introspection
With request headers:
- User-Agent: Shopify CLI; v=3.75.0
- Keep-Alive: timeout=30
- Sec-CH-UA-PLATFORM: win32
- Content-Type: application/json
2025-02-11T14:45:21.949Z: Request to https://accounts.shopify.com/oauth/introspection completed in 179 ms
With response headers:
- cache-control: no-cache, no-store, private, must-revalidate, max-age=0
- content-type: application/json; charset=utf-8
- etag: W/"27747a2c4721bf351985e10bf27ac48c"
- server-timing: processing;dur=33, socket_queue;dur=0.898, edge;dur=1.019, util;dur=0.2, cfRequestDuration;dur=126.999855
- x-request-id: db2c4af5-9c67-448e-800d-cb368ca28a91-1739285123
2025-02-11T14:45:21.951Z: The identity token is valid: true
2025-02-11T14:45:21.952Z: - Token validation -> It's invalid in identity: false
2025-02-11T14:45:21.952Z: Getting partner account info from cache
2025-02-11T14:45:21.987Z: Sending "Partners" GraphQL request:
query FindApp($apiKey: String!) {
app(apiKey: $apiKey) {
id
title
apiKey
organizationId
apiSecretKeys {
secret
}
appType
grantedScopes
applicationUrl
redirectUrlWhitelist
requestedAccessScopes
webhookApiVersion
embedded
posEmbedded
preferencesUrl
gdprWebhooks {
customerDeletionUrl
customerDataRequestUrl
shopDeletionUrl
}
appProxy {
subPath
subPathPrefix
url
}
developmentStorePreviewEnabled
disabledFlags
}
}
With variables:
{
"apiKey": "*****"
}
With request headers:
- User-Agent: Shopify CLI; v=3.75.0
- Keep-Alive: timeout=30
- Sec-CH-UA-PLATFORM: win32
- Content-Type: application/json
to https://partners.shopify.com/api/cli/graphql
2025-02-11T14:45:22.710Z: Request to https://partners.shopify.com/api/cli/graphql completed in 723 ms
With response headers:
- cache-control: max-age=0, private, must-revalidate
- content-type: application/json; charset=utf-8
- etag: W/"5db4ee5de008e8bde6a8eb69652fe0ab"
- server-timing: processing;dur=569, socket_queue;dur=2.054, util;dur=0.5, cfRequestDuration;dur=648.999929
- x-request-id: 2be4003d-ab92-40d2-ae80-99e547b1c25e-1739285124
2025-02-11T14:45:22.759Z: Sending "Partners" GraphQL request:
query FindOrganization($id: ID!) {
organizations(id: $id, first: 1) {
nodes {
id
businessName
}
}
}
With variables:
{
"id": "***"
}
With request headers:
- User-Agent: Shopify CLI; v=3.75.0
- Keep-Alive: timeout=30
- Sec-CH-UA-PLATFORM: win32
- Content-Type: application/json
to https://partners.shopify.com/api/cli/graphql
2025-02-11T14:45:22.977Z: Request to https://partners.shopify.com/api/cli/graphql completed in 217 ms
With response headers:
- cache-control: max-age=0, private, must-revalidate
- content-type: application/json; charset=utf-8
- etag: W/"112e19e8439823e2552eb67bee997bbe"
- server-timing: processing;dur=73, socket_queue;dur=2.076, util;dur=0.5, cfRequestDuration;dur=194.000006
- x-request-id: 71daa19c-c221-4593-98df-8db9b68c9a61-1739285124
2025-02-11T14:45:23.022Z: Sending "Partners" GraphQL request:
query fetchSpecifications($api_key: String!) {
extensionSpecifications(apiKey: $api_key) {
name
externalName
externalIdentifier
identifier
gated
experience
options {
managementExperience
registrationLimit
}
features {
argo {
surface
}
}
validationSchema {
jsonSchema
}
}
}
With variables:
{
"api_key": "***"
}
With request headers:
- User-Agent: Shopify CLI; v=3.75.0
- Keep-Alive: timeout=30
- Sec-CH-UA-PLATFORM: win32
- Content-Type: application/json
to https://partners.shopify.com/api/cli/graphql
2025-02-11T14:45:23.204Z: Request to https://partners.shopify.com/api/cli/graphql completed in 182 ms
With response headers:
- cache-control: max-age=0, private, must-revalidate
- content-type: application/json; charset=utf-8
- etag: W/"c8b43d3a53bc2611f1bc0ad0aea9a593"
- server-timing: processing;dur=80, socket_queue;dur=4.696, util;dur=0.6, cfRequestDuration;dur=161.999941
- x-request-id: 1559bc68-6e7c-4c13-a744-caea0b51e8c2-1739285125
2025-02-11T14:45:23.212Z: The following extension specifications were defined locally but not found in the remote specifications: payments_extension, tax_calculation
2025-02-11T14:45:23.214Z: Reading the content of file at shopify.app.deploy-dev.toml...
2025-02-11T14:45:23.215Z: Reading the content of file at shopify.app.deploy-prod.toml...
2025-02-11T14:45:23.216Z: Reading the content of file at .gitignore...
2025-02-11T14:45:23.218Z: Reading the .env file at .env
2025-02-11T14:45:23.218Z: Reading the content of file at .env...
2025-02-11T14:45:23.223Z: Reading the content of file at extensions/admin-link-draft-index/shopify.extension.toml...
2025-02-11T14:45:23.224Z: Reading the content of file at extensions/admin-link-draft-order-details/shopify.extension.toml...
2025-02-11T14:45:23.224Z: Reading the content of file at extensions/admin-link-order-details-edit-order/shopify.extension.toml...
2025-02-11T14:45:23.224Z: Reading the content of file at extensions/admin-link-order-index/shopify.extension.toml...
2025-02-11T14:45:23.224Z: Reading the content of file at extensions/admin-link-order-details-create-order/shopify.extension.toml...
2025-02-11T14:45:23.224Z: Reading the content of file at extensions/cart-transformer/shopify.extension.toml...
2025-02-11T14:45:23.224Z: Reading the content of file at extensions/checkout-international-message/shopify.extension.toml...
2025-02-11T14:45:23.225Z: Reading the content of file at extensions/delivery-customization-rush/shopify.extension.toml...
2025-02-11T14:45:23.225Z: Reading the content of file at extensions/order-details-block/shopify.extension.toml...
2025-02-11T14:45:23.225Z: Reading the content of file at extensions/checkout-special-instructions/shopify.extension.toml...
2025-02-11T14:45:23.225Z: Reading the content of file at extensions/pixel/shopify.extension.toml...
2025-02-11T14:45:23.225Z: Reading the content of file at extensions/order-draft-details-block/shopify.extension.toml...
2025-02-11T14:45:23.225Z: Reading the content of file at extensions/order-discount-tiered/shopify.extension.toml...
2025-02-11T14:45:23.225Z: Reading the content of file at extensions/product-details-block/shopify.extension.toml...
2025-02-11T14:45:23.225Z: Reading the content of file at extensions/product-options/shopify.extension.toml...
2025-02-11T14:45:23.228Z: Reading the content of file at extensions/admin-link-draft-index/shopify.extension.toml...
2025-02-11T14:45:23.228Z: Reading the content of file at extensions/admin-link-draft-order-details/shopify.extension.toml...
2025-02-11T14:45:23.228Z: Reading the content of file at extensions/admin-link-order-index/shopify.extension.toml...
2025-02-11T14:45:23.229Z: Reading the content of file at extensions/admin-link-order-details-create-order/shopify.extension.toml...
2025-02-11T14:45:23.229Z: Reading the content of file at extensions/admin-link-order-details-edit-order/shopify.extension.toml...
2025-02-11T14:45:23.229Z: Reading the content of file at extensions/cart-transformer/shopify.extension.toml...
2025-02-11T14:45:23.229Z: Reading the content of file at extensions/checkout-international-message/shopify.extension.toml...
2025-02-11T14:45:23.230Z: Reading the content of file at extensions/order-details-block/shopify.extension.toml...
2025-02-11T14:45:23.230Z: Reading the content of file at extensions/delivery-customization-rush/shopify.extension.toml...
2025-02-11T14:45:23.230Z: Reading the content of file at extensions/checkout-special-instructions/shopify.extension.toml...
2025-02-11T14:45:23.230Z: Reading the content of file at extensions/order-draft-details-block/shopify.extension.toml...
2025-02-11T14:45:23.230Z: Reading the content of file at extensions/order-discount-tiered/shopify.extension.toml...
2025-02-11T14:45:23.230Z: Reading the content of file at extensions/product-details-block/shopify.extension.toml...
╭─ error ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ Duplicated handle "tname" in extensions "t:name", "t:name", "t:name", "t:name" and "t:name". Handle needs to be unique per extension. │
│ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Reproduction steps
Updated to CLI 3.75.0
Create multiple admin link extensions
Run the app
Operating System
Windows 11
Shopify CLI version (shopify --version)
3.75.0
Shell
No response
Node version (run node -v if you're not sure)
v22.11.0
What language and version are you using in your application?
No response
The text was updated successfully, but these errors were encountered:
I am experiencing the same issue since upgrading to shopify-cli 3.75.0.
My app has 3 extensions that are admin links. Each of the 3 shopify.extension.toml files has a unique value for handle that have not changed before/after the update to 3.75.0. However, each of the three has the same "name" value, and this appears to be the duplication mentioned in the error message.
error: Duplicated handle "[my_app_name]" in extensions "[My_app_name]", "My_app_name]" and "My_app_name]". Handle needs to be unique per extension.
It seems like the name value in each of the 3 TOML files is being used to test uniqueness, instead of the handle values, which have always been three unique strings.
It's definitely using the name as though its a handle, instead of the actual handle. I'm seeing this issue too and was able to move past it by varying the name of each admin link.
However, after renaming one of them to "Example 123" (while keeping handle my-actual-extension-handle) and running shopify app deploy, the CLI is now asking
How would you like to deploy your "example-123"?
Match it to my-actual-extension-handle (ID: ... on Shopify Partners)
Match it to other-extension-handle (ID: ... on Shopify Partners)
Create new extension
It has converted the extension name to kebab-case and is now treating it as the handle.
As a result, it thinks the handle doesn't match any existing extension, now that it is using the name instead of the actual handle value
I am seeing the same behaviour. It ignores the handle in the TOML file, then makes it's own from the name. This may not seem like a problem, but it my case, I want all three admin links to just be the name of my app, so I can't proceed. This is an undocumented change to the behaviour of how to manage extensions with the CLI.
Please confirm that you have:
In which of these areas are you experiencing a problem?
App
Expected behavior
I should be able to run my app. However, upon trying to run it I get an error.
Actual behavior
I just received this error when updating to the latest CLI version 3.75.0. This looks like this is because I have 5 admin links in my app. None of my handles are named "t:name." I have put a sample .toml file below. Looks like it is now using the name instead of the handle as a unique identifier.
[[extensions]]
name = "t:name"
handle = "admin-link-draft-index"
type = "admin_link"
Verbose output
Verbose output
Reproduction steps
Operating System
Windows 11
Shopify CLI version (
shopify --version
)3.75.0
Shell
No response
Node version (run
node -v
if you're not sure)v22.11.0
What language and version are you using in your application?
No response
The text was updated successfully, but these errors were encountered: