Skip to main content

Последние статьи

Мысли о разработке, технологиях и лучших практиках

4 мин чтения

Стабильность sitemap: почему lastmod никогда не должен быть new Date()

Распространённый баг в Next.js sitemap: lastmod ставится на текущую дату при каждом билде. Google видит каждую страницу как 'обновлённую' при каждом деплое, размывая приоритет обхода. Вот как это исправить.

next.jsperformance
5 мин чтения

Деплой Next.js: Vercel vs Fly vs Railway — реальные цифры из 3 клиентских проектов

Я деплоил Next.js в продакшн на Vercel, Fly.io и Railway. Реальные затраты, время холодного старта, опыт деплоя и компромиссы из живых проектов — не бенчмарки.

next.jsperformance
5 мин чтения

Миграция с Tailwind 3 на Tailwind 4: путь за 90 минут

Я мигрировал проект на Next.js с 40 компонентами с Tailwind 3 на Tailwind 4 за 90 минут. Вот пошаговый процесс, что сломалось, что пропустил кодмод, и один подводный камень, который стоил мне 20 минут.

next.jsperformance
5 мин чтения

Dependabot для соло-разработчика: сгруппированный конфиг, который я реально использую

Dependabot без конфигурации отправляет 30 PR в неделю и превращается в шум, который ты игнорируешь. Вот сгруппированный конфиг, который шлёт 2-3 PR в неделю с осмысленными обновлениями — настройка, которую я использую на каждом клиентском проекте.

securitynext.js
5 мин чтения

Прогрессивное улучшение в эпоху RSC: что работает, что нет

Server Components изменили, какие паттерны прогрессивного улучшения жизнеспособны. Формы стали лучше, чем когда-либо. Клиентская интерактивность требует осознанных решений. Вот что я вынес из релиза RSC-приложений для реальных пользователей.

next.jsux
5 мин чтения

Куки-баннеры по-правильному (и по закону) — минимум для Словакии/ЕС

Большинство куки-баннеров либо нелегальны (предвыбранные чекбоксы, нет кнопки отказа), либо избыточны (энтерпрайз-платформы согласия для сайта в 5 страниц). Вот минимальный легальный сетап для малых сайтов в ЕС.

security
4 мин чтения

A/B-тестирование на малотрафиковом сайте: когда работает, когда карго-культ

У большинства маленьких сайтов недостаточно трафика, чтобы A/B-тесты давали реальные результаты. Вот математика, когда это работает, что делать вместо, и как не обмануть себя статистикой.

uxperformance
4 мин чтения

Оптимизация изображений в Next.js 16: что изменилось, за чем тянуться

Обработка изображений в Next.js значительно эволюционировала. Вот текущее состояние next/image, когда его использовать, когда пропускать, и оптимизации, которые реально двигают Lighthouse.

next.jsperformance
5 мин чтения

Генерация OG-изображений в Next.js 16 без бессонных ночей

Динамические OG-изображения делают ссылки профессиональными в Twitter и Slack. Вот сетап, который работает в продакшне без сюрпризов — и подходы, от которых я отказался.

next.jsperformance
5 мин чтения

Schema.org для сервисного бизнеса: JSON-LD, который должен быть в каждом портфолио

Большинство портфолио разработчиков шипят ноль структурированных данных. Вот 4 блока JSON-LD, которые помогают Google понять сервисный бизнес — с копипаст-кодом для Next.js.

performancenext.js
5 мин чтения

Postgres vs DynamoDB vs SQLite для нового SaaS: честный дефолт

Каждому новому SaaS нужна база данных. У Postgres, DynamoDB и SQLite у каждого своя ниша. Вот когда выбирать каждую — на основе проектов, которые я реально шипил.

performance
5 мин чтения

Server Actions в продакшне: 4 вещи, которые я больше не повторю

Server Actions упрощают мутации в Next.js. Но после шиппинга на трёх клиентских проектах я собрал четыре паттерна, которые выглядели нормально в разработке и ломались в продакшне.

next.js
5 мин чтения

После запуска: 30-дневный план стабилизации, который стоит потребовать от разработчика

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

performancesecurity
4 мин чтения

App Router vs Pages Router в 2026: ещё актуальный вопрос?

App Router в Next.js стабилен уже больше двух лет. Pages Router по-прежнему работает. Если начинаешь новый проект или поддерживаешь старый — вот честное состояние дел в 2026.

next.js
3 мин чтения

Фича, от которой мы отговорили клиента — и почему он потом поблагодарил

Клиент хотел real-time совместное редактирование в MVP. Мы сказали нет. Через шесть месяцев после запуска он сказал, что это было лучшее совместное решение. Почему.

case-studypricing
3 мин чтения

23 пункта предзапускового чеклиста, который я прогоняю перед каждым клиентским запуском

Каждый клиентский проект получает этот чеклист перед запуском. 23 пункта по безопасности, производительности, SEO, мониторингу и юридическим вопросам. Большинство занимают 5 минут. Вместе предотвращают 90% послезапусковых пожаров.

performancesecurity
3 мин чтения

Выбор CMS для Next.js-сайта: Sanity, Payload или чистый MDX?

Я шипил Next.js-проекты со всеми тремя. Когда каждый из них — правильный выбор, что ломается на масштабе, и почему я по умолчанию беру чистый MDX для большинства solo-dev сайтов.

next.js
4 мин чтения

Когда Lighthouse CI упал на 20 баллов — 8 часов на поиск

Оценка производительности упала с 96 до 76 за ночь. Ни изменений кода, ни новых зависимостей. Причина: комбинация задержки Google Fonts с edge-сервера и изображения, которое не было lazy-loaded.

performancenext.js
3 мин чтения

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

Еженедельное демо — самый эффективный инструмент для удержания MVP на курсе. Точный формат, который я использую с каждым клиентом: что показывать, что спрашивать, какие красные флаги отслеживать.

hiring
4 мин чтения

GDPR для небольшого SaaS: 5-часовой сетап, которого достаточно

Не нужен юридический аудит за €10K, чтобы быть GDPR-комплаентным. Минимально жизнеспособный сетап, который я реализую для каждого EU-ориентированного SaaS: что делать, что пропустить, что реально важно.

security
3 мин чтения

vercel.json, который молча сломал мой сайтмап на месяц

Одно правило редиректа в vercel.json заставило сайтмап возвращать HTML вместо XML. Google перестал индексировать новые страницы на 4 недели. Как я нашёл и отладил.

performancenext.js
5 мин чтения

Техническое SEO, которое каждый разработчик должен шипить по умолчанию (и которое большинство пропускает)

12-пунктный чеклист технического SEO, который я прогоняю на каждом Next.js-проекте. Большинство разработчиков пропускают минимум 5 из них. Каждый пункт — менее 30 минут на реализацию.

performancenext.js
4 мин чтения

Типизированные переменные окружения в Next.js без t3-env

40-строчный сетап для полностью типизированных, валидируемых переменных окружения в Next.js. Ноль зависимостей, рантайм-валидация при старте и IntelliSense везде.

next.jssecurity
5 мин чтения

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

Всё работало в Stripe test mode. Потом мы вышли в прод — и платежи молча зависли. Корневая причина: комбинация подписи вебхуков, idempotency keys и поля метаданных, которое тест-режим игнорирует.

stripesecurity
6 мин чтения

Паттерны лендингов, которые реально двигают конверсию для B2B SaaS

Я построил 12+ SaaS-лендингов. Эти 7 паттернов стабильно поднимают конверсию — не потому что хитрые, а потому что убирают трение ровно в тех местах, где посетители колеблются.

uxperformance
5 мин чтения

Настройка Sentry, которая ловит полезные ошибки (а не шум)

Мой продакшн-конфиг Sentry для Next.js: фильтрация гидрационного спама, группировка по причине и алерты на то, что реально важно. С реальными примерами конфига.

performancenext.js
6 мин чтения

QR check-in на масштабе: 12K+ сканирований без единого сбоя

Как я построил систему QR check-in, которая обслуживает площадки на 3,000 мест с офлайн-поддержкой, JWT-подписью билетов и временем сканирования до 200мс. Архитектура, код и продакшн-числа.

performancesecurityreact-native
4 мин чтения

next-intl vs next-i18next: стоимость миграции, которую я реально заплатил

Я мигрировал продакшн Next.js сайт с next-i18next на next-intl. Почему, сколько заняло, что сломалось и стоило ли оно того.

next.jsi18nperformance
5 мин чтения

Почему ваш Upwork MVP застрял (и что делать вместо этого)

Модель найма Upwork ломается для MVP. Почему это происходит, паттерн за каждым застрявшим проектом, который я спасал, и альтернатива, которая реально выпускает.

hiringpricing
6 мин чтения

Real-time WebSocket паттерны для тикетинга и чата: продакшн-плейбук

Паттерны из двух продакшн-систем: тикетинг-платформа с 12K одновременных выборов мест и командный чат с индикаторами присутствия. Что работает, что нет, и архитектура за обоими.

next.jsperformancecase-study
5 мин чтения

Vercel vs Cloudflare vs self-hosted Next.js: таблица стоимости и DX в 2026

Реальные затраты из 3 клиентских деплоев. Где Vercel стоит своих денег, где Cloudflare экономит, и когда self-hosting имеет смысл. Цифры, не мнения.

next.jsperformancepricing
7 мин чтения

Что выпускать в MVP, а что урезать — с 5 реальными примерами

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

pricinghiring
5 мин чтения

Баг, который проявился только на iPhone SE

Чекаут, который работал на каждом устройстве, кроме 4-дюймового экрана. Как тач-таргет 44px, фиксированный футер и адресная строка Safari сложились в баг, который никто не мог воспроизвести в офисе.

performanceuxcase-study
7 мин чтения

Supabase vs Railway vs Neon: ценовые пороги и где каждый начинает кусаться

Три варианта хостинга Postgres, на которых я отгружал в продакшн. Где каждый дешевле, где дорожает, и стоимость миграции, о которой никто не говорит.

next.jsperformancepricing
6 мин чтения

Нативное приложение или мобильный веб: дерево решений для фаундера

Не технологический спор — бизнес-решение. Когда натив стоит своих денег, когда веб-приложения достаточно, и 5 вопросов, которые делают ответ очевидным.

hiringreact-nativepricing
8 мин чтения

Красные флаги при найме разработчика для стартапа

Семнадцать тревожных сигналов на созвонах, в портфолио и договорах — те, что основатели обычно замечают задним числом и жалеют, что не разглядели раньше.

hiringmvppricing
5 мин чтения

Индекс в Postgres, на поиск которого ушло 3 дня

Запрос дашборда, который должен был отрабатывать за 40ms, занимал 6 секунд. Фикс — одна команда CREATE INDEX. Найти, какая именно, заняло три дня.

performancecase-study
8 мин чтения

Offline-first React Native: как мы сохранили выбор мест плавным на поезде с 3G

Архитектура, которая сделала пикер на 12K мест мгновенным при 0 полосках сигнала. Синхронизация состояния, оптимистичные записи, очередь, переживающая kill приложения, и крайние случаи, о которых никто не предупреждает.

react-nativeofflinemobile
8 мин чтения

Как правильно отгрузить i18n в Next.js: роутинг, SEO и грабли RSC

Ошибки i18n, которые проходят код-ревью и ломаются в продакшне — петли middleware, canonical-теги, ловушки hreflang и крайний случай сериализации RSC, который молча съедает переводы.

next.jsi18nseo
7 мин чтения

Три спасённых проекта в цифрах: во что реально обошёлся «дешёвый разработчик»

Три реальных проекта, которые пришли ко мне сломанными. Что пошло не так, сколько стоило починить, и математика, которая показывает, почему «дешёвый» вариант оказался самым дорогим.

pricinghiringcase-study
6 мин чтения

Я удалил rate limiting с контактной формы. Вот почему.

Rate limiting — рефлекс. На реальной портфолио-форме он ничего не решил, добавил зависимость от Redis и сломал легитимные отправки. Честная математика, когда его пропускать.

securitynext.jstradeoffs
8 мин чтения

Stripe vs Lemon Squeezy vs Paddle: реальные трейдофы из отгрузки трёх чекаутов

Различия в налогах, ценах и интеграциях, которые всплывают только после первых 100 платящих клиентов — и режимы отказа, уникальные для каждого.

stripepaymentsstack-choice
8 мин чтения

Что реально покупают €12K: построчная разбивка стоимости реального MVP

Не гипотетика. Реальный проект, реальные статьи расходов, реальные часы. Куда уходят деньги, когда вы нанимаете solo full-stack разработчика для MVP с нуля.

pricingcase-studyhiring
7 мин чтения

Бриф основателя: что отправить разработчику, чтобы не потерять 8 недель

Шаблон одностраничного брифа, который экономит основателям недели несогласованной работы. Что включить, что оставить за рамками, и три вопроса, важнее любого Figma-файла.

hiringmvppricing
6 мин чтения

React Native vs Flutter для стартапа из двух основателей: ответ без священной войны

Оба отгружают. Оба нормальные. Реальные факторы решения — это найм, покрытие вебом и текущие навыки команды, а не сравнение фреймворков, которое ты найдёшь на Reddit.

react-nativeflutterstack-choice
8 мин чтения

От Figma до 8K установок: как мы отгрузили React Native-приложение E7 Shop

Нативное iOS + Android приложение-компаньон для ивент-тикетинга. 60fps выбор мест, офлайн QR-кошелёк, рейтинг 4.8★. 10 недель, React Native + Expo.

case-studyreact-nativeperformance
8 мин чтения

Как описать MVP так, чтобы он реально вышел за 12 недель

Ошибки в описании, которые превращают 12-недельный проект в 6-месячный, и письменные артефакты, которые держат проект на рельсах с первой недели.

mvphiringpricing
7 мин чтения

Вебхуки Stripe в продакшне: 6 режимов отказа, о которых никто не предупреждает

Паттерны отказов, которые всплывают только после первых 1000 оплаченных событий — баги подписей, штормы ретраев, молчаливые 200-ки, и фикс для каждого.

stripenext.jsdebugging
7 мин чтения

Архитектура билетной платформы на 12K билетов за событие: внутри E7

Полный стек ивент-тикетинга — интерактивные карты залов, Stripe-чекаут, WebSocket в реальном времени, QR-чекин. 12 недель от нуля до продакшена.

case-studynext.jsstripe
5 мин чтения

Next.js vs Remix в 2026: сравнение, которое реально имеет значение сейчас

Срач 2023 года закончен. После слияния Remix в React Router 7 и стабилизации Next.js RSC честные различия меньше, чем думает интернет — но они всё равно не те, что нужны большинству основателей.

next.jsstack-choicehiring
6 мин чтения

Как я выбил Lighthouse 98 на трёхъязычном сайте на Next.js

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

next.jsperformancei18n
6 мин чтения

Как мы пересобрали Etalon Translation за 6 недель: +34% конверсии и Lighthouse 98

WordPress-сайт агентства → Next.js 15. Три локали, MDX-блог, 0.8s загрузка. Полная история: что вырезали, что удивило, реальные цифры.

case-studynext.jsperformance
6 мин чтения

Соло full-stack разработчик vs агентство vs фрилансер: честное сравнение

Цена, скорость, риски и подходящий формат для трёх вариантов, между которыми выбирает каждый основатель. Где каждый выигрывает, а где сжигает бюджет.

hiringmvppricing
5 мин чтения

Фиксированная цена vs почасовая: почему я беру по вехам

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

pricinghiringmvp
5 мин чтения

Сколько на самом деле стоит кастомный SaaS MVP в 2026-м

Построчный разбор реального MVP за €15K. Без «зависит от задач», без наценки агентства, без тумана — реальные цифры за 10-недельным проектом.

pricingmvphiring
4 мин чтения

Четырёхстрочный спам-фильтр, который заменил reCAPTCHA на моей контактной форме

Honeypot + time-floor + лимиты размера. Без стороннего скрипта, без сноски о приватности, без галочки. Два месяца работы и ноль спама в инбоксе.

securitynext.jsux
1 мин чтения

Server Components: трейдоф, который укусил

Короткая история про границы сериализации, иконки в props и как я дебажил ошибку Next.js без стектрейса.

next.jsreactdebugging
1 мин чтения

Hello, world — почему я снова пишу

Зачем этот блог: короткие заметки из реальных проектов, вещи, которые хотелось бы знать раньше, и трейдофы, которые редко попадают в туториалы.

metawriting