npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@geoapify/react-geocoder-autocomplete

v3.0.0

Published

React component for the Geoapify Geocoder Autocomplete field

Readme

React Geocoder Autocomplete

Docs

The React Geocoder Autocomplete component integrates the core @geoapify/geocoder-autocomplete library into React. It provides an easy-to-use React wrapper for the Geoapify Geocoding Autocomplete API, allowing developers to add advanced, localized, and flexible address search functionality to their applications.

React Geocoder Autocomplete Screenshot

Table of Contents

Features

  • Simple React integration with a ready-to-use component.
  • Fast, responsive incremental search with built-in debounce.
  • Localized suggestions with support for multiple languages and country filters.
  • Flexible configuration: biasing, filtering, and bounding boxes.
  • Customizable design: easily style or theme your component.
  • Accessible with keyboard navigation and ARIA support.
  • Rich results including coordinates, structured address, and metadata.
  • Compatible with React 18–19.

Quick Start

You'll need a Geoapify API key to use the component.

  1. Register for a free account at myprojects.geoapify.com.
  2. Create a project to obtain your API key.
  3. You can start for free — Geoapify offers a generous Freemium plan.

1. Install

npm install @geoapify/geocoder-autocomplete @geoapify/react-geocoder-autocomplete
# or
yarn add @geoapify/geocoder-autocomplete @geoapify/react-geocoder-autocomplete

Get a Geoapify API key: https://myprojects.geoapify.com

2. Import styles and components

Import the CSS style file from @geoapify/geocoder-autocomplete and the React components from @geoapify/react-geocoder-autocomplete:

import '@geoapify/geocoder-autocomplete/styles/minimal.css';
import {
  GeoapifyContext,
  GeoapifyGeocoderAutocomplete
} from '@geoapify/react-geocoder-autocomplete';

Themes: minimal, round-borders, minimal-dark, round-borders-dark.

3. Add GeoapifyContext

Wrap your component with the GeoapifyContext and provide your API key:

<GeoapifyContext apiKey="YOUR_GEOAPIFY_API_KEY">
  {/* Your components go here */}
</GeoapifyContext>

Tip: Store your API key in an environment variable and reference it as process.env.REACT_APP_GEOAPIFY_KEY for better maintainability.

4. Use the component

Basic:

<GeoapifyGeocoderAutocomplete />

With events and common options:

<GeoapifyGeocoderAutocomplete
  placeholder="Search for an address"
  lang="en"
  limit={8}
  addDetails={true}
  placeSelect={onPlaceSelected}
  suggestionsChange={onSuggestionsChange}
/>
const onPlaceSelected = (feature) => {
  console.log('Selected:', feature?.properties?.formatted);
};

const onSuggestionsChange = (list) => {
  console.log('Suggestions:', list);
};

Compatibility

| @geoapify/react-geocoder-autocomplete | React Version | | ------------------------------------- | -------------------- | | 1.0.x – 1.1.x | >= 16.8.0 | | 1.2.x – 1.3.x | >= 17.0.0 | | 1.4.x – 1.5.x | >= 18.0.0 | | 2.0.x – 2.2.x | >= 18.0.0, <= 19.x.x | | 3.0.x | >= 19.0.0, <= 19.x.x |

If you prefer to use the library directly without React bindings, check the Standalone Usage section.

Documentation

Full documentation — including configuration options, detailed examples, and migration instructions — is available online at:

View Full Documentation

On the documentation site you'll find:

  • A guided Quick Start to get the component running in minutes.
  • A complete API Reference coverage of all props and callbacks.
  • A dedicated Examples section with real-world scenarios (filters, biasing, category search, hooks).
  • Guides for Standalone Usage of the underlying @geoapify/geocoder-autocomplete library.

The component includes many options for configuration and customization. Below are the most commonly used properties that cover typical address autocomplete use cases:

| Property | Direction | Description | | --------------------- | --------- | --------------------------------------------------------------------------------- | | placeholder | Prop | Sets the placeholder text for the input field. | | type | Prop | Defines the type of location to search for — e.g. city, street, or amenity. | | lang | Prop | Sets the language of suggestions and results. | | limit | Prop | Limits the number of suggestions displayed. | | debounceDelay | Prop | Adds a short delay before sending requests, improving performance. | | filterByCountryCode | Prop | Restricts search results to selected countries. | | biasByProximity | Prop | Prioritizes results near a specific location (latitude/longitude). | | addDetails | Prop | Returns detailed information such as boundaries and place metadata. | | skipIcons | Prop | Hides icons in the suggestion list for a minimal look. | | placeSelect | Callback | Triggered when a user selects an address from suggestions. | | suggestionsChange | Callback | Emits updated suggestions while typing. | | onUserInput | Callback | Fires on each user input change. |

Examples

1. Basic Address Search

<GeoapifyContext apiKey="YOUR_API_KEY">
  <GeoapifyGeocoderAutocomplete
    placeholder="Search for an address"
    placeSelect={onPlaceSelected}
  />
</GeoapifyContext>
const onPlaceSelected = (place) => {
  console.log('Selected place:', place?.properties?.formatted);
};

Used properties: placeholder, placeSelect

2. Restrict Results to Specific Country

<GeoapifyContext apiKey="YOUR_API_KEY">
  <GeoapifyGeocoderAutocomplete
    filterByCountryCode={['us']}
    placeSelect={onPlaceSelected}
  />
</GeoapifyContext>

Restricts suggestions to a list of countries using ISO country codes.

Used properties: filterByCountryCode, placeSelect

3. Limit Search to Area (Berlin Example)

<GeoapifyContext apiKey="YOUR_API_KEY">
  <GeoapifyGeocoderAutocomplete
    filterByRect={{ lon1: 13.0884, lat1: 52.3383, lon2: 13.7611, lat2: 52.6755 }}
    placeSelect={onPlaceSelected}
  />
</GeoapifyContext>

This configuration restricts search results to the Berlin area.

Used properties: filterByRect, placeSelect

4. Bias Results by User Location

import { useState, useEffect } from 'react';

const [userLocation, setUserLocation] = useState(null);

useEffect(() => {
  navigator.geolocation.getCurrentPosition((pos) => {
    setUserLocation({
      lon: pos.coords.longitude,
      lat: pos.coords.latitude
    });
  });
}, []);
<GeoapifyContext apiKey="YOUR_API_KEY">
  <GeoapifyGeocoderAutocomplete
    biasByProximity={userLocation}
    placeSelect={onPlaceSelected}
  />
</GeoapifyContext>

Prioritizes nearby results without strictly limiting the search area.

Used properties: biasByProximity, placeSelect

5. Using Hooks for Custom Input and Suggestions

<GeoapifyContext apiKey="YOUR_API_KEY">
  <GeoapifyGeocoderAutocomplete
    preprocessHook={preprocessInput}
    suggestionsFilter={filterSuggestions}
  />
</GeoapifyContext>
const preprocessInput = (value) => {
  return `${value}, Berlin`;
};

const filterSuggestions = (suggestions) => {
  return suggestions.filter(s => s.properties.result_type === 'street');
};

Used properties: preprocessHook, suggestionsFilter

6. Add Details for Selected Place

<GeoapifyContext apiKey="YOUR_API_KEY">
  <GeoapifyGeocoderAutocomplete
    addDetails={true}
    placeholder="Search for a city"
    placeSelect={onPlaceSelected}
  />
</GeoapifyContext>

Adds boundary or geometry data (where available) to the selected feature.

Used properties: addDetails, placeSelect

7. Enable Category (POI) Search

<GeoapifyContext apiKey="YOUR_API_KEY">
  <GeoapifyGeocoderAutocomplete
    addCategorySearch={true}
    showPlacesByCategoryList={true}
    placesByCategoryFilter={{ categories: ['cafe', 'restaurant'] }}
    onPlaceByCategorySelect={onPoiSelected}
  />
</GeoapifyContext>
const onPoiSelected = ({ place, index }) => {
  console.log('Selected POI:', place.properties.name, 'at index', index);
};

Enables category-based search for nearby Points of Interest (POIs) below the input field, filtered by category.

Used properties: addCategorySearch, showPlacesByCategoryList, placesByCategoryFilter, onPlaceByCategorySelect

8. Show Loading Indicator While Searching

import { useState } from 'react';

const [loading, setLoading] = useState(false);

<div className="autocomplete-wrapper">
   <GeoapifyContext apiKey="YOUR_API_KEY">
    <GeoapifyGeocoderAutocomplete
      onRequestStart={() => setLoading(true)}
      onRequestEnd={() => setLoading(false)}
      placeSelect={onPlaceSelected}
    />
  </GeoapifyContext>

  {loading && <div className="loading-spinner">Loading...</div>}
</div>

Used properties: onRequestStart, onRequestEnd

9. Clear Selection

<GeoapifyContext apiKey="YOUR_API_KEY">
  <GeoapifyGeocoderAutocomplete
    onClear={onClear}
    placeholder="Search address"
  />
</GeoapifyContext>
const onClear = (item) => {
  console.log('Selection cleared:', item);
};

Used properties: onClear

10. Combine Filters and Bias

<GeoapifyContext apiKey="YOUR_API_KEY">
  <GeoapifyGeocoderAutocomplete
    filterByCountryCode={['DE']}
    biasByProximity={{ lon: 13.405, lat: 52.52 }}
    addDetails={true}
    placeSelect={onPlaceSelected}
  />
</GeoapifyContext>

Combines multiple parameters — country restriction, local bias, and detailed output — for refined search results.

Used properties: filterByCountryCode, biasByProximity, addDetails, placeSelect

Learn More

Contributions and Support

We welcome feedback, bug reports, and feature suggestions to improve the library.

Contributing

If you'd like to contribute:

  1. Fork the repository on GitHub.
  2. Create a feature branch (git checkout -b feature/your-feature-name).
  3. Make your changes and ensure the code follows React and TypeScript best practices.
  4. Submit a pull request with a clear description of your changes.

Before contributing, please review the existing issues and documentation to avoid duplicates.

Reporting Issues

If you encounter a bug or unexpected behavior, please open an issue on GitHub. When submitting an issue, include:

  • A short description of the problem
  • Steps to reproduce
  • Expected vs. actual results
  • React and package versions

Getting Support