The frontend of Search controls what the user sees when they ask a question, including how the results page is structured, what each results card looks like, and other optional components like facets. The Search Frontend Theme is the low-code option that allows you to quickly build a frontend using JSON, HTML, CSS, and JavaScript. It must be connected to a Search backend to populate search results.
Components of the Frontend
There are three components of the Search Frontend Theme: the Search UI SDK, the Theme, and Jambo.
The Search UI SDK JavaScript Library
The Search UI SDK is the JavaScript library of components that define the frontend Search experience, such as the Search Bar, Universal Search Results, and Direct Answers.
The Theme
The Theme is a bundled package of files and code templates that sets up the basic structure and functionality for an entire Search experience.
To access the Theme, you must use a solution template called the "Search Jambo Template." A solution template is a pre-built configuration you can apply to your account. The Search Jambo Template contains the Answers Hitchhiker Theme — all the files and code structure for results pages and result cards. The Theme files translate the configuration files in your code repository to use the Search UI SDK components, so you don't have to manually add or create components from scratch. From there, you can add customizations like changing branding or adding custom cards.
Jambo
Jambo is a static site generator that takes all the files in your repository — including theme files, templates, and customizations — and creates the static HTML pages that an end user actually sees. Jambo also provides commands that enable you to easily interact with the theme, such as by adding verticals, adding cards, and overriding the theme. Because the theme itself is complex and fragile, Jambo handles direct manipulation by creating copies of the theme template files for you.
The Jambo Build Process
If you're building a Search experience with the Theme and Jambo, you'll go through these steps:
- Create a repository that houses your code.
- Update files in that repository.
- Preview those changes locally.
- Commit your changes.
- The system attempts to "build."
- The system "deploys" or "publishes."
Jambo and Jamstack
At its core, Jambo is a static site generator (SSG) that relies on the JAM architecture (Jamstack | JavaScript, APIs, and Markup). Written in JavaScript, Jambo operates on a set of JSON files and Handlebars templates to produce static HTML files that can be served from a CDN.
Why Jamstack?
- Better performance. Pages are generated at deploy-time and delivered over a CDN — the most recent version of every page is accessible from multiple points of presence across the globe, delivering fast page load speed and continuous updates.
- Lower cost of scaling. A Jamstack web app uses fewer resources since servers and databases are not necessarily needed. CDNs also help with scalability by serving deployments from anywhere.
- Better security. Traditional server-side applications expose lots of APIs and services, all at risk of attack. With Jamstack, you're using static files — read-only and not susceptible to the same types of attacks. There is no code to run and therefore no vulnerabilities to exploit.
- Better developer experience. There is no tight coupling between the application backend and frontend, giving developers more targeted development and debugging.
For additional reading: jamstack.org/resources, jamstack.wtf, snipcart.com/blog/jamstack
Jambo vs. the Theme
Jambo itself doesn't know anything about the Yext Search UI SDK. Its sole purpose is to build the website quickly, efficiently, and easily from static templates. The backend servers exist only to provide data to the page — in this case, search results from the search system.
The Theme is where all the knowledge about setting up the SDK and API lives. Think of the Theme as an architect and Jambo as the contractor. The architect specifies the overall design with blueprints; the contractor takes materials and blueprints and produces the finished product. The Theme leverages Jambo's templating power to convert intuitive markup and configuration files into raw HTML files that make all the needed calls to the Search UI SDK. It takes all of the complexity out so that you don't need to be a developer to build an experience.
Jambo Commands
To do things like add pages or override the theme, you will use "Jambo Commands." Jambo is a Command-Line Interface (CLI) — in the Yext UI you're using it under the hood in the Code Editor. You can access Jambo Commands by clicking on Tools > Jambo Commands in the Code Editor.
Jambo has a number of built-in commands, and the Answers Hitchhikers Theme adds additional custom commands to make developing Search faster and easier.
| Command | Description |
|---|---|
Add Card |
Fork a card from the theme and customize it. Use this to modify a card's layout or data mappings. |
Add Direct Answer Card |
Fork a Direct Answers Card from the theme. Use this to modify how direct answers are handled by entity type or field type, or to modify the featured snippet card. |
Add Page |
Add a page to your search experience. You'll choose a page layout from the theme (e.g., universal-standard or vertical-grid). You'll need to manually add things like verticalKey and cardType after the file is created. |
Add Vertical |
A faster way to add vertical pages by creating the page and setting verticalKey and cardType all at once. Only available on Theme 1.20 or later. |
Build Pages |
Runs Jambo Build. This should automatically trigger when you change a relevant file if you are using the typical Jambo/Theme setup. |
Override Theme |
Creates a local copy of a theme file that you can then safely edit. |
Upgrade Theme |
Upgrade to the latest version of the theme. Defaults to the master branch (recommended), but advanced users can choose a branch still under development. |
Extract Translations |
Extract translation strings into a .pot file for use with a translation service like Smartling. |
Initialize Jambo |
Use this when starting from a fully blank repo to add the scaffolding Jambo needs for a build to work. Follow with Import Theme. |
Import Theme |
Use with Initialize Jambo when starting from a fully blank repo to import the Frontend Theme. |
Create a Pages Site with Jambo
Search frontends are housed in the Pages architecture. Out of the box, Yext uses Git to manage your Search code. When you're ready to build a search experience, you'll create a Git repository in GitHub by creating a site in Pages and adding a repository with the Search Jambo Template, which generates a GitHub repository with all the pre-built files you need. In many cases, this step will be done for you if you are starting with a Hitchhikers Challenge or a Solution Template.
- Click Pages in the navigation bar and click All Sites.
- Click Add New Site in the top right corner.
-
In the Add a New Site modal, choose Pages or Classic Pages Site (Legacy). Yext recommends the standard Pages path. Steps differ depending on the option:
Pages:
-
Choose where to store your repository. When building with Jambo and the Theme, select the option for Yext to manage the GitHub repo.

- Click Next.
- Fill in the name of your site. This is only shown internally.
- Select Create New Repository.
- Name your repo. This will be the name of the GitHub repo associated with the site. It is automatically filled in based on your site name and account ID.
- Keep Search Jambo Template selected. This creates a repo with all the files you need to build your Search frontend.
-
Click Create Site. You'll see a build in progress. Once it completes successfully, you'll have your first deploy with links for preview, staging, and production.

Classic Pages (Legacy):
- At the bottom of the Add New Site modal, click the add a Classic site link.
- Enter the name of your site.
-
Click Continue. You will be directed to the Site screen.

- Click Create Repository at the bottom of the screen.
- Enter the name of your repo.
- Keep Search Jambo Template selected.
- Click Continue.
-
- Now you are ready to open the Code Editor and start building your experience.