provideHeadless | Yext Hitchhikers Platform
The provideHeadless
function provides a newly created SearchHeadless
instance that can be used in any nested components when added to a
SearchHeadlessProvider
.
Basic Example
provideHeadless
is used in conjunction with the SearchHeadlessProvider
. The apiKey
, experienceKey
, and locale
fields are required to create a new SearchHeadless
instance.
The apiKey
and experienceKey
can be found in the platform by navigating to Search > [Your Search Experience] > General Settings.
Here is an example of component used to wrap templates in Yext Pages:
import {
provideHeadless,
SearchHeadlessProvider
} from "@yext/search-headless-react";
const searcher = provideHeadless({
apiKey: YEXT_PUBLIC_SEARCH_API_KEY,
experienceKey: "ecomm-search",
locale: "en",
});
const Main = ({ children }: { children: React.ReactNode }) => {
return (
<SearchHeadlessProvider searcher={searcher}>
{children}
</SearchHeadlessProvider>
);
};
Initial Search Mode
By default, SearchHeadless
will be in Universal search mode. This means that all searches triggered from the SearchBar
component will be universal queries. To change the default SearchBar
behavior, you can provide a verticalKey
to provideHeadless
:
import { provideHeadless } from "@yext/search-headless-react";
const searcher = provideHeadless({
apiKey: YEXT_PUBLIC_SEARCH_API_KEY,
experienceKey: "ecomm-search",
locale: "en",
verticalKey: "products"
});
Using Sandbox Accounts
If you’re using a Yext sandbox account, you will need to import Environment
from @yext/search-headless-react
and pass the Sandbox environment to the environment
prop in your <SearchHeadlessProvider />
.
import {
provideHeadless,
Environment,
SandboxEndpoints
} from "@yext/search-headless-react";
const searcher = provideHeadless({
apiKey: YEXT_PUBLIC_SEARCH_API_KEY,
experienceKey: "ecomm-search",
locale: "en",
environment: Environment.SANDBOX
});
Adding Additional Search Headless Instances
You may want to add additional SearchHeadless
instances to a site. Examples include when you want both a product and support search bar on the same page or when you are implementing
visual autocomplete
.
When you create additional instances, you need to be sure to include a unique headlessId
when calling provideHeadless
.
import * as React from "react";
import { provideHeadless } from "@yext/search-headless-react";
const entityPreviewSearcher = provideHeadless({
apiKey: YEXT_PUBLIC_SEARCH_API_KEY,
experienceKey: "ecomm-search",
locale: "en",
headlessId: "entity-preview-searcher"
});
SearchHeadless
instance you add to your site will have an ID of main
which is why you only need to add the field when you make additional calls to provideHeadless
.
Component API
Checkout the component properties on Github .