One of the announcements in this year’s Google I/O talk on Mastering text input in Compose covered changes to how text inputs are stored, filtered and displayed.
Starting in the Compose Material 3 library version 1.4.0 both TextField and OutlinedTextField will be state-based text fields with the value of the text hoisted out of the component using rememberTextFieldState(initialText = "Hello"), where initialText is optional. As a result, onValueChanged is removed as state changes can be tracked through the hoisted state. The text value can be modified directly using TextFieldBuffer and its associated editing functions like append, insert, replace, or delete.
Previously, VisualTransformation was used for both input filtering and output formatting, for example for phone numbers and currency values. Now, the API gives us both InputTransformation and OutputTransformation in order to separate the logic.
The screenshot below from the talk demonstrates how the separate input and operations are applied for a U.S.-formatted phone number.

Check out the talk here and the docs here for more information.

