> For the complete documentation index, see [llms.txt](https://tochemey.gitbook.io/goakt/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tochemey.gitbook.io/goakt/features/actor/behaviors.md).

# Behaviors

Actors in GoAkt have the power to switch their behaviors at any point in time. When you change the actor behavior, the new behavior will take effect for all subsequent messages until the behavior is changed again. The current message will continue processing with the existing behavior. You can use **`Stashing`** to reprocess the current message with the new behavior. See [Stashing](/goakt/features/actor/stashing.md)

To change the behavior, call the following methods on the [ReceiveContext interface](https://github.com/Tochemey/goakt/blob/main/actor/receive_context.go) when handling a message:

* **`Become`** - switches the current behavior of the actor to a new behavior.
* **`UnBecome`** - resets the actor behavior to the default one which is the Actor.Receive method.
* **`BecomeStacked`** - sets a new behavior to the actor to the top of the behavior stack, while maintaining the previous ones.
* **`UnBecomeStacked()`** - sets the actor behavior to the previous behavior before **`BecomeStacked()`** was called. This only works with **`BecomeStacked()`**.
