<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SuggestedActions",
  "identifier" : "/documentation/SuggestedActions/SuggestedActionsView/generate(message:previousMessages:)",
  "metadataVersion" : "0.1.0",
  "role" : "Type Method",
  "symbol" : {
    "kind" : "Type Method",
    "modules" : [
      "Suggested Actions",
      "SuggestedActions"
    ],
    "preciseIdentifier" : "s:16SuggestedActions0aB4ViewV8generate7message16previousMessagesyAA0aB7MessageV_SayAHGtYaFZ"
  },
  "title" : "generate(message:previousMessages:)"
}
-->

# generate(message:previousMessages:)

Fetches and caches suggested actions for the provided message.

```
nonisolated static func generate(message: SuggestedActionsMessage, previousMessages: [SuggestedActionsMessage] = []) async
```

## Parameters

`message`

The message that you want to generate suggested actions for.

`previousMessages`

An array of messages that precede the provided `message`.
The Suggested Actions framework uses them as context to generate suggested actions for the `message`. The system
limits the number of previous messages it considers to the value of [`previousMessagesLimit`](/documentation/SuggestedActions/SuggestedActionsMessage/previousMessagesLimit).
This parameter defaults to an empty array if you don’t include previous messages.

## Discussion

Call this method ahead of presenting a [`SuggestedActionsView`](/documentation/SuggestedActions/SuggestedActionsView) to generate
and cache suggested actions for future use. When you later initialize the view
with a [`SuggestedActionsMessage`](/documentation/SuggestedActions/SuggestedActionsMessage) that has a matching `id`, the view uses the cached result
and renders immediately without displaying a loading indicator.

Generate suggested actions for future use when you know that a person is likely to see them
soon, for example, when someone opens a conversation.

You can call this method multiple times with different messages.
Within a single conversation, the framework deduplicates suggestions:
If a suggested action appears for an earlier message, it
doesn’t appear again for later messages.

The following example shows how an app might use a `ChatManager` class
that processes an incoming message and creates a suggested actions view:

```swift
@Observable
class ChatManager {
    private(set) var messages: [ChatMessage] = []

    // Process a new incoming message and generate suggested
    // actions to let the Suggested Actions framework cache them for future use.
    func handleIncomingMessage(_ newMessage: ChatMessage) async {
        await SuggestedActionsView.generate(
            message: newMessage.suggestedActionsMessage,
            previousMessages: newMessage.previousMessages
                .suffix(SuggestedActionsMessage.previousMessagesLimit)
                .map(\.suggestedActionsMessage)
        )
        messages.append(newMessage)
    }
}
```

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)