---
title: "jotai Breaking Changes on npm | Since.dev"
description: "What each jotai release removed, renamed or changed: 15 breaking changes in 1 version on npm, each with its source."
canonical_url: https://since.dev/packages/npm/jotai
last_updated: 2026-09-08
---

# jotai breaking changes

Every breaking API change we have recorded in jotai on npm: 15 breaking changes in 1 version. Below are its newest version, removals and renames first, each with its source.

Newest change September 8, 2026

## 3.0.0

15 breaking changes, first published September 8, 2026.

- **Removed**  

Jotai v3 requires Node.js 22.12.0 or later. Code running on older Node.js versions must upgrade Node.js before moving to v3. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)
- **Removed**  

Importing internal files of the package directly no longer works. Import only from the public entry points. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)
- **Removed**  

Jotai v3 requires React 18 or later. Apps on React 17 must upgrade React first. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)
- **Removed**  

Only the ESM build is published now. Code that loads Jotai from CJS must use require() on Node.js versions that support it, or bundle the ESM build. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)
- **Removed** `atomFamily`  

Install jotai-family and import atomFamily from it instead of jotai/utils. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)
- **Removed** `jotai.babel`  

Install jotai-babel and reference its plugins in the Babel config instead of jotai/babel. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)
- **Removed** `loadable`  

Use unwrap instead, or implement the previous behavior in your own code. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)
- **Removed** `setSelf`  

No direct replacement exists. Use onMount or jotai-effect depending on the use case. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)
- **Removed** `useAtom`  

Create a custom hook that delays the update with setTimeout instead. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)
- **Removed** `useAtomValue`  

Create a custom hook that delays the update with setTimeout instead. [github.com](https://github.com/pmndrs/jotai/blob/main/docs/guides/migrating-to-v3.mdx)

And 5 more in this version.

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
