Repository navigation
cherry-pick(4.7-stable): Keep unreleased changelog entries in per-package fragment files (#10642) - #10793
Merged
Conversation
#10642) > [!NOTE] > This pull request was authored by AI on behalf of @pawicao. ## Summary Every pull request that changed a package edited the same `## Unpublished` section, so pull requests conflicted with each other. I moved unreleased entries into one file per pull request in `packages/<pkg>/changelog/` and left `CHANGELOG.md` with released versions only. A fragment holds only the entry text, because the release script reads the pull request number from the squash commit that added the file and asks GitHub for the author. I added `changelog:add` and `changelog:squash` to both package workspaces, the first to write a fragment and the second to move the fragments into `CHANGELOG.md`, and I rewrote `changelog-check` to validate fragments. I added fragments for #10584, #10632, #10587, #10629 and #10650, which merged to `main` after the 4.7.0 cut, and removed their lines from `CHANGELOG.md`. ## How we use the changelog from now on - **In a pull request:** run `yarn workspace <pkg> changelog:add --type <breaking|feature|fix|other> --message '<One sentence>'`, or write `packages/<pkg>/changelog/<slug>.<type>.md` by hand. The script writes into the package of the workspace, and the slug defaults to the branch name. Do not write the pull request link or the author, and do not edit `CHANGELOG.md`. - **To read the unpublished entries:** `yarn workspace <pkg> changelog:squash` prints them and changes no file. - **In a release pull request on the stable branch:** `yarn workspace <pkg> changelog:squash x.y.z` writes the `## x.y.z — <date>` section and deletes the fragments. - **In the post-release pull request on `main`:** `yarn workspace <pkg> changelog:squash x.y.0 --date <release date> --cut origin/x.y-stable` does the same, but leaves the fragments that came to `main` after the stable branch was cut. - **Cherry-picks:** the fragment comes with the cherry-pick, and the first `(#N)` in the commit subject still points to the original pull request. - **When the script cannot resolve an entry:** add a `pr: <number>` or a `by: @user1, @user2` line to the fragment. `by:` always takes precedence. - `changelog-check` needs a new fragment for each changed package. It rejects edits of `CHANGELOG.md` and deleted fragments, unless the pull request changes the package `version`, which marks a release or post-release pull request. ## Test plan `yarn test:scripts` passes. I also ran the three scripts in scratch repositories with real squash merges, and the author lookup against GitHub. `changelog-check` fails on this pull request, because it removes the `## Unpublished` section from both `CHANGELOG.md` files and does not change a `version`. This is expected and happens only for this migration. ## Changelog - [x] I added a changelog fragment with `yarn changelog:add` for each changed package, or this PR does not change `react-native-reanimated` or `react-native-worklets`. (cherry picked from commit 79881d9)
pawicao
requested review from
bartlomiejbloniarz,
kmagiera,
piaskowyk,
tjzel and
tomekzaw
as code owners
October 1, 2026 10:03
Contributor
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 35 minutes. View limit detailsLimit details: You’ve used all 10 included reviews currently available. Review configuration: ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (19)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
bartlomiejbloniarz
approved these changes
Oct 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This pull request was authored by AI on behalf of @pawicao.
Summary
Cherry-picking #10642 to
4.7-stablefor #10656.4.7-stablewas cut before #10642, so it still has the## Unpublishedsection inCHANGELOG.mdand the oldchangelog-check. All fixes that merged tomainafter #10642 carry a fragment file and noCHANGELOG.mdline. Without this change,changelog-checkfails on each cherry-pick PR of the 4.7.1 thread, and nothing moves the fragments intoCHANGELOG.mdat release.Merge this one first. The other cherry-pick PRs of #10656 then need an update from
4.7-stableforchangelog-checkto pass.The cherry-pick had three conflicts. This is how the result differs from #10642 on
main:packages/react-native-worklets/CHANGELOG.mdandpackages/react-native-worklets/package.jsonkeep their4.7-stablecontent. The worklets scripts are blank on this branch, so thechangelog:*scripts are not added there.4.7-stable. The fragments of fix(iOS): crash in useAnimatedKeyboard when the app delegate has no window #10587 and refactor(LayoutAnimations): rename the DEAD exiting state to COMPLETED #10629 come with their own cherry-picks (cherry-pick(4.7-stable): Crash in useAnimatedKeyboard when the app delegate has no window (#10587) #10778, cherry-pick(4.7-stable): Rename the DEAD exiting state to COMPLETED (#10629) #10781).Test plan
yarn test:scriptspasses (80 tests).node --experimental-strip-types scripts/changelog/check.mts <base>prints "The changelog fragments are correct.", andyarn workspace react-native-reanimated changelog:squashprints the entry with the link to fix(LayoutAnimations): initialize the root light node from the base revision #10737 and its original author.changelog-checkfails on this pull request, because it removes the## Unpublishedsection and does not change aversion. The same happened on #10642.