Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .changeset/fix-minified-error-link.md

This file was deleted.

69 changes: 0 additions & 69 deletions .changeset/mobx-7-react-10.md

This file was deleted.

68 changes: 68 additions & 0 deletions packages/mobx-react-lite/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,73 @@
# mobx-react-lite

## 5.0.0

### Major Changes

- [`1926c69f53168619d688f348aa587e8f3ae579ae`](https://github.com/mobxjs/mobx/commit/1926c69f53168619d688f348aa587e8f3ae579ae) [#4671](https://github.com/mobxjs/mobx/pull/4671) Thanks [@kubk](https://github.com/kubk)! - Release MobX 7, mobx-react-lite 5, and mobx-react 10.

Bundle sizes are down: ESM prod 17.02 KiB gzip -> 13.96 KiB gzip; a minimal tree-shaken example is 10.32 KiB gzip now.

It removes long-deprecated compatibility paths and keeps the React bindings split between `mobx-react-lite` for function components and `mobx-react` for class-component support.

## MobX 7

MobX 7 is a cleanup release focused on the modern runtime and decorator model.

- MobX now always uses Proxy-backed observable objects and arrays. The ES5/non-proxy fallback has been removed.
- `configure({ useProxies: ... })` is no longer supported.
- `{ proxy: false }` options for `observable`, `observable.object`, and `observable.array` are no longer supported.
- Legacy decorators are no longer supported.
- Namespaced annotation and comparer properties now use named exports to reduce bundle size:

| Removed API | Replacement |
| --------------------- | ------------------- |
| `observable.ref` | `observableRef` |
| `observable.shallow` | `observableShallow` |
| `observable.deep` | `observableDeep` |
| `observable.struct` | `observableStruct` |
| `computed.struct` | `computedStruct` |
| `action.bound` | `actionBound` |
| `flow.bound` | `flowBound` |
| `comparer.identity` | `compareIdentity` |
| `comparer.default` | `compareDefault` |
| `comparer.structural` | `compareStructural` |
| `comparer.shallow` | `compareShallow` |

- The public `trace` API and its related runtime support have been removed. Use `toJS`, `getDependencyTree`, `getObserverTree`, `spy` or `mobx-log` package for debugging.

## mobx-react-lite 5 and mobx-react 10

mobx-react-lite 5 and mobx-react 10 require MobX 7 and React 18 or later.

`mobx-react-lite` remains the function-component package. `mobx-react` remains a thin wrapper around `mobx-react-lite` that adds class component and Stage 3 `@observer` class decorator support.

- Keep function-component imports on `mobx-react-lite` if you do not need class component support.
- Use `mobx-react` when you need class components or `@observer` class decorators.
- `mobx-react-lite` supports function components and `forwardRef`; `mobx-react` delegates function components to `mobx-react-lite` and handles classes itself.
- Remove React batching imports, including the stale React Native batching deep import. React 18+ renderers handle batching.

The recommended public React binding surface for both packages is:

- `observer`
- `Observer`
- `useLocalObservable`
- `enableStaticRendering`
- `isUsingStaticRendering`

The following APIs have been removed from the React binding packages:

- `Provider`, `inject`, and `MobXProviderContext`; use `React.createContext` directly.
- `disposeOnUnmount`; dispose reactions in `componentWillUnmount` or return cleanup functions from `useEffect`.
- `PropTypes`; use TypeScript or the regular `prop-types` package.
- `useObserver`; wrap components with `observer` or use `<Observer>`.
- `useLocalStore`; use `useLocalObservable`.
- `useAsObservableSource`; synchronize values from props into local observable state explicitly.
- `useStaticRendering`; use `enableStaticRendering`.
- `observerBatching`, `isObserverBatched`, `batchingForReactDom`, `batchingOptOut`, and `batchingForReactNative`; remove these imports because React 18+ renderers handle batching.
- Deprecated `observer(fn, { forwardRef: true })`; pass an already-created `React.forwardRef(...)` component to `observer` instead.
- Legacy function-component `contextTypes` handling.

## 4.1.1

### Patch Changes
Expand Down
4 changes: 2 additions & 2 deletions packages/mobx-react-lite/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mobx-react-lite",
"version": "4.1.1",
"version": "5.0.0",
"description": "Lightweight React bindings for MobX based on function components and Hooks",
"source": "src/index.ts",
"type": "commonjs",
Expand Down Expand Up @@ -58,7 +58,7 @@
"react": "^18 || ^19"
},
"devDependencies": {
"mobx": "^6.15.0"
"mobx": "^7.0.0"
},
"keywords": [
"mobx",
Expand Down
73 changes: 73 additions & 0 deletions packages/mobx-react/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,78 @@
# mobx-react

## 10.0.0

### Major Changes

- [`1926c69f53168619d688f348aa587e8f3ae579ae`](https://github.com/mobxjs/mobx/commit/1926c69f53168619d688f348aa587e8f3ae579ae) [#4671](https://github.com/mobxjs/mobx/pull/4671) Thanks [@kubk](https://github.com/kubk)! - Release MobX 7, mobx-react-lite 5, and mobx-react 10.

Bundle sizes are down: ESM prod 17.02 KiB gzip -> 13.96 KiB gzip; a minimal tree-shaken example is 10.32 KiB gzip now.

It removes long-deprecated compatibility paths and keeps the React bindings split between `mobx-react-lite` for function components and `mobx-react` for class-component support.

## MobX 7

MobX 7 is a cleanup release focused on the modern runtime and decorator model.

- MobX now always uses Proxy-backed observable objects and arrays. The ES5/non-proxy fallback has been removed.
- `configure({ useProxies: ... })` is no longer supported.
- `{ proxy: false }` options for `observable`, `observable.object`, and `observable.array` are no longer supported.
- Legacy decorators are no longer supported.
- Namespaced annotation and comparer properties now use named exports to reduce bundle size:

| Removed API | Replacement |
| --------------------- | ------------------- |
| `observable.ref` | `observableRef` |
| `observable.shallow` | `observableShallow` |
| `observable.deep` | `observableDeep` |
| `observable.struct` | `observableStruct` |
| `computed.struct` | `computedStruct` |
| `action.bound` | `actionBound` |
| `flow.bound` | `flowBound` |
| `comparer.identity` | `compareIdentity` |
| `comparer.default` | `compareDefault` |
| `comparer.structural` | `compareStructural` |
| `comparer.shallow` | `compareShallow` |

- The public `trace` API and its related runtime support have been removed. Use `toJS`, `getDependencyTree`, `getObserverTree`, `spy` or `mobx-log` package for debugging.

## mobx-react-lite 5 and mobx-react 10

mobx-react-lite 5 and mobx-react 10 require MobX 7 and React 18 or later.

`mobx-react-lite` remains the function-component package. `mobx-react` remains a thin wrapper around `mobx-react-lite` that adds class component and Stage 3 `@observer` class decorator support.

- Keep function-component imports on `mobx-react-lite` if you do not need class component support.
- Use `mobx-react` when you need class components or `@observer` class decorators.
- `mobx-react-lite` supports function components and `forwardRef`; `mobx-react` delegates function components to `mobx-react-lite` and handles classes itself.
- Remove React batching imports, including the stale React Native batching deep import. React 18+ renderers handle batching.

The recommended public React binding surface for both packages is:

- `observer`
- `Observer`
- `useLocalObservable`
- `enableStaticRendering`
- `isUsingStaticRendering`

The following APIs have been removed from the React binding packages:

- `Provider`, `inject`, and `MobXProviderContext`; use `React.createContext` directly.
- `disposeOnUnmount`; dispose reactions in `componentWillUnmount` or return cleanup functions from `useEffect`.
- `PropTypes`; use TypeScript or the regular `prop-types` package.
- `useObserver`; wrap components with `observer` or use `<Observer>`.
- `useLocalStore`; use `useLocalObservable`.
- `useAsObservableSource`; synchronize values from props into local observable state explicitly.
- `useStaticRendering`; use `enableStaticRendering`.
- `observerBatching`, `isObserverBatched`, `batchingForReactDom`, `batchingOptOut`, and `batchingForReactNative`; remove these imports because React 18+ renderers handle batching.
- Deprecated `observer(fn, { forwardRef: true })`; pass an already-created `React.forwardRef(...)` component to `observer` instead.
- Legacy function-component `contextTypes` handling.

### Patch Changes

- Updated dependencies [[`1926c69f53168619d688f348aa587e8f3ae579ae`](https://github.com/mobxjs/mobx/commit/1926c69f53168619d688f348aa587e8f3ae579ae)]:
- mobx-react-lite@5.0.0

## 9.2.2

### Patch Changes
Expand Down
6 changes: 3 additions & 3 deletions packages/mobx-react/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mobx-react",
"version": "9.2.2",
"version": "10.0.0",
"description": "React bindings for MobX. Create fully reactive components.",
"source": "src/index.ts",
"type": "commonjs",
Expand Down Expand Up @@ -62,8 +62,8 @@
"react": "^18 || ^19"
},
"devDependencies": {
"mobx": "^6.15.0",
"mobx-react-lite": "^4.1.1"
"mobx": "^7.0.0",
"mobx-react-lite": "^5.0.0"
},
"keywords": [
"mobx",
Expand Down
72 changes: 72 additions & 0 deletions packages/mobx/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,77 @@
# mobx

## 7.0.0

### Major Changes

- [`1926c69f53168619d688f348aa587e8f3ae579ae`](https://github.com/mobxjs/mobx/commit/1926c69f53168619d688f348aa587e8f3ae579ae) [#4671](https://github.com/mobxjs/mobx/pull/4671) Thanks [@kubk](https://github.com/kubk)! - Release MobX 7, mobx-react-lite 5, and mobx-react 10.

Bundle sizes are down: ESM prod 17.02 KiB gzip -> 13.96 KiB gzip; a minimal tree-shaken example is 10.32 KiB gzip now.

It removes long-deprecated compatibility paths and keeps the React bindings split between `mobx-react-lite` for function components and `mobx-react` for class-component support.

## MobX 7

MobX 7 is a cleanup release focused on the modern runtime and decorator model.

- MobX now always uses Proxy-backed observable objects and arrays. The ES5/non-proxy fallback has been removed.
- `configure({ useProxies: ... })` is no longer supported.
- `{ proxy: false }` options for `observable`, `observable.object`, and `observable.array` are no longer supported.
- Legacy decorators are no longer supported.
- Namespaced annotation and comparer properties now use named exports to reduce bundle size:

| Removed API | Replacement |
| --------------------- | ------------------- |
| `observable.ref` | `observableRef` |
| `observable.shallow` | `observableShallow` |
| `observable.deep` | `observableDeep` |
| `observable.struct` | `observableStruct` |
| `computed.struct` | `computedStruct` |
| `action.bound` | `actionBound` |
| `flow.bound` | `flowBound` |
| `comparer.identity` | `compareIdentity` |
| `comparer.default` | `compareDefault` |
| `comparer.structural` | `compareStructural` |
| `comparer.shallow` | `compareShallow` |

- The public `trace` API and its related runtime support have been removed. Use `toJS`, `getDependencyTree`, `getObserverTree`, `spy` or `mobx-log` package for debugging.

## mobx-react-lite 5 and mobx-react 10

mobx-react-lite 5 and mobx-react 10 require MobX 7 and React 18 or later.

`mobx-react-lite` remains the function-component package. `mobx-react` remains a thin wrapper around `mobx-react-lite` that adds class component and Stage 3 `@observer` class decorator support.

- Keep function-component imports on `mobx-react-lite` if you do not need class component support.
- Use `mobx-react` when you need class components or `@observer` class decorators.
- `mobx-react-lite` supports function components and `forwardRef`; `mobx-react` delegates function components to `mobx-react-lite` and handles classes itself.
- Remove React batching imports, including the stale React Native batching deep import. React 18+ renderers handle batching.

The recommended public React binding surface for both packages is:

- `observer`
- `Observer`
- `useLocalObservable`
- `enableStaticRendering`
- `isUsingStaticRendering`

The following APIs have been removed from the React binding packages:

- `Provider`, `inject`, and `MobXProviderContext`; use `React.createContext` directly.
- `disposeOnUnmount`; dispose reactions in `componentWillUnmount` or return cleanup functions from `useEffect`.
- `PropTypes`; use TypeScript or the regular `prop-types` package.
- `useObserver`; wrap components with `observer` or use `<Observer>`.
- `useLocalStore`; use `useLocalObservable`.
- `useAsObservableSource`; synchronize values from props into local observable state explicitly.
- `useStaticRendering`; use `enableStaticRendering`.
- `observerBatching`, `isObserverBatched`, `batchingForReactDom`, `batchingOptOut`, and `batchingForReactNative`; remove these imports because React 18+ renderers handle batching.
- Deprecated `observer(fn, { forwardRef: true })`; pass an already-created `React.forwardRef(...)` component to `observer` instead.
- Legacy function-component `contextTypes` handling.

### Patch Changes

- [`979d267d569734dc3cb969ed1880ed68bb79f1b5`](https://github.com/mobxjs/mobx/commit/979d267d569734dc3cb969ed1880ed68bb79f1b5) [#4677](https://github.com/mobxjs/mobx/pull/4677) Thanks [@kubk](https://github.com/kubk)! - Shorten minified error URL to reduce production bundle size.

## 6.16.1

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/mobx/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mobx",
"version": "6.16.1",
"version": "7.0.0",
"description": "Simple, scalable state management.",
"source": "src/mobx.ts",
"type": "commonjs",
Expand Down