Вот вам еще одна история
Реакт, как и любоя другая библиотека состоит из двух частей - это контракты, способ описания логики который он предлагает. Майндсет если хотите.
А вторая часть это его реализация. Условно можно сказать что с точки зрения разработчика выбирающего стек - первое про то как удобно будет этим пользоваться, а второе как хорошо это будет работать.
И так как отдельно это не предлогалось, а самостоятельная реализация очень дорогая мы всегда рассмотраливали эти две половинки как части целого.
Была очень дорогой
Tanner Linsley для сайта tanstack и своего блога отделил апи реакта и написал его реализацию с тем что нужно ему.
Итог получился идентичен оргиниальному реакту (а не как преакт с компат слоем), хотя разница в реализации все же была
Часть этого навсегда вырезается. Конкурентный рендеринг, разделение времени, планировщик на основе lane’ов, React DevTools и клиентский десериализатор Flight вообще не реализованы. useTransition и useDeferredValue выполняются синхронно, startTransition — это просто fn(), а планировщик — обёртка над микротасками. Это продуктовые решения: TanStack Start либо в них не нуждается, либо за это отвечает другая часть стека.
При этом все 200 тестов реакта проходят, и в перф бенчмарках его реализация показывает в двое большую производительность. Самое интересное то что итоговый размер на 80% меньше
Конкретные цифры в виде табличек вы можете увидеть в оригинальном посте
Теперь я буду внимательней присматриваться к случаям когда я что-то беру только ради удобной апи. Если можно выкинуть 80% веса не жертвуя удобством то почему бы и нет.