How to memoize a lambda function in Jetpack Compose like useCallback

Viewed 945

I'm trying to implement a memoized callback function in Jetpack Compose, similar to React's useCallback.

For example I'd like to use this to create a submit lambda function that contains the logic for submitting a form, but I don't want this lambda to be recreated on each recomposition. This should only be recreated when its dependencies change.

Does something like this exist?

2 Answers

Lambda memoization is done automatically by the compiler by generating a remember call implicitly based on the stable values captured by the lambda. You only need remember explicitly if one or more of the captured values is not considered stable by the compiler.

The normal remember/rememberSaveable functions can be used for this. This will only recreate the lambda function when the given dependencies change.

val submit = rememberSaveable(dependency1, dependency2) {
    {
        // Logic here
    }
}

submit()
Related