Third-party dependencies
Third-party dependencies will generally work out-of-the-box with Hydrogen. This guide describes how to install third-party dependencies, where to insert them, and offers tips for troubleshooting dependencies.
Installation
Anchor link to section titled "Installation"To install third party dependencies, run the following command:
Where to insert dependencies
Anchor link to section titled "Where to insert dependencies"Consider the following:
- If the dependency interacts with
useState
or browser APIs, then place it inside a*.client.jsx
component. Follow the rules of server and client components. - If the dependency is purely client-based, and you don't need to interact with it in individual components, then you can insert it in the
<head>
element ofindex.html
. - If the dependency includes a style import from a CSS file, then you can import that in the
<head>
element ofindex.html
.
Troubleshooting dependencies
Anchor link to section titled "Troubleshooting dependencies"This section provides strategies for troubleshooting third-party dependencies in your Hydrogen project.
Updating Vite dependencies
Anchor link to section titled "Updating Vite dependencies"Vite caches pre-bundled dependencies in node_modules/.vite
. It re-runs the pre-bundling step if any of the following changes occur:
- The dependencies list is updated in
package.json
- Package manager lockfiles (for example
yarn.lock
) are updated - Any fields in
vite.config.js
are updated
You can force Vite to re-bundle dependencies by completing one of the following tasks:
- Start the dev server with the
--force
command line option - Manually delete the
node_modules/.vite
cache directory
Bundling third-party dependencies
Anchor link to section titled "Bundling third-party dependencies"When bundling third-party dependencies, you might see errors in development or production related to the incorrect bundle type being used from the package.
This happens because Vite uses a heuristic to determine whether to load a module-based import (ESM) or a CommonJS-based import (CJS). Sometimes, the heuristic chooses the wrong version, or the third-party package formats their project in an unusual way.
To fix this, you can try adding the dependency to the optimizeDeps.include
property of your vite.config.js
file:
- Learn more about dependency pre-bundling and optimization in Vite.
- Check the Hydrogen GitHub discussion for your issue, or report a new issue to Hydrogen maintainers.