docs/tools/swc.mdx
⚠️ Note: These plugins are experimental. Feedback is welcome in the Github repo. Please file issues in the separate repo instead of jotai repo.
This plugin adds support for React Refresh for Jotai atoms. This makes sure that state isn't reset, when developing using React Refresh.
Install it with:
npm install --save-dev @swc-jotai/react-refresh
You can add the plugin to .swcrc:
{
"jsc": {
"experimental": {
"plugins": [["@swc-jotai/react-refresh", {}]]
}
}
}
You can use the plugin with the experimental SWC plugins feature in Next.js.
module.exports = {
experimental: {
swcPlugins: [['@swc-jotai/react-refresh', {}]],
},
}
Examples can be found below.
Jotai is based on object references and not keys (like Recoil). This means there's no identifier for atoms. To identify atoms, it's possible to add a debugLabel to an atom, which can be found in React devtools.
However, this can quickly become cumbersome to add a debugLabel to every atom.
This SWC plugin adds a debugLabel to every atom, based on its identifier.
The plugin transforms this code:
export const countAtom = atom(0)
Into:
export const countAtom = atom(0)
countAtom.debugLabel = 'countAtom'
Default exports are also handled, based on the file naming:
// countAtom.ts
export default atom(0)
Which transform into:
// countAtom.ts
const countAtom = atom(0)
countAtom.debugLabel = 'countAtom'
export default countAtom
Install it with:
npm install --save-dev @swc-jotai/debug-label
You can add the plugin to .swcrc:
{
"jsc": {
"experimental": {
"plugins": [["@swc-jotai/debug-label", {}]]
}
}
}
Or you can use the plugin with the experimental SWC plugins feature in Next.js.
module.exports = {
experimental: {
swcPlugins: [['@swc-jotai/debug-label', {}]],
},
}
Examples can be found below.
You can enable the plugins for your custom atoms. You can supply them to the plugins like below:
module.exports = {
experimental: {
swcPlugins: [
['@swc-jotai/debug-label', { atomNames: ['customAtom'] }],
['@swc-jotai/react-refresh', { atomNames: ['customAtom'] }],
],
},
}