Skip to main content
Version: Stable (v5.x)

Modal API reference

DocSearchButton​

type: React.ComponentType<DocSearchButtonProps>

Renders the search trigger. It runs your onClick handler, then opens the modal through the nearest DocSearch provider.

DocSearchButtonProps accepts standard React button props and the following prop. Configure theme and keyboardShortcuts on DocSearch, not on this component.

translations​

type: { buttonText?: string; buttonAriaLabel?: string } | optional

Sets the visible and accessible button text. Both values default to English labels.

DocSearchModal​

type: React.ComponentType<DocSearchModalProps>

Renders a keyword-search modal when its provider is active. It renders in document.body unless you set portalContainer.

Required props​

appId​

type: string | required

Algolia application ID.

apiKey​

type: string | required

Public API key with search permission.

indices​

type: Array<string | DocSearchIndex> | required

Indices to search. You can omit this prop only if you use the deprecated indexName.

Search props​

indexName​

type: string | optional | deprecated

Sets one index to search. Use indices instead.

facets​

type: Array<{ key: string; label?: string }> | optional

Adds filter controls that use facet values from the configured indices. Defaults to [].

placeholder​

type: string | optional

Sets the search input placeholder. Defaults to Search docs. A translation can override this value.

searchParameters​

type: SearchParamsObject | optional | deprecated

Merges parameters into search requests. Set parameters on each indices entry instead.

maxResultsPerGroup​

type: number | optional

Limits the displayed hits in each result group.

transformItems​

type: (items: DocSearchHit[]) => DocSearchHit[] | optional

Changes hits before rendering. Defaults to the identity function.

transformSearchClient​

type: (client: DocSearchTransformClient) => DocSearchTransformClient | optional

Wraps or changes the search client. Defaults to the identity function.

type: AutocompleteOptions['navigator'] | optional

Controls link navigation.

insights​

type: AutocompleteOptions['insights'] | optional

Configures Algolia Insights. Defaults to false.

resultBadgeKey​

type: string | optional

Reads a hit property and displays it as a result badge. Include the property in attributesToRetrieve.

Rendering and behavior props​

initialQuery​

type: string | optional

Prefills the search input. This value takes precedence over the provider value and defaults to '' if neither value is set.

portalContainer​

type: DocumentFragment | Element | optional

Receives the modal portal. Defaults to document.body.

hitComponent​

type: (props) => JSX.Element | optional

Renders an individual result. Defaults to the built-in hit component.

resultsFooterComponent​

type: (props) => JSX.Element | null | optional

Renders content below the results. Defaults to null.

footerAction​

type: React.ReactNode | optional

Renders a custom element in the modal footer, before the "Powered by Algolia" logo. Passing null renders nothing.

disableUserPersonalization​

type: boolean | optional

Disables storing and using recent and favorite searches. Defaults to false.

recentSearchesLimit​

type: number | optional

Limits saved and displayed recent searches. Defaults to 7.

recentSearchesWithFavoritesLimit​

type: number | optional

Limits recent searches when favorites exist. Defaults to 4.

getMissingResultsUrl​

type: ({ query }: { query: string }) => string | optional

Builds the missing-results report URL.

translations​

type: ModalTranslations | optional

Supplies partial strings for searchBox, footer, facets, errorScreen, startScreen, noResultsScreen, and resultsScreen. Defaults to {}.

DocSearchModal receives theme, keyboardShortcuts, and close behavior from the provider. It doesn't accept these props directly.

DocSearchIndex​

name​

type: string | required

Index to search.

searchParameters​

type: SearchParamsObject | optional

Sets search parameters for this index.

DocSearchAskAiModal​

type: React.ComponentType<DocSearchAskAiModalProps>

Renders the Agent Studio-enabled modal. It accepts every DocSearchModal prop, requires askAi, and adds Agent Studio translations.

askAi​

type: string | DocSearchAskAi | required

Sets the Agent Studio agent ID or the complete Agent Studio configuration.

interceptAskAiEvent​

type: (message: InitialAskAiMessage) => boolean | void | optional

Runs before the default Ask AI action. Return true to prevent the action.

translations​

type: DocSearchAskAiModalTranslations | optional

Adds askAiScreen, newConversation, and Agent Studio search-box strings to the search translations. Defaults to {}.

The component receives its active state and close behavior from DocSearch. It doesn't accept isAskAiActive, isHybridModeSupported, onAskAiToggle, onClose, theme, or keyboardShortcuts. See Hybrid Mode for cross-view behavior.

DocSearchAskAi​

The object form of askAi. It accepts the following fields.

assistantId​

type: string | required

Agent Studio agent ID.

appId​

type: string | optional

Overrides the root appId for Agent Studio.

apiKey​

type: string | optional

Overrides the root apiKey for Agent Studio.

indexName​

type: string | optional

Sets the index for conversation storage and Agent Studio requests. Defaults to the first root index.

suggestedQuestions​

type: boolean | optional

Shows configured suggested questions on the new-conversation screen. Defaults to false.

searchParameters​

type: Record<string, AgentStudioIndexSearchParameters> | optional

Sends search parameters keyed by index name. AgentStudioIndexSearchParameters supports filters, attributesToRetrieve, restrictSearchableAttributes, and distinct. It doesn't support facetFilters.

indices​

type: string[] | optional

Index names available to Agent Studio search tools. Put descriptions and tool defaults on the agent configuration. Put per-index runtime overrides in searchParameters.

tools​

type: Record<string, ToolDefinition> | optional

Handles and renders custom Agent Studio tools. Defaults to {}.

memory​

type: { enabled?: boolean; userToken?: string } | optional

Displays memory tool activity and sends a secure user token.

promptSuggestions​

type: { indexName: string; hitsPerPage?: number } | optional

Configures prompt suggestions in keyword search. hitsPerPage defaults to 3.

Custom tools​

Each ToolDefinition accepts the following fields:

render​

type: (params: { message: { input: unknown; output: unknown } }) => string | required

Renders the tool input and output.

onToolCall​

type: (params: ToolCallParameters) => Promise<void> | void | optional

Handles a client-side tool call. ToolCallParameters includes input, addToolOutput, toolCallId, toolName, and the optional dynamic flag.

translations​

type: { callingToolText?: string } | optional

Overrides the text shown while the tool runs.

When onToolCall handles a client-side tool, call addToolOutput with the result. Define the tools object outside your component or memoize it to keep its identity stable.

Memory​

Set memory.enabled to render Agent Studio memory tool calls. Set memory.userToken to send the JSON Web Token (JWT) as the x-algolia-secure-user-token request header.

Generate the JWT on your server. Don't put signing secrets in browser code.

Exports​

Import pathValue exportsType exports
@docsearch/modalDocSearchButton, DocSearchModal, DocSearchAskAiModalDocSearchButtonProps, DocSearchModalProps, DocSearchAskAiModalProps
@docsearch/modal/buttonDocSearchButtonDocSearchButtonProps
@docsearch/modal/modalDocSearchModalDocSearchModalProps
@docsearch/modal/askaiDocSearchAskAiModalDocSearchAskAiModalProps