---
title: Arez 0.23 released
type: minor
---

[Full Changelog](https://github.com/realityforge/arez/compare/v0.22...v0.23)

Changes in this release:

##### Added
* **\[core\]** Add the `ArezContext.pauseScheduler()` method that allows the developer to manually pause
  reactions and `ArezContext.isSchedulerPaused()` to determine if the scheduler is paused. This gives the
  toolkit user the ability to manually batch actions so application can react to the changes once.

##### Fixed
* **\[core\]** Invariant failures could refer to `ArezConfig.enableNames()` which is a package access internal
  API. Update messages to use public API `Arez.areNamesEnabled()`. Also update internal code to use public API
  where appropriate.
* **\[core\]** Invariant failures could refer to `ArezConfig.enableSpy()` which is a package access internal
  API. Update messages to use public API `Arez.areSpiesEnabled()`. Also update internal code to use public API
  where appropriate.
* **\[core\]** Avoid referencing `TransactionMode` if `ArezConfig.enforceTransactionType()` returns false. The
  dispose actions had been implemented without taking this into account.
* **\[core\]** `ArezTestUtil` could still modify settings when in production mode if assertions were disabled.
  Explicitly disable this by throwing an exception after assertion so settings will never be modified in
  production mode.
* **\[core\]** Ensured that `arez.enable_spies` is a compile time constant by adding it to the `.gwt.xml`
  modules. This was previously omitted which could lead to inconsistent behaviour.

##### Changed
* 💥 **\[core\]** Enhance `Observable` to accept accessors and mutators during construction. These accessors
  and mutators allow introspection of the `Observable` at runtime. These are primarily aimed at supporting
  development time tooling and should be optimized away during production builds. To enable this `Observable`
  needs to be defined with a type parameter and the `ArezContext.createObservable(...)` needed to be updated
  to support this use-case. This capability should be compiled out if `Arez.arePropertyIntrospectorsEnabled()`
  returns false and this is controlled by the gwt configuration property `"arez.enable_property_introspection"`.
  The annotation processor has also been updated to supply the accessor and mutator (if a setter has been
  defined) to the `Observable` iff `Arez.arePropertyIntrospectorsEnabled()` returns true.
* **\[processor\]** Consistently prefix field access with `this.` in generated component classes.
* 💥 **\[core\]** Replaced all usages of `ArezTestUtil.set*(boolean)` with a pair of methods that enable or
  disable a setting. Ensured all of the names of configuration used in `ArezTestUtil` align with names used
  by `Arez` to refer to same setting.
* 💥 **\[core\]** Rename and invert compile time setting from `arez.repositories_return_immutables` to
  `arez.repositories_results_modifiable` and expose it via `Arez.areRepositoryResultsModifiable()` and allow
  configuration during development via `ArezTestUtil`. The annotation processor was updated to use
  `Arez.areRepositoryResultsModifiable()` when generating repositories.

Update site to add news about the 0.23 release
Update site to add news about the 0.23 release
