Open-source project
appbaseio/reactivesearch avatar
appbaseio/reactivesearch

ReactiveSearch: A Component Library That Hides the Query DSL Behind Search Intent

Search UI components for React and Vue. If you're using ReactiveSearch v3 (last major release), use of ReactiveSearch API over ElasticSearch's query DSL is an opt-in feature.

4,924 stars477 forksJavaScriptApache-2.0

At a glance

What is it?
ReactiveSearch is a React and Vue UI component library for Elasticsearch, OpenSearch, Solr, and MongoDB. Its v4 design shifts query generation to the server, trading direct DSL control for a more secure and simpler client.
Who is it for?
Adopt ReactiveSearch if you are building a React or Vue search interface on Elasticsearch, OpenSearch, Solr, or MongoDB and you prefer ready-made sensors and result displays over writing query DSL yourself. It fits teams that can accept the ReactiveSearch cloud dependency for query generation and that do not need fine-grained control over every query clause.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 9 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • appbaseio/reactivesearch4,924 ★ · +2
Star history
Repository2026-07-282026-11-13
appbaseio/reactivesearch4.9k4.9k

2 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The Problem ReactiveSearch Solves

Building a search UI from scratch means wiring together input fields, filters, and result lists, then translating each user interaction into an Elasticsearch query. That translation is repetitive and error prone. ReactiveSearch exists to remove that layer. It provides over 20 UI components, including lists, ranges, search boxes, result displays, charts, and an AI answer component. The intended user is a frontend developer who wants a working search interface without hand-writing the query DSL. The library is not a general UI kit. It is tied to search backends: Elasticsearch, OpenSearch, Solr, and MongoDB. The README frames it as a component library for ReactiveSearch cloud, which is a significant constraint to note from the start.

How Components Turn Interactions Into Queries

Each sensor component maps a user action to a specific query type. A SingleList applies an exact match filter on the selected item. A RangeSlider builds a numeric range query from the chosen values. A SearchBox produces a suggestions and search query from the typed term. These components do not work in isolation. The react prop lets you configure dependencies between components, so one filter can drive another. The result display components, ReactiveList and ReactiveMap, render the hits. ReactiveList supports list and card formats and allows custom rendering at both the item and the component level. ReactiveMap chooses between Google Maps and OpenStreetMaps. The key architectural claim is that the library handles the transformation of UI interactions into search intent queries. That transformation happens differently in v3 and v4, which matters for anyone upgrading or starting fresh.

The v4 Shift: Query Generation Moves to the Server

The most consequential change in ReactiveSearch v4 is that the client no longer generates the full Elasticsearch query DSL. Instead, the library sends only the search intent, and the ReactiveSearch cloud generates the actual query based on the configured search engine. The README states this is more secure and moves search business logic server-side. For v3 users, this behaviour is opt-in. You must set the enableAppbase prop to true in the ReactiveBase component, and that assumes you are using appbase.io as the backend. This is a real trade-off. You avoid exposing query details, but you lose the ability to inspect or modify the exact query that hits your search engine. If you rely on custom query clauses or performance tuning at the DSL level, this design gets in the way. The documentation points to a KitchenSink app that demonstrates the ReactiveSearch API across all components, which is the practical reference for how the intent payload looks.

Installation and First Steps

Getting started is a single npm command: npm i @appbaseio/reactivesearch. The README calls this one step installation. There is also a starter app at github.com/awesome-reactivesearch/reactivesearch-starter-app, which gives you a runnable project to modify. After installation, you typically wrap your app in a ReactiveBase component, which configures the backend connection. From there, you add sensor components like SingleList or RangeSlider, connect them with the react prop, and render results with ReactiveList. Theming is handled through a ThemeProvider, and styling can be scoped using className and innerClass props. The component playground and live demos, such as the booksearch demo and the e-commerce movie search, show what the output looks like. The demos are useful for gauging default behaviour before you write any code.

Where ReactiveSearch Is the Wrong Tool

The server-side query generation is the biggest limitation. If you are not using ReactiveSearch cloud or appbase.io, v4 forces you into that dependency for the full experience. For teams that need to keep search logic on-premises or that have strict data residency requirements, this is a blocker. Another limitation is ReactiveChart: it is only supported for React at this time. Vue users get lists, ranges, and result displays, but not the chart component. The README also notes that the library is designed to work with ReactiveSearch cloud, which suggests that some features may not behave identically with other backends. If your search requirements involve complex aggregations or per-query custom scoring that you cannot express through the component props, you will fight the abstraction.

Alternatives and the Difference in Approach

The README points to Searchbox as an alternative for other JS frameworks, React Native, or Flutter. ReactiveSearch gives you ready-made sensors that generate queries for you. For React specifically, you could also use Elastic UI or a plain Elasticsearch client with your own components, but those approaches put the query generation back on you. If you need to support React Native or Flutter, ReactiveSearch is not an option, and Searchbox is the stated path.

Maintenance, Licensing, and Upgrade Cost

The repository is under Apache-2.0, which is permissive and does not impose copyleft obligations. The default branch is next, and the last push was in October 2026, so the project is actively maintained. The latest React release is v4.3.1, and the Vue releases are at v3.5.0 and v3.4.0. The version numbers are not aligned between React and Vue, which means you cannot assume feature parity. The v3 to v4 upgrade is not trivial because the query generation model changes. The README explicitly says v3 users must opt in to the ReactiveSearch API, implying a migration path but also a behavioural change. For v4 users, the upgrade cost is tied to the ReactiveSearch API specification, which is documented separately. You should check the release notes for each component because the react prop and query behaviour may change between minor versions. The README also mentions a contributing guide and a marketplace at reactiveapps.io, which suggests an ecosystem beyond the core library.

Editorial conclusion

Adopt ReactiveSearch if you are building a React or Vue search interface on Elasticsearch, OpenSearch, Solr, or MongoDB and you prefer ready-made sensors and result displays over writing query DSL yourself. It fits teams that can accept the ReactiveSearch cloud dependency for query generation and that do not need fine-grained control over every query clause. Do not use it if you must keep all search logic client-side or if you need ReactiveChart in Vue, which is not supported. Before committing, verify that your backend choice maps cleanly to the ReactiveSearch API, test the react prop behaviour with your data shapes, and confirm that the styling and theming approach works with your design system.

Frequently asked questions

What is Reactive Search?

ReactiveSearch is a UI components library for React and Vue, designed to work with ReactiveSearch cloud, with over 20 components covering lists, ranges, search inputs, result displays, an AI answer, charts, and a way to bring an existing component into the library. The components target Elasticsearch, OpenSearch, Solr and MongoDB.

Which search engines does the ReactiveSearch UI work with?

Elasticsearch, OpenSearch, Solr and MongoDB, according to the library's own tagline. From v4 the library sends only the search intent, and ReactiveSearch cloud generates the query DSL based on the search engine you configure there.

How do I install ReactiveSearch for React?

It is a one step installation with `npm i @appbaseio/reactivesearch`. React and Vue live in separate packages under `packages/` in the monorepo, so they are installed and versioned independently, and the Vue line is currently on v3 while React is on v4.

What does the enableAppbase prop do in ReactiveSearch?

For users on v3, setting `enableAppbase` to true on the `ReactiveBase` component opts into using the ReactiveSearch API instead of Elasticsearch's query DSL, and it assumes appbase.io as the backend. From v4 the library only sends the search intent, so the opt-in is no longer a choice.

Which display components does ReactiveSearch provide?

ReactiveList for list and card formats with custom rendering, ReactiveMap for Google Maps or OpenStreetMaps, AIAnswer for retrieval augmented generation via the search engine and OpenAI models, and ReactiveChart powered by Apache E-Charts with five built-in chart types, which is supported for React only at this time.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/appbaseio-reactivesearch.svg)](https://hysenlabs.com/projects/appbaseio-reactivesearch)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/appbaseio-reactivesearch.svg)](https://hysenlabs.com/projects/appbaseio-reactivesearch)

Was this useful?