@AuraEnabled Annotations for Continuations

Continuations use the @AuraEnabled annotation for Apex code. Here are the rules for usage.
@AuraEnabled(continuation=true)
An Apex controller method that returns a continuation must be annotated with @AuraEnabled(continuation=true).
@AuraEnabled(continuation=true cacheable=true)
To cache the result of a continuation action, set cacheable=true on the annotation for the Apex callback method.

There’s a space, not a comma, between continuation=true cacheable=true.

Note

Caching Considerations

It's best practice to set cacheable=true on all methods involved in the continuation chain, including the method that returns a Continuation object. The cacheable=true setting is available for API version 44.0 and higher. Before API version 44.0, to cache data returned from an Apex method, you had to call setStorable() in JavaScript code on every action that called the Apex method.

In this example, the Apex method that returns the continuation, startRequest(), and the callback, processResponse(), both contain cacheable=true in their @AuraEnabled annotation.

// Action method
@AuraEnabled(continuation=true cacheable=true)
public static Object startRequest() { }

// Callback method
@AuraEnabled(cacheable=true)
public static Object processResponse(List<String> labels,
  Object state) { }

Here's a table that summarizes the behavior with different settings of the cacheable attribute in @AuraEnabled.

Method Returning Continuation Object Annotated with cacheable=true Callback Method Annotated with cacheable=true Valid? Action can use setStorable() in JavaScript? Is Action Response Cached on Client?
Yes Yes Yes Yes Yes
Yes No No (throws an exception) N/A N/A
No Yes Yes No (all methods must have cacheable=true) Yes
No No Yes
  • No (API version 44.0 and higher)
  • Yes (43.0 and lower)
  • No (API version 44.0 and higher)
  • Yes (43.0 and lower)