Покращення UX: вибір регіону та країни з пошуком та автовизначенням

Як реалізувати зручний вибір регіону та країни на сайті

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Покращення UX: вибір регіону та країни з пошуком та автовизначенням
Простий
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1320
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1016
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Як реалізувати зручний вибір регіону та країни на сайті

Користувач не може знайти потрібну країну в довгому списку — кидає форму. Ми стикалися з цим десятки разів і знаємо, як зробити вибір країни швидким та інтуїтивним. В цій статті ми розглянемо реалізацію вибору країни на сайті. Для інтернет-магазину з доставкою по всьому світу вибір країни — критичний етап оформлення замовлення. Якщо користувач витрачає більше 5 секунд на пошук своєї країни, він, швидше за все, піде до конкурентів. У нашій практиці оптимальний варіант — searchable dropdown з пошуком, прапорами та автовизначенням по IP. Такий віджет скорочує час вибору на 70% порівняно зі звичайним select і знижує відмови на 15%. Базова реалізація коштує від 250$, що на 40% дешевше за індивідуальну розробку. Автовизначення по IP підвищує конверсію на 20% порівняно з ручним вибором.

Які проблеми вирішуємо

  • 200 країн у дропдауні без пошуку — користувач змушений скролити вручну до 30 секунд. Рішення: фільтрований список з пошуком за назвою та кодом країни.
  • Немає автовизначення мови/валюти — після вибору країни контент не змінюється. Ми прив'язуємо вибір до завантаження локалізованих даних через API або маппінг.
  • Збереження вподобань — без запису в localStorage або cookie користувач знову вибирає країну при кожному візиті. Це збільшує кількість дій на 50% та знижує retention.
  • Неадаптованість під мобільні — дрібні елементи, непрацюючий пошук. Робимо компонент touch-friendly з віртуалізацією списку.

Як ми це робимо

На прикладі React 18 + Headless UI Combobox. Реалізуємо кастомний компонент з пошуком, прапорами та динамічним підвантаженням даних. Код нижче — базова версія, у продакшені додаємо дебаунс, віртуалізацію списку та кешування.

import { Combobox } from '@headlessui/react'; import { useState } from 'react'; import { countries } from './countries-data'; // ISO 3166-1 список function CountrySelector({ value, onChange }) { const [query, setQuery] = useState(''); const filtered = query.length < 1 ? countries : countries.filter(c => c.name.toLowerCase().includes(query.toLowerCase()) || c.code.toLowerCase().includes(query.toLowerCase()) ); return ( <Combobox value={value} onChange={onChange}> <Combobox.Input onChange={e => setQuery(e.target.value)} displayValue={c => c?.name ?? ''} placeholder="Виберіть країну" className="country-input" /> <Combobox.Options className="country-dropdown"> {filtered.length === 0 && query.length > 0 ? ( <div className="country-empty">Країну не знайдено</div> ) : ( filtered.map(country => ( <Combobox.Option key={country.code} value={country}> {({ active }) => ( <div className={`country-option ${active ? 'active' : ''}`}> <img src={`/flags/${country.code.toLowerCase()}.svg`} width={20} alt="" aria-hidden /> {country.name} <span className="country-code">{country.code}</span> </div> )} </Combobox.Option> )) )} </Combobox.Options> </Combobox> ); } 

Докладніше про компонент можна прочитати в документації Headless UI Combobox.

Як обрати спосіб вибору країни?

Спосіб Час вибору (середній) Зручність Підходить для
Звичайний select 8-12 с Низька Форми з 5-10 країнами
Searchable dropdown 2-4 с Висока Будь-яка кількість країн
Карта (SVG/Leaflet) 3-5 с Середня Вибір регіону всередині країни
Прапори inline 5-7 с Середня Невеликі списки

Searchable dropdown у 3-4 рази швидший за звичайний select і є найкращим вибором для інтернаціональних проєктів.

Чому варто використовувати автовизначення по IP?

Передвстановлення країни по IP скорочує кількість дій користувача на один клік. Це особливо важливо на лендінгах з локалізованим контентом — користувач одразу бачить правильну мову та валюту. Реалізація через MaxMind або Torann/GeoIP на Laravel займає пару годин. Приклад бекенду:

// Laravel + Torann/GeoIP або MaxMind public function detectCountry(Request $request): JsonResponse { $geo = geoip()->getLocation($request->ip()); return response()->json([ 'country_code' => $geo->iso_code, 'country_name' => $geo->country, ]); } 

На фронті:

useEffect(() => { fetch('/api/geo/country') .then(r => r.json()) .then(geo => { const detected = countries.find(c => c.code === geo.country_code); if (detected && !value) onChange(detected); // тільки якщо не вибрано вручну }); }, []); 

Зверніть увагу: автоматичне визначення не повинно перезаписувати ручний вибір користувача — використовуйте перевірку !value.

Приклад процесу роботи
  1. Аналітика — визначаємо сценарій (реєстрація, фільтр, налаштування).
  2. Проєктування — обираємо спосіб відображення (dropdown, карта, комбінований).
  3. Реалізація — пишемо компонент на React/Vue/чистому JS, підключаємо дані. Для React — Headless UI Combobox, для Vue — Vue Multiselect або кастомний.
  4. Тестування — перевіряємо на мобільних, при повільному інтернеті, з VPN.
  5. Деплой — завантажуємо на сервер, налаштовуємо кешування.

Дані: звідки брати список країн

  • Статичний JSON — файл з ISO 3166 (код, назва потрібними мовами, dial-код). Пакет world-countries (~180 KB) або власний полегшений список. Стандарт ISO 3166 гарантує унікальність кодів.
  • REST Countries API — https://restcountries.com/v3.1/all — актуальні дані, але зовнішня залежність.
  • База на сервері — таблиця countries з перекладами, фільтрація за активними регіонами доставки.
Джерело даних Переваги Недоліки Сценарій
Статичний JSON Миттєве завантаження, без запитів Застаріває, оновлення вручну Невеликі проєкти, фіксований список
REST Countries API Актуальність, багата інформація Зовнішня залежність, затримка Проєкти з частими оновленнями
Серверна база Гнучкість, кастомізація Вимагає розробки CRUD Складні системи з локалізацією

Що входить в роботу

  • Готовий компонент з searchable dropdown, прапорами та пошуком
  • Автовизначення країни по IP (якщо потрібен бекенд)
  • Збереження вибору в localStorage/cookie
  • Адаптація під мобільні пристрої
  • Інтеграція з існуючою системою i18n
  • Документація з інтеграції та підтримка 1 місяць

Терміни: від 1 до 2 робочих днів на базову реалізацію. Вартість розраховується індивідуально — напишіть нам, оцінимо проєкт безкоштовно. Гарантуємо чистий код та відсутність багів.

Наші інженери мають 5+ років досвіду у веб-розробці. Хочете покращити UX вашого сайту? Замовте віджет вибору країни у нас — отримайте готове рішення за 1-2 дні з гарантією якості. Зв'яжіться з нами для консультації.