Блог

Статьи

Идеи, руководства и новости от нашей команды.

  • поддомены

    Поддомены для тенантов в TanStack Start через rewrite роутера

    Я перенёс каждый портал BugDump с bugdump.com/p/acme-store на acme-store.bugdump.com, не сдвинув ни одного файла роутов: TanStack Router переписывает URL на входе и на выходе. Output-rewrite, который правит свой URL, отправляет ссылки не на тот хост, navigate() не умеет переходить на другой origin, а wildcard-роут Workers срабатывает раньше каждого Custom Domain в зоне.

  • обновления продукта

    Отслеживание ошибок JavaScript в небольшом веб-приложении: что нужно, а что подождёт

    Отслеживание ошибок в небольшом веб-приложении сводится к четырём вещам: ловить то, что ломается, группировать повторы, читать стек в своём коде и сохранять минуту перед падением. Как каждая из них работает в браузере, что можно выбросить и когда нужен полноценный инструмент мониторинга.

  • обновления продукта

    Локализация встраиваемого виджета: язык страницы или язык браузера?

    Встраиваемый виджет может прочитать html lang страницы, navigator.languages посетителя или то, что ему скажет сайт. Часто они расходятся. Какой порядок я выбрал для виджета BugDump, почему страница идёт первой и какие мелочи сломались по дороге.

  • трекинг задач

    Машинное имя, которое было ещё и отображаемым

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

  • обновления продукта

    Тёмная тема во встраиваемых виджетах: как следовать переключателю темы в приложении

    В вашем приложении есть переключатель тёмной темы. Кнопка чата, виджет обратной связи и баннер про куки его не замечают. Почему prefers-color-scheme — неправильный сигнал для встраиваемых виджетов и какой небольшой API это исправляет.

  • воспроизведение сессии

    Воспроизведение сессии для отладки: что пользователь сделал перед багом

    Как работает воспроизведение сессии, что оно записывает и почему вместе с логами консоли и сети оно превращает размытые баг-репорты в такие, по которым можно найти причину.

  • виджет

    Как добавить на сайт кнопку для баг-репортов

    Три способа добавить кнопку для баг-репортов на любой сайт — тег script, npm-пакет или инициализация из кода, — а также советы по настройке и подводные камни.

  • воспроизведение сессии

    Три четверти кода в моём SDK почти никто не запускал

    Сторонний виджет, который отдаёт каждому посетителю 450 КБ, должен это чем-то оправдать. Мой не мог. Замер, исправление и то, в чём я ошибался насчёт defer.

  • воспроизведение сессии

    У меня всё работает: определитель невоспроизводимых багов

    «Не воспроизводится» — это не свойство бага. Это утверждение о разнице между двумя машинами. Таких различий всего около восьми, и у каждого свой узнаваемый признак.

  • JavaScript SDK

    Как собрать логи консоли и сетевые запросы из браузера пользователя

    DevTools открыт не на той машине. Как перехватить console, ошибки, fetch и XHR, чтобы браузер пользователя сам рассказал, что произошло, и в какие ловушки попадают наивные реализации, которые ломают страницу, за которой следят.

  • воспроизведение сессии

    Воспроизведение сессии без слежки

    У воспроизведения сессии плохая репутация, и по большей части заслуженная. Как оно устроено в BugDump: привязано к отчёту, лишнее пользователь скрывает сам, а выключается всё одной строкой.