блог

Справочник Shopify

Конфликты темы и приложений Shopify и польза регулярного сопровождения

Ошибка исчезла после отключения приложения, но найдена ли причина? Разбираю диагностику конфликтов Shopify, проверку покупки после исправлений и пользу сопровождения по подписке.

Вопрос о конфликте приложений редко приходит к нам в технически точной формулировке. Обычно владелец замечает другое: покупатель выбрал размер, а в корзине оказался прежний вариант; кнопка добавления срабатывает через раз; после обновления появилась вторая корзина. Магазин открывается, каталог на месте, но доверять привычному пути покупки уже сложно.

В IceStoreGroup мы регулярно занимаемся такими задачами по подписке на сопровождение. И я считаю важным объяснять, за что в этой работе платит бизнес. Устранить конкретный сбой необходимо. Но ещё полезнее сохранить понимание того, как магазин устроен, какие изменения в нём происходят и что нужно проверять после каждого из них. Тогда очередная проблема не превращается в расследование с нуля.

Поводом вернуться к этой теме стало обсуждение в Shopify Community. Автор спрашивает, как найти причину конфликтов темы, приложений и собственного кода, не отключая всё подряд. Вопрос практический: магазин должен продолжать продавать, пока специалист ищет источник ошибки.

Исчезнувшая ошибка ещё не объясняет причину

В ответах DiegoCosta2428 предлагает работать с копией темы, последовательно отключать встроенные модули приложений и смотреть запросы браузера. NoahMueller советует сначала зафиксировать страницу, вариант товара, устройство и воспроизводимые действия. На момент проверки ветки 23 октября 2026 года подтверждённого исправления конкретного магазина в ней нет. Это полезные советы для диагностики, а не доказанный разбор причины.

Мне особенно близка мысль о точном сценарии. Фраза «сломалась корзина» слишком широка. Совсем другое описание: на телефоне после выбора второго размера кнопка добавляет первый, а после перезагрузки тот же товар добавляется правильно. Такое наблюдение уже позволяет сравнивать результаты.

А вот вывод «отключили приложение, ошибка пропала, значит виновато приложение» я бы не принимал без проверки. Вместе с приложением могла исчезнуть сама функция, на которой проявлялся сбой. Мог измениться порядок выполнения кода. Возможно, тема и приложение по отдельности работают правильно, но оба управляют одним элементом страницы.

Для бизнеса разница существенная. Убрать дополнительное предложение из корзины и убрать ошибку в дополнительном предложении — разные результаты. Я хочу сохранить полезную функцию, если она действительно нужна магазину, и разобраться, что мешает ей работать.

IceStoreGroup · Telegram

Больше о Shopify и развитии интернет-магазинов

Новости Shopify, практические советы и полезные инструменты для продавцов – в нашем Telegram-канале.

Подписаться на канал

Сначала нужно отделить наблюдение от предположения

Я бы начал с короткой записи: адрес страницы, товар и вариант, количество, язык или рынок, устройство, браузер, последовательность действий и ожидаемый результат. Добавил бы время первого замеченного сбоя и последние изменения. Это занимает меньше времени, чем переписка, в которой каждый участник представляет свою версию проблемы.

Затем важно воспроизвести ошибку и найти сценарий для сравнения: другой товар с тем же шаблоном, другой браузер, повторение без расширений. В рекомендациях Shopify по поиску неисправностей темы есть проверки в приватном окне, на другом устройстве и с другой темой. Я рассматриваю их как способ сузить поиск. Работающая чистая тема ещё не доказывает, что всю текущую тему нужно заменить: вместе с ней изменились настройки, подключённые элементы и код.

Дальше полезно понять, какие компоненты вообще участвуют в проблемном действии. Shopify поддерживает блоки приложений, встроенные модули и подключения через код темы. Поэтому список установленных приложений сам по себе не описывает всё, что выполняется на странице.

Я рекомендую вести простую карту подключений: что делает компонент, где он включён, какие элементы меняет и кто отвечает за настройку. Этот подход мы также разбирали в статье о приложениях, счётчиках и скорости магазина. Для поиска конфликтов такая карта помогает избежать случайных отключений.

Границы проверки в копии темы

Изменения кода и настроек темы разумно сначала проверять в неопубликованной копии. Но копия темы не равна отдельному магазину. Если для эксперимента поменять общие настройки приложения, товары или другие параметры магазина, это может затронуть и действующую витрину. До проверки нужно определить, где именно хранится изменяемая настройка и как вернуть прежнее состояние.

Я предпочитаю менять один фактор за раз. Сначала повторяем сбой в исходном состоянии. Затем меняем подозреваемое подключение и повторяем тот же сценарий. Если безопасно, возвращаем исходное состояние и проверяем, возвращается ли ошибка. Для нестабильного сбоя одного успешного нажатия недостаточно.

Полное удаление приложения для такого эксперимента часто избыточно. Shopify предупреждает, что после удаления может остаться код в теме, зависимые процессы могут остановиться, а данные или настройки не обязательно восстановятся при повторной установке. Поэтому начинать лучше с обратимой настройки, границы действия которой понятны.

Если заказы уже не проходят, сначала нужен согласованный способ восстановить продажу: например, вернуть проверенную версию темы, когда это действительно устраняет сбой. После восстановления расследование стоит довести до причины. Иначе следующее обновление может вернуть ту же проблему.

Что говорят запросы браузера и чего они не доказывают

Технический анализ должен отвечать на понятный вопрос: что произошло после действия покупателя? В панели Network инструментов Chrome можно посмотреть отправленные данные, ответ сервера и инициатор запроса. Это помогает связать нажатие кнопки с конкретным выполнением кода.

Например, ответ 422 при добавлении товара сам по себе не доказывает конфликт JavaScript. В документации Shopify Cart API такой ответ описан, в частности, для недоступного товара или превышения доступного количества. Нужно прочитать ответ, проверить переданный вариант и состояние товара. Иначе специалист может исправлять кнопку, которая правильно показывает отказ сервера.

Два запроса добавления тоже требуют объяснения. Их могли отправить разные компоненты, повторно запущенный обработчик одного компонента или механизм повтора. Количество запросов — наблюдение; источник и условия их появления — то, что ещё предстоит установить.

Иногда полезна локальная блокировка запросов в Chrome DevTools. Она помогает проверить гипотезу без изменения магазина для всех посетителей. Но блокировка может полностью убрать проверяемую функцию или изменить последовательность загрузки. Поэтому её результат я считаю подсказкой для расследования. Готовое исправление нужно испытать при обычной загрузке, без диагностической блокировки.

Исправление должно сохранять покупку целиком

Рассмотрим условную ситуацию. После изменения варианта товара тема повторно подключает обработчик кнопки, и одно нажатие отправляет два запроса. Если это подтверждено трассировкой и повторными проверками, решением может быть устранение повторного подключения. Если же одновременно действуют две системы корзины, стоит проверить предусмотренную настройками возможность оставить одну из них. Выбор зависит от установленной причины и нужных бизнесу функций.

Мне не нравится универсальный совет «добавьте задержку в скрипт». Он может скрыть ошибку на быстром компьютере и вернуть её при другом порядке загрузки. Аналогично, отключение сообщений в Console не исправляет действие покупателя. Принимать работу нужно по поведению магазина.

После изменения я проверил бы исходный сценарий и соседние: выбор другого варианта, количество, повторное добавление, удаление из корзины, скидку, дополнительное предложение, если оно есть, и переход к оформлению. Затем — согласованную проверку заказа. Набор устройств, языков и рынков выбирается по реальной конфигурации магазина; один успешный тест не означает проверку всех сочетаний.

Важно также не смешивать исправление функциональности с ускорением. Кнопка может снова работать, но по-прежнему отвечать с задержкой. Оценивать это стоит отдельно; об этом я писал в статье о реальной скорости Shopify и баллах PageSpeed.

Почему сопровождение полезно между сбоями

Работающий магазин меняется. В нём обновляют тему, подключают приложение, меняют шаблон карточки или условия акции. Shopify позволяет добавить обновлённую тему в черновики, но предупреждает о возможной несовместимости приложений и необходимости проверки изменений кода. Само появление новой версии не подтверждает готовность магазина к публикации.

В этом я вижу практическую пользу регулярного сопровождения. Команда сохраняет историю изменений и уже знает, какие функции критичны для бизнеса. Перед следующим обновлением есть с чем сравнивать результат, какие сценарии повторить и какой рабочий вариант можно вернуть. Владельцу не приходится каждый раз заново объяснять устройство магазина разным исполнителям.

По подписке на сопровождение мы в IceStoreGroup регулярно занимаемся такими задачами. Состав и периодичность проверок определяем под магазин. Я считаю разумным связывать их с изменениями и важными для продаж сценариями:

Для меня ценность подписки заключается в последовательности работы. Мы знаем, что изменили, почему это сделали и как проверили результат. Магазин получает необходимое внимание и после запуска, когда новые решения начинают взаимодействовать с уже работающими. Именно такой подход помогает развивать продажи с меньшим количеством технических неожиданностей.

Есть вопросы по поводу статьи? Напишите автору в Telegram — @BobSaylor