---
url: 'https://servactory.com/releases/3.0.md'
---

# Release 3.0

The following changes have been prepared and implemented.

## Architecture

### Stroma

* [Stroma](https://github.com/servactory/stroma) — the library core responsible for managing modules, hooks, and extensions.
* Added `before` and `after` hook system for service customization.
* Reorganized structure with hierarchical module settings storage.

### Configuration

* Refactoring to prevent shared state between parent and child classes.

## Attributes

### Dynamic Options

* Added the `target` option for class validation;
* Added Range support in the `inclusion` option;
* Improved validation: nil guards, type checking in format, Float precision;
* Refined `must` option: `is` lambda accepts only strict `true` value.

## Actions

### Stage

* Improved stage functionality;
* Renamed methods: `should_skip?`, `condition_met?`.

## Extensions

* Extensions now work through the Stroma hook system with `before` and `after` support;
* Added extension examples: Authorization, Transactional, Idempotent, Rollbackable, and others;
* Added generator for creating extensions.

See the [Extensions documentation](/guide/extensions) for details.

## Testing

### RSpec

* Test Kit redesign with modular Registry DSL architecture;
* Added Fluent API for service mocking;
* Added cross-service exception handling support.

## Rails Generators

Added and improved generators for Rails:

* `servactory:install` — installation and setup;
* `servactory:service` — service creation with inputs and typing support;
* `servactory:rspec` — RSpec test creation;
* `servactory:extension` — extension creation.

Improvements include: custom path support, type normalization, extended Rails 5.1-8.1 compatibility.

## I18n

Added new locales: German (de), French (fr), Spanish (es), Italian (it).

## Ruby

Support for Ruby 4.0.0 has been verified.

## Rails

Support for Rails 8.1 has been verified.

## Other

This release also contains other fixes and improvements.
