From:To:
11¶ # React
22
33 **Что это.** Библиотека интерфейсов. Сам проект описывает себя так: «The library for web and native user interfaces». Репозиторий сейчас называется `react/react`; ссылки на `facebook/react` перенаправляются.
44
55 **Возраст.** Репозиторий на GitHub заведён 24 мая 2013 года.
66
77 **Размер.** 248 600 звёзд, 51 300 форков на сентябрь 2026.
88
99 В наши разборы попал одной своей гранью — пакетом `server-only` из четырёх строк, который существует, чтобы падать. Одна версия, выпущенная 03.09.2022, ни одного обновления. Карточка об этой грани, а не о проекте целиком.
10+¶ ## Привычки, описанные им самим
11+
12+ [CONTRIBUTING.md](https://github.com/react/react/blob/main/CONTRIBUTING.md) в репозитории — четыре строки и ссылка. Настоящие правила живут на странице [How to Contribute](https://legacy.reactjs.org/docs/how-to-contribute.html) старого сайта (исходник — `content/docs/how-to-contribute.md` в `reactjs/legacy.reactjs.org`); CONTRIBUTING и шаблон PR ведут именно туда.
13+
14+ **Одна очередь для всех:**
15+
16+ > All work on React happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process.
17+
18+ *Вся работа над React идёт прямо на GitHub. И основная команда, и внешние участники присылают pull request, и те проходят один и тот же процесс ревью.*
19+
20+ **Одна ветка, и она всегда готова к релизу:**
21+
22+ > Submit all changes directly to the `main branch`. We don't use separate branches for development or for upcoming releases… We should be able to release a new minor version from the tip of `main` at any time.
23+
24+ *Все изменения — прямо в main. Отдельных веток для разработки или будущих релизов нет… Мы должны иметь возможность выпустить новую минорную версию с верхушки main в любой момент.*
25+
26+ Отсюда вторая привычка: всё ломающее и экспериментальное обязано прятаться за feature-флагом.
27+
28+ **Сначала договориться, потом писать.** Для нетривиального — issue, для «существенного» — процесс RFC в репозитории `reactjs/rfcs`:
29+
30+ > Some changes though are "substantial", and we ask that these be put through a bit of a design process and produce a consensus among the React core team.
31+
32+ *Некоторые изменения «существенны», и мы просим проводить их через небольшой процесс проектирования и добиваться консенсуса в основной команде React.*
1033¶ ## Привычки, видные по переписке
1134
1235 Удобство не перевешивает назначение. На просьбу сделать пакет дружелюбнее отвечают отказом с разбором последствий — в тот же день и без смягчений.
36+¶ ## Мелкие правила, по которым узнаётся свой
37+
38+ **Чеклист перед PR записан дважды** — на сайте и в [.github/PULL_REQUEST_TEMPLATE.md](https://github.com/react/react/blob/main/.github/PULL_REQUEST_TEMPLATE.md), почти слово в слово: ветка от `main`, `yarn test` и `yarn test --prod`, `yarn prettier`, `yarn lint` (или `yarn linc` — только изменённые файлы), `yarn flow`, последним пунктом — CLA.
39+
40+ **В шаблоне PR два поля, и второе — с предупреждением:**
41+
42+ > ## How did you test this change?
43+ > …
44+ > If you leave this empty, your PR will very likely be closed.
45+
46+ *Как вы проверили это изменение? … Если оставите пустым, ваш PR почти наверняка закроют.*
47+
48+ **Занял задачу — отметься.** Перед тем как брать issue, нужно оставить комментарий; если тот, кто её занял, молчит больше двух недель, задачу можно забрать — снова с комментарием.
49+
50+ **Свои определяются по файлу.** Основная команда — плоский список логинов в [MAINTAINERS](https://github.com/react/react/blob/main/MAINTAINERS); workflow `shared_label_core_team_prs.yml` сверяет автора PR с этим файлом и вешает метку `React Core Team`. Как в список попасть, нигде не написано.
51+¶ ## Чего ждать, если придёте со своей правкой
52+
53+ Всё ниже — со страницы How to Contribute, из шаблонов в `.github/` и из workflow-файлов самого проекта.
54+
55+ **Смотрит основная команда, исходов три:**
56+
57+ > The core team is monitoring for pull requests. We will review your pull request and either merge it, request changes to it, or close it with an explanation.
58+
59+ *Основная команда следит за pull request. Мы посмотрим ваш и либо вольём, либо попросим изменений, либо закроем с объяснением.*
60+
61+ Если правка меняет API, там же предупреждают о задержке: сначала чинят внутреннее использование. CLA обязателен, подписывается один раз.
62+
63+ **Тесты на новое — требование, а не пожелание:**
64+
65+ > We still require that your pull request contains unit tests for any new functionality. This way we can ensure that we don't break your code in the future.
66+
67+ *Мы по-прежнему требуем, чтобы pull request содержал юнит-тесты на любую новую функциональность. Так мы сможем не сломать ваш код в будущем.*
68+
69+ **Бот считает дни.** По `.github/workflows/shared_stale.yml` через 90 дней без движения PR или issue получает метку `Resolution: Stale`, ещё через 7 — закрывается. Спасает любой комментарий:
70+
71+ > **If this pull request is still relevant, please leave any comment** (for example, "bump"), and we'll keep it open.
72+
73+ *Если этот pull request ещё актуален, оставьте любой комментарий (например, «bump»), и мы оставим его открытым.*
74+
75+ Метки `React Core Team`, `Type: Bug`, `Type: Regression` и ещё несколько бот не трогает.
76+
77+ **Что закрывают без разбора.** Баг-репорт без воспроизведения («may be immediately closed as not actionable»), отчёт о компиляторе без шагов («Issues filed without repro steps will be closed»), PR в ветки `builds/facebook-**` — их закрывает отдельный workflow и просит переоткрыть в `main`. Пустые issue отключены.
1378¶ ## Кто в кадре
1479
1580 Люди, встреченные в наших разборах этого проекта. Черта называется только вместе с поступком — с датой и ссылкой. Ник — главный, имя — из профиля; нет имени в профиле — только ник.
1681
1782 ### sebmarkbage — Sebastian Markbåge
1883
1984 Автор пакета `server-only` (единственная версия опубликована с его учётной записи npm 03.09.2022).
2085
2186 02.04.2023 — [в RFC #227](https://github.com/reactjs/rfcs/pull/227#issuecomment-1493417641) объяснил мейнтейнеру Jest, почему нельзя сделать пакет удобнее: «The goal is for it to throw by default to indicate that it doesn't work by default in existing environments that might be SSR hybrid». Ответил в тот же день, объяснил последствие, не смягчил формулировку.
2287
2388 Отказ, после которого спрашивавший сам вычеркнул своё предложение.
2489¶ ## Разборы, где встречается
2590
26− - **«Пакет, который ломается нарочно»** — четыре строки, одна версия, весь смысл — падать; что бывает, когда предохранитель срабатывает не там.
91+ - **«Пакет, который ломается нарочно»** — `server-only` из четырёх строк, который падает в Jest нарочно, и мейнтейнер, отказавший в удобстве в тот же день.
2792
2893 ---
2994
30− *Карточка собрана 02.09.2026 из открытых источников: репозиторий и переписка в PR и задачах. Правила проекта (CONTRIBUTING и подобные) в карточку ещё не разобраны — раздел «Привычки, описанные им самим» появится, когда будут. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.*
95+ *Карточка собрана 02.09.2026 из открытых источников: репозиторий, документация проекта, переписка в PR и задачах. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.*