Блог

Статьи

Лонгриды от нашей команды. Инженерия, продукт и новости компании.

  • Product

    Вебхуки не должны доверять адресу, который им дали

    Вебхук — единственная функция, в которой клиент вводит адрес, а ваши серверы потом сами на него ходят. Что я сделал для вебхуков Kookee и его интеграций со Slack, GitHub и Jira, и восемь мест, где отправителю вебхуков нельзя ошибиться.

  • oauth

    MCP-сервер не должен заставлять людей вставлять токен

    MCP-сервер Kookee хорошо работал с личными токенами — для тех, кто живёт в терминале. Чат-приложения Claude и ChatGPT подключаются иначе — через вход в аккаунт. Что я выпустил, чтобы они могли подключиться, и семь решений, которые заняли больше времени, чем код.

  • headless-cms

    React-компоненты вашей CMS не должны сами загружать данные

    Большинство наборов компонентов для headless CMS оборачивают приложение в провайдер и загружают данные внутри компонентов. С серверными компонентами из-за этого контента нет в первом HTML, статичные списки уходят в браузер как JavaScript, а статьи передаются дважды. Шесть правил, по которым я сделал компоненты Kookee.

  • Engineering

    React 19 перезаписывает dangerouslySetInnerHTML при каждом рендере

    Объект { __html }, созданный прямо в JSX, заставляет React 19 заменять весь HTML элемента при каждом повторном рендере родителя. Я нашёл это из-за оглавления, которое застревало на последнем заголовке. Почему так происходит, что это ломает и как это исправить одной строкой.

  • pagination

    Пагинация вашего блога, скорее всего, прячет посты от Google

    Кнопка «Показать ещё» без адресов, номер страницы в состоянии компонента, canonical на первую страницу, noindex на второй: четыре частые причины, по которым поисковики не доходят до старых постов блога. Что делать вместо этого и чек-лист.

  • security

    Ваша ссылка-приглашение — это пароль, который вы вставили в Slack

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

  • ai-agents

    MCP-сервер не должен работать на общем API-ключе

    Когда ИИ-ассистент меняет ваш контент через MCP-сервер, первый вопрос — кто это сделал. Общий ключ проекта на него не ответит, и отозвать его у одного человека нельзя. Чем я его заменил и какие шесть деталей оказались важными.

  • Engineering

    Почему чат-виджет не слушается переключателя тёмной темы

    На вашем сайте есть переключатель тёмной темы. Виджету поддержки в углу всё равно. Почему встраиваемые виджеты ошибаются с темой — медиазапрос ОС, shadow root, перемонтирование — и что должен уметь виджет, чтобы ваш не ошибался.