---
title: Arez 0.54 released
author: Arez Project
authorURL: https://github.com/arez
---

[Full Changelog](https://github.com/arez/arez/compare/v0.53...v0.54)

Changes in this release:

#### Fixed
* **\[processor\]** The enhanced component now generates an invariant failure (when invariants are enabled)
  if an attempt is made to call methods annotated with `@ContextRef` or `@ComponentNameRef` in the constructor
  of the component as the arez state is not initialized until after the constructor returns.
* **\[processor\]** The enhanced component now generates an invariant failure (when invariants are enabled)
  if an attempt is made to call a method annotated with `@ComponentRef` in the constructor of the component
  or in a method annotated with `@PostConstruct` as the component element has not been created initialized
  until after the `@PostConstruct` method returns.
* **\[processor\]** Changed the way that the annotation processor synthesizes names of fields that are used
  to track internal state such as the `id`, `state`, `context` etc. fields so that they can never collide
  with names synthesized to manage reactive aspects of a component. This means it is now possible to define
  observable properties, computed properties or observers that have a name that matches these internal names.
* **\[processor\]** The enhanced component now generates a more useful invariant failure (when invariants are
  enabled) if an attempt is made to access any of the observable properties, computed properties or tracked
  observers before they have been constructed.
* **\[processor\]** The `ObservableChanged` event generated from Arez when disposing a component will
  accurately report the value it is changing to as true.
* **\[core\]** An invariant failure could be generated when the update of a `ComputedValue` led to the
  deactivation of other `ComputedValue` instances which triggered a disposal of the `ComputedValue` and other
  potential Arez elements. The invariant failure resulted from `dispose()` requiring a `READ_WRITE` transaction
  mode while being nested in a `READ_WRITE_OWNED`. This frequently happened when using the `@Memoize` annotation
  or in custom application code that derived view models from other observable and computed properties. The fix
  for this is to introduce a new transaction mode `DISPOSE` which can only be used to dispose Arez elements
  and can not have any nested transactions.

#### Added
* **\[component\]** Introduce the `ComponentState` class to help inspect component state in generated classes.

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