Apps can now bring up the "choose from Shopify's file library" screen with a single API call. There's no need to build your own file-selection UI or send merchants off to a separate screen. The selection comes back as an array of file IDs.
pick:shopify/File just calling this new Intent opens Shopify's native file picker.You had to implement your own file-selection UI or send merchants into a separate flow. This meant both implementation cost and a fragmented UX.
A single API call opens Shopify's file picker. It supports filtering by media type, multiple selection, and pre-selection. Results come back as an array of IDs.
shopify.intents.invoke() fires off the intent and, from the returned activity, waits for the complete to receive the result.
invoke to open the picker,activity.complete and awaitresponse.code === 'ok' and if so, receive response.data.ids — those three lines are the basic form.You can narrow the File Library to show only the media types you need (optional).
You can enable multiple selection. The chosen files are returned together as an array of IDs.
You can have specific files already selected when the picker opens. Handy for edit and replace flows.
When the selection is complete,response.data.ids the selected file IDs are returned as an array.
| Item | Traditional (your own picker) | Intents API(pick:shopify/File) |
|---|---|---|
| File selection UI | Custom-built Implement your own picker | Native Just call Shopify's built-in one |
| Merchant experience | Tends to push users into a separate flow, breaking the experience | Stays within the familiar File Library |
| Invocation | Requires your own state management | invoke → complete await |
| Filtering, multiple selection, preselection | All implemented yourself | OptionsSpecifiable via options |
| Selection result | Design your own way to pass it around | response.data.ids Returned as an array |
From App Home or a UI Extension shopify.intents.invoke('pick:shopify/File') Call
On the returned activity, complete await it and receive the merchant's completed selection.
response.code === 'ok' Check, andresponse.data.ids use the array of.
pick:shopify/FilePassing this string to invoke is the starting point. It expresses the intent to pick files from Shopify's file library.
It can be used from both App Home (iframe) and UI Extensions with the same call, so you can choose the right context.
invoke returns an activity, and you complete await it to wait for selection to complete — an async flow. It's easy to design so it doesn't block the UI.
response.code the resultBefore using the result, check code === 'ok' It's an API shaped on the assumption that you branch on cancellation and error cases here.
response.data.ids What you get back is the selected files' array of IDs. Note that if you need the actual file URLs or metadata, the design is to fetch them separately via the Admin API or similar using those IDs.
pick:shopify/File and use Shopify's file library as the selection UI as-is. Keep the returned IDs on the app side.data.ids Pass the resulting array straight into batch processing.pick:shopify/File A new API that lets you call up Shopify's native file picker just by invoking an Intent.