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

Todas las entradas

Tres líneas contra el indicador de refresco atascado, y un parche al propio React Native

15 de octubre de 2026

Tres líneas contra el indicador de refresco atascado, y un parche al propio React Native

El cambio #7873 se integró el 14 de octubre. Es minúsculo: un fichero, 21 líneas añadidas frente a cuatro eliminadas, de las cuales código propiamente dicho son tres. Lo interesante no es el tamaño, sino dónde está.

No parchean su aplicación, sino React Native

El fichero se llama patches/react-native+0.81.6.patch. Es un parche a las fuentes de la plataforma sobre la que está escrita la aplicación. Eso se hace cuando el fallo no está en el código propio sino por debajo, y esperar un arreglo de arriba no es una opción.

Qué fallaba

Tiras de la lista hacia abajo y empieza el refresco. Te vas a otra pantalla. El refresco termina mientras esa pantalla está apartada. Vuelves: el indicador sigue ahí, abierto, y ya para siempre.

Por qué ocurría

Cuando el refresco termina, la aplicación hace dos cosas seguidas: primero anota internamente que ha terminado, y luego pide al sistema que retire el indicador. Y esa petición empieza con una comprobación: si la pantalla no está a la vista ahora mismo, salir en silencio sin hacer nada.

Eso es todo. La anotación ya está hecha, así que a este camino no se vuelve a entrar nunca: para volver hace falta que el estado cambie, y ya ha cambiado. El sistema, mientras tanto, sigue en posición de «refrescando».

Lo más curioso es por qué nadie lo notó durante años. La acción contraria, la de arrancar, sí tiene red: si el refresco no llegó a empezar, vuelve a arrancar en el primer repintado. Es decir, el caso «no dio tiempo a empezar» sí se pensó, y el caso «no dio tiempo a terminar» no.

Qué añadieron

Tres líneas en el momento en que la pantalla vuelve a su sitio: si según nuestros datos el refresco ha terminado y el sistema todavía cree que sigue, detenerlo. La petición aplazada se dispara justo cuando por fin se cumple la condición que hizo que se descartara.

Merece mención la disciplina

En ese mismo fichero ya había otro parche, sobre el redondeo de esquinas. El autor no se limitó a añadir el suyo al lado: reescribió la cabecera del fichero separando las dos entradas, de modo que cada una lleva ahora su propia condición para ser retirada.

Un parche a una biblioteca ajena es una deuda. Cuando la condición para saldarla está escrita, un año después nadie tiene miedo de tocarla.

A quién afecta

A cualquier lista que se refresque tirando hacia abajo. No a una sección, sino a toda la aplicación de golpe: cambios así no ha habido muchos en las últimas semanas.

¿Ya está en la aplicación?

Todavía no. La última versión publicada es la 2.0.46, del 8 de octubre, y el cambio se integró el día 14. Rainbow no anuncia por adelantado en qué versión aparecerá.

Qué cambia en el código del monedero: rnbw.wiki/pulse

$RNBW #RNBW

Estas entradas salen en el canal @RNBWwiki.