RNBW.wiki
🇬🇧
🇷🇺Русский 🇬🇧English 🇪🇸Español 🇨🇳中文 🇩🇪Deutsch

All entries

Three lines against a stuck refresh indicator — and a patch to React Native itself

15 October 2026

Change #7873 was merged on 14 October. It is tiny: one file, 21 lines added against four removed, of which the actual code is three. What makes it interesting is not the size but where it sits.

They are patching React Native, not their own app

The file is called patches/react-native+0.81.6.patch. It is a patch to the sources of the platform the app is written on. That is what you do when the fault is not in your own code but below it — and waiting for a fix from above is not an option.

What was broken

You pull a list down and a refresh starts. You leave for another screen. The refresh finishes while that screen is away. You come back — and the refresh indicator is sitting there, open, for good.

Why it happened

When a refresh ends, the app does two things in a row: first it notes internally that the refresh is over, then it asks the system to take the indicator away. And that request begins with a check: if the screen is not on display right now, return quietly and do nothing.

That is all it takes. The note is already made, so this path is never entered again: re-entry requires the state to change, and it already has. The system, meanwhile, is still in the "refreshing" position.

The curious part is why this went unnoticed for years. The opposite action, starting, has a safety net: if a refresh did not manage to start, it starts again on the first layout pass. So the "failed to start" case was thought through, and the "failed to finish" case was not.

What was added

Three lines at the moment the screen comes back: if our own records say the refresh is over while the system still thinks it is running, stop it. The deferred request fires exactly when the condition that caused it to be dropped is finally met.

The discipline deserves a mention

The same file already held another patch, about corner rounding. The author did not simply add theirs next to it — they rewrote the file's header, separating the two entries so each now carries its own condition for being removed.

A patch to someone else's library is a debt. When the condition for clearing it is written down, a year later nobody is afraid to touch it.

Who this affects

Any list that refreshes on a pull. Not one section, but the whole app at once — there have not been many changes like that in recent weeks.

Is it in the app yet

Not yet. The latest released version is 2.0.46 from 8 October, and the change was merged on the 14th. Rainbow does not announce in advance which version it will land in.

What's changing in the wallet's code: rnbw.wiki/pulse

$RNBW #RNBW

These entries go out in the channel @RNBWwiki.