TanStack Router развивается очень динамично, и при переходе между мажорными версиями могут изменяться ключевые концепции маршрутизации. Важно понимать три уровня совместимости:
x.y.Z) – содержат
исправления багов и не влияют на API. Совместимость абсолютная: проект
можно обновлять без риска поломки существующего кода.x.Y.z) – добавляют
новые функции и расширяют возможности, но стараются сохранять обратную
совместимость. Некоторое поведение может меняться, если новая
функциональность затрагивает существующие методы.X.y.z) – могут
включать изменение API, удаление устаревших функций и изменение
внутренних механизмов. Переход на новую мажорную версию требует
внимательного анализа изменений и иногда рефакторинга кода.TanStack Router придерживается принципов семантического версионирования (SemVer). При этом:
Миграции между патч- и минорными версиями почти всегда безопасны, если проект использует только официальное API.
Миграции между мажорными версиями требуют проверки следующих компонентов:
Route и Router), их
синтаксис и способ вложенности.useNavigate) и методов
управления историей (history).loader,
onLoad) и кэширования.useMatch и
useRouteLoaderData, которые могли поменять сигнатуры
аргументов.В новых версиях TanStack Router появилась поддержка декларативной вложенности и динамических сегментов с объектной конфигурацией. Пример отличий:
path и component.createRouter, что
упрощает управление сложными приложениями.При переходе необходимо проверять:
loader
теперь может возвращать промис с типизированными данными).path для динамических сегментов
(например, {userId} вместо :userId).useNavigate() в мажорных обновлениях мог изменять
сигнатуры: теперь поддерживается объект конфигурации вместо простой
строки URL.useParams() вернет объект с типизированными
параметрами, что требует адаптации типов при использовании
TypeScript.useRouteLoaderData(routeId) теперь возвращает данные
строго по идентификатору маршрута, что повышает безопасность типов, но
может вызвать ошибки при прямом копировании старого кода.TanStack Router тесно интегрирован с React и TypeScript. При обновлении версий важно учитывать:
loader. Старый код без явной типизации может вызвать ошибки
компиляции.| Тип обновления | Совместимость | Основные изменения |
|---|---|---|
| Патч | Полная | Исправления багов |
| Минор | Почти полная | Новые функции, расширения API |
| Мажор | Частичная | Изменения API, новые концепции, строгая типизация |
Эта таблица позволяет быстро ориентироваться при планировании обновлений и снижает риск неожиданных поломок в больших приложениях с TanStack Router.