--- title: Dependencies description: > Shop Minis must only use approved dependencies. Only the packages listed on this page are allowed. Submissions with unapproved dependencies will be automatically rejected. api_name: shop-minis source_url: html: 'https://shopify.dev/docs/api/shop-minis/dependencies' md: 'https://shopify.dev/docs/api/shop-minis/dependencies.md' --- # Dependencies Shop Minis must only use approved dependencies. Only the packages listed on this page are allowed. Submissions with unapproved dependencies will be automatically rejected. *** ## Required dependencies The following dependencies are required for your Mini to work. They will be installed automatically when you create your Mini. * [`@shopify/shop-minis-react`](https://www.npmjs.com/package/@shopify/shop-minis-react) (\*) * [`react`](https://www.npmjs.com/package/react) (18.2.0) * [`react-dom`](https://www.npmjs.com/package/react-dom) (18.2.0) *** ## Optional dependencies The following dependencies have been approved for use in Minis. Use the [`install`](./commands/install) command to add them to your Mini. * [`@fal-ai/client`](https://www.npmjs.com/package/@fal-ai/client) (1.6.0) * [`@mediapipe/pose`](https://www.npmjs.com/package/@mediapipe/pose) (0.5.1675469404) * [`@react-three/fiber`](https://www.npmjs.com/package/@react-three/fiber) (8.18.0) * [`aframe`](https://www.npmjs.com/package/aframe) (1.7.1) * [`color-convert`](https://www.npmjs.com/package/color-convert) (2.0.1) * [`mind-ar`](https://www.npmjs.com/package/mind-ar) (1.2.5) * [`three`](https://www.npmjs.com/package/three) (0.178.0) * [`lodash`](https://www.npmjs.com/package/lodash) (4.17.21) * [`lucide-react`](https://www.npmjs.com/package/lucide-react) (0.513.0) * [`motion`](https://www.npmjs.com/package/motion) (12.17.3) * [`radix-ui`](https://www.npmjs.com/package/radix-ui) (1.4.2) * [`react-router`](https://www.npmjs.com/package/react-router) (7.7.0) * [`socket.io-client`](https://www.npmjs.com/package/socket.io-client) (4.8.1) * [`video.js`](https://www.npmjs.com/package/video.js) (8.23.3) * [`ulid`](https://www.npmjs.com/package/ulid) (3.0.1) * [`zustand`](https://www.npmjs.com/package/zustand) (5.0.8) * [`@tanstack/react-query`](https://www.npmjs.com/package/@tanstack/react-query) (5.86.0) * [`ai`](https://www.npmjs.com/package/ai) (5.0.29) * [`@ai-sdk/openai`](https://www.npmjs.com/package/@ai-sdk/openai) (2.0.23) * [`@ai-sdk/react`](https://www.npmjs.com/package/@ai-sdk/react) (2.0.29) * [`@tensorflow/tfjs`](https://www.npmjs.com/package/@tensorflow/tfjs) (4.22.0) * [`@tensorflow-models/posenet`](https://www.npmjs.com/package/@tensorflow-models/posenet) (2.2.2) * [`embla-carousel-react`](https://www.npmjs.com/package/embla-carousel-react) (8.6.0) * [`embla-carousel-autoplay`](https://www.npmjs.com/package/embla-carousel-autoplay) (8.6.0) * [`embla-carousel-auto-scroll`](https://www.npmjs.com/package/embla-carousel-auto-scroll) (8.6.0) * [`embla-carousel-auto-height`](https://www.npmjs.com/package/embla-carousel-auto-height) (8.6.0) * [`embla-carousel-class-names`](https://www.npmjs.com/package/embla-carousel-class-names) (8.6.0) * [`embla-carousel-fade`](https://www.npmjs.com/package/embla-carousel-fade) (8.6.0) * [`@dnd-kit/core`](https://www.npmjs.com/package/@dnd-kit/core) (6.3.1) * [`@dnd-kit/modifiers`](https://www.npmjs.com/package/@dnd-kit/modifiers) (9.0.0) * [`@dnd-kit/sortable`](https://www.npmjs.com/package/@dnd-kit/sortable) (10.0.0) * [`@emoji-mart/data`](https://www.npmjs.com/package/@emoji-mart/data) (1.2.1) * [`@emoji-mart/react`](https://www.npmjs.com/package/@emoji-mart/react) (1.1.1) * [`emoji-mart`](https://www.npmjs.com/package/emoji-mart) (5.6.0) * [`videojs-mux`](https://www.npmjs.com/package/videojs-mux) (4.21.11) * [`zod`](https://www.npmjs.com/package/zod) (4.1.11) * [`@apollo/client`](https://www.npmjs.com/package/@apollo/client) (4.0.7) * [`graphql-ws`](https://www.npmjs.com/package/graphql-ws) (6.0.6) * [`@mux/mux-player-react`](https://www.npmjs.com/package/@mux/mux-player-react) (3.8.0) * [`@mediapipe/tasks-vision`](https://www.npmjs.com/package/@mediapipe/tasks-vision) (0.10.9) * [`hls.js`](https://www.npmjs.com/package/hls.js) (1.6.14) Running the [`install --check`](./commands/install) command will validate that your Mini only uses approved dependencies. You can use [`install --fix`](./commands/install) to fix any issues automatically. Unapproved dependencies will cause automatic rejection Your Mini will be automatically rejected if it includes any dependencies not listed above. This includes private npm packages (which are never allowed), dependencies vendored into your source code, and any modifications to approved dependencies. Only use the exact versions of approved dependencies listed on this page. [Command - Learn more about the install command](./commands/install) *** ## Requesting optional dependencies If you need a dependency that's not on the list, request it as early as possible. **The approval process takes days to weeks**, and there is no guarantee of approval. We can only approve Minis that use allowed dependencies. To request a new dependency, file an issue in the [Shop Minis GitHub repository](https://github.com/Shopify/shop-minis/issues/new?template=dependency-request.yml). Caution Shop Minis should be built specifically for the Shop platform, not ported from existing applications. ### Why a dependency request might be rejected Dependency requests could be rejected for: * **Excessive dependencies**: Requesting many dependencies (10+) * **Private packages**: Private npm packages are never allowed * **Security vulnerabilities**: Dependencies with known security issues or poor security track records * **Large bundle size**: Dependencies that significantly increase the Mini's size without sufficient benefit * **Maintenance concerns**: Unmaintained or deprecated packages with no active development * **Functionality overlap**: Dependencies that duplicate functionality already available in approved packages or the Shop Minis SDK * **Paid dependencies**: Dependencies that require paid subscriptions or are closely tied to paid third-party platforms. We strongly prefer widely-adopted open source alternatives Tip Before requesting a dependency, check the [closed issues](https://github.com/Shopify/shop-minis/issues?q=is%3Aissue+is%3Aclosed+label%3Adependency-request) to see if it has been previously rejected and consider whether an approved alternative exists. ***