React-native: ☂️ Lean Core

Creado en 6 feb. 2019  ·  196Comentarios  ·  Fuente: facebook/react-native

Durante los últimos meses hemos estado discutiendo y progresando en un proyecto llamado “Lean Core”. Lea nuestra motivación para este proyecto . A lo largo de los años, React Native ha acumulado una gran cantidad de partes que ahora están desactualizadas, sin usar o heredadas. Es hora de limpiar todo y poner el repositorio en un estado mucho más manejable en el futuro.

Esta es una tarea general destinada a realizar un seguimiento de todo el trabajo necesario para alcanzar el objetivo de un núcleo más reducido, incluido el trabajo en torno a la reorganización del repositorio. Este problema se mantiene actualizado, por lo que se agregarán nuevos elementos y se (re) moverán los completados. Algunos de los elementos generarán problemas separados para realizar un seguimiento del trabajo. Si no ve un nombre asignado a ninguno de los siguientes elementos y le gustaría ayudar, por favor participe como voluntario en los comentarios y comuníquese conmigo para comenzar.

Componentes y tiempo de ejecución

React Native actualmente viene con una gran cantidad de componentes, muchos de los cuales están obsoletos o desactualizados, pero siguen siendo parte del repositorio y aumentan el tamaño de las aplicaciones. Para los elementos de esta sección, buscamos eliminar por completo los elementos si no se utilizan, o nos gustaría moverlos a repositorios administrados por la comunidad o de otro modo a facebookarchive . La lista aquí se basa parcialmente https://github.com/facebook/react-native/issues/23313#issuecomment -461462981

  • [] Eliminar ImageStore (@cpojer)
  • [] Eliminar PushNotificationIOS (@cpojer)
  • [] Eliminar AsyncStorage (@cpojer)
  • [] Eliminar control deslizante (@cpojer)
  • [] Eliminar ProgressBarAndroid (@cpojer)
  • [] Eliminar ProgressViewIOS (@cpojer)
  • [] Eliminar MaskedViewIOS (@cpojer)
  • [] Eliminar ActionSheetIOS (@cpojer)
  • [] Eliminar ImagePickerIOS (@cpojer)
  • [] Quitar Picker y PickerIOS (@cpojer)
  • [] Eliminar DatePickerAndroid, DatePickerIOS (@cpojer)
  • [] Eliminar ReactART (@cpojer)

Dependencias de terceros

A lo largo de los años, hemos acumulado una gran cantidad de dependencias, especialmente JavaScript. También hemos sacado cosas de React Native, como Metro y react-native-cli . Esto significa que dejamos una gran cantidad de dependencias de herramientas en nuestro package.json, muchas de las cuales no serán utilizadas por RN y no se actualizarán a las últimas versiones, lo que provocará que la instalación completa de React Native se hinche. También sería genial hacer una auditoría de todas las dependencias que se utilizan e identificar cuáles podrían eliminarse.

  • Dependencias de JavaScript

    • [] Compruebe qué dependencias son grandes y si se pueden reducir

    • [] Averigüe qué dependencias se pueden actualizar a sus últimas versiones para corregir la seguridad.

    • [] Descubra qué dependencias se pueden deduplicar (= reducir las discrepancias de versiones) para un tamaño de instalación más pequeño

  • Mover el código React Native a dependencias externas

    • [] Identificar qué código JavaScript podría ser mejor servido por un paquete de terceros en lugar de mantener una copia o nuestra propia implementación.

Estructura del repositorio

En este momento, el repositorio React Native es un gran repositorio con poca organización que promueve la separación de preocupaciones. Nuestro objetivo, como parte de este esfuerzo, es también mover las cosas hacia una estructura más manejable. Como parte de esto, nos gustaría seguir un modelo monorepo que consta de varios paquetes más pequeños. Esta será una migración gradual y solo realizaremos un seguimiento del trabajo inicial para que esto despegue.

  • [] Proporciona una configuración inicial que funciona con el repositorio existente, con varios paquetes y también funciona bien con la configuración interna de Facebook (@cpojer)
  • [] TODO: Identifique más trabajo necesario en esta área

Trabajo completo


Haga clic para ver el trabajo anterior antes de que se creara este problema

Good first issue Help Wanted Ran Commands Discussion

Comentario más útil

Quería dar una actualización rápida sobre el progreso que todos han estado haciendo en el esfuerzo de Lean Core. Solo quiero decir lo impresionado que estoy por todas sus contribuciones en poco más de una semana. Muchas muchas muchas gracias.

Aquí está todo el trabajo que ya está terminado:

  • NetInfo (https://github.com/react-native-community/react-native-netinfo) se dividió con éxito y se lanzó en npm a través de @ react-native-community / netinfo por @ matt-oakes, quien incluso agregó nuevas pruebas ¡y nuevas funciones del módulo!
  • ViewPagerIOS (https://github.com/react-native-community/react-native-viewpager/pull/1) fue dividido con éxito por @ferrannp.
  • AsyncStorage (https://github.com/react-native-community/react-native-async-storage) fue eliminado por @Krizzu.
  • StatusBar (https://github.com/react-native-community/react-native-statusbar/pull/1) fue movido a un repositorio separado por @dmtrKovalenko.
  • Slider (https://github.com/react-native-community/react-native-slider/pull/1) fue dividido por @michalchudziak.
  • MaskedViewIOS (https://github.com/react-native-community/react-native-masked-view/pull/1) fue convertido en un repositorio comunitario por @FonDorn.
  • PushNotificationIOS (https://github.com/react-native-community/react-native-push-notification-ios/pull/1) fue extraído por @rafaellincoln.
  • ImageEditor (https://github.com/react-native-community/react-native-image-editor/pull/1) fue extraído por @Trancever.
  • @EvanBacon agregó un mensaje de obsolescencia para ImageStore en # 23330.
  • @wellmonge fusionó AlertIOS y Alert en # 23318.
  • Los ingenieros de Callstack lanzaron la primera versión de la nueva CLI de React Native: https://blog.callstack.io/the-react-native-cli-has-a-new-home-79b63838f0e6

También quiero resaltar cómo la extracción de estos módulos puede conducir a un mejor mantenimiento de esos módulos, es decir, @ matt-oakes agregó pruebas para NetInfo (https://github.com/react-native-community/react-native-netinfo/pull/ 4) y @ifsnow agregó tipos de flujo a AsyncStorage (https://github.com/react-native-community/react-native-async-storage/pull/4). Al desacoplar estos componentes de React Native (y Facebook), pueden moverse mucho más rápido individualmente sin ser bloqueados por un empleado de Facebook. Además, debido a que podemos migrar problemas existentes y solicitudes de extracción desde el repositorio de React Native, también facilitará el mantenimiento de React Native y podremos responder a las solicitudes de extracción más rápido.

Esto es en lo que estamos trabajando o en lo que estamos trabajando a continuación:

  • Eliminar VibrationIOS
  • Eliminar dependencias de terceros no utilizadas
  • Comience a migrar el código interno de Facebook para usar los nuevos paquetes react-native-community

Nuevamente, a todos los que han estado ayudando hasta ahora, ¡gracias!

Todos 196 comentarios

@cpojer Me gustaría eliminar SnapshotViewIOS 🔪

Hola @cpojer , ¡gracias por ponerlo todo junto!

Estoy dispuesto a abordar algunos problemas, comenzando por mover AsyncStorage.

Me complacería ayudar a trasladar NetInfo a un repositorio comunitario.

¿Sería mejor crear primero un repositorio personal de Github y luego migrarlo potencialmente a la organización react-native-community una vez que esté listo, o deberíamos comenzar de inmediato con un repositorio en esa organización?

@cpojer , me gustaría ayudar en algunos de estos problemas, ¿podría comenzar con "Fusionar AlertIOS con Alerta"?

¡Eso es genial! Dejo sus nombres junto a los elementos de arriba.

@jdmunro ¿ pueden enviarme un PR y
@Krizzu y @ matt-oakes creé https://github.com/react-native-community/react-native-async-storage y https://github.com/react-native-community/react-native-netinfo para que envíe PRs contra con todo el código necesario para convertirlos en módulos de terceros. Idealmente, en el primer paso, simplemente tomará el código del repositorio de RN y lo colocará en repositorios separados. Para asegurarnos de que funcione, podríamos vincularlos nuevamente a RN como una dependencia y eliminar la implementación original. Más adelante en la línea podemos moverlo a un paquete opcional.
@wellmonge ¡ Suena genial! No estoy completamente seguro de lo que implicará el trabajo, pero tal vez pueda revisar los dos módulos y ver si puede unificarlos.

@cpojer Podría ayudar con el control deslizante en movimiento 🙂

Después de eso, puedo recoger algo más si aún necesitas ayuda.

@michalchudziak ¡Impresionante! Creé https://github.com/react-native-community/react-native-slider , consulte mi comentario anterior sobre qué hacer a continuación.

Como nombre del proyecto en package.json, utilice @react-native-community/<project name> , es decir. @react-native-community/slider .

@cpojer Puedo tomar ViewPagerAndroid . Creo que es mejor moverlo a un repositorio de la comunidad (si puede crear el repositorio para mí, gracias 😄) que simplemente eliminarlo porque otros paquetes han implementado este comportamiento en JS para iOS y se transmiten al nativo para Android.

Hola @cpojer, me gustaría ayudar fusionando y moviendo Picker y PickerIos. :)

¡@ferrannp creó https://github.com/react-native-community/react-native-viewpager para ti! Vea los mensajes de arriba.
@jainkuniya gracias! No estoy exactamente seguro de cómo se verá, pero tal vez pueda ver cómo unificarlos y comenzar a enviar pequeños PR para reaccionar de forma nativa.

¡Eso es genial! Dejo sus nombres junto a los elementos de arriba.

@jdmunro ¿ pueden enviarme un PR y
@Krizzu y @ matt-oakes creé https://github.com/react-native-community/react-native-async-storage y https://github.com/react-native-community/react-native-netinfo para que envíe PRs contra con todo el código necesario para convertirlos en módulos de terceros. Idealmente, en el primer paso, simplemente tomará el código del repositorio de RN y lo colocará en repositorios separados. Para asegurarnos de que funcione, podríamos vincularlos nuevamente a RN como una dependencia y eliminar la implementación original. Más adelante en la línea podemos moverlo a un paquete opcional.
@wellmonge ¡ Suena genial! No estoy completamente seguro de lo que implicará el trabajo, pero tal vez pueda revisar los dos módulos y ver si puede unificarlos.

¡Seguro! Haré eso y te reportaré.

Puede ayudar con StatusBarIOS y PushNotificationIOS

@cpojer ¿Tiene alguna preferencia por el nombre del paquete de Android?

Usando NetInfo como ejemplo, actualmente es com.facebook.react.modules.netinfo . ¿Deberíamos hacerlo estándar en todos los módulos extraídos con algo como com.reactnativecommunity.modules.netinfo ?

Puedo ayudar con

  • Mueva SegmentedControlIOS a un repositorio comunitario
  • Mover ProgressViewIOS a un repositorio de la comunidad

Tomaré la casilla de verificación, por favor.


Gracias por enviar tu problema. ¿Puedes echar otro vistazo a tu descripción y asegurarte de que la plantilla de problema se haya completado en su totalidad?

👉 Haga clic aquí si desea volver a ver la plantilla de problemas del informe de errores.

@dmtrKovalenko lo puso para StatusBarIOS, creado https://github.com/react-native-community/react-native-statusbar
@ matt-oakes community en el nombre del paquete suena bien, pero si mantenemos el existente, también me parece bien.
@kdenz Creado https://github.com/react-native-community/react-native-segmented-control para SegmentedControlIOS
@vonovak Creado https://github.com/react-native-community/react-native-checkbox para el repositorio de casilla de verificación

Solo para resumir los pasos aproximados que debemos tomar para las extracciones:

  1. Extraiga la versión actual del módulo en el que está trabajando y todas sus dependencias en un repositorio de git separado, y envíe un PR al que se creó para su comunidad de RN. Consulte react-native-webview para ver un ejemplo de cómo debería funcionar si contiene código nativo.
  2. Agregue una advertencia de desaprobación a React Native usando el módulo warnOnce que ya existe, consulte react-native-deployment.js para ver un ejemplo.
  3. Luego cerraremos todos los problemas / relaciones públicas y dirigiremos a las personas para que utilicen los proyectos y repositorios recién creados.
  4. Después de una versión o dos, eliminaremos por completo el código de React Native, momento en el que solo funcionará el módulo externo.
  5. Alternativamente, podemos probar un enfoque en el que eliminaremos el código del repositorio de RN inmediatamente, pero agregaremos el nuevo repositorio de la comunidad como una dependencia de React Native y mantendremos las API existentes funcionando como están. Sin embargo, no estoy seguro de si eso funcionará para módulos con dependencias nativas.

Por favor hazme saber si tienes preguntas :)

  • Mueva ImageStore a un repositorio comunitario

Creo que deberíamos desaprobar esto a favor de cualquier solución FileSystem . El caso de uso principal es obtener Base64 a partir de una imagen. Tampoco tiene soporte para Android.

¡Hola @cpojer! Yo ayudaría con

  • Eliminar MaskedViewIOS y posiblemente pasar al repositorio de la comunidad

¡Me gustaría ayudar!
¿Podría trabajar en

  • Elimine ProgressBarAndroid del repositorio, posiblemente mueva al repositorio de la comunidad
    ?

¡Hola @cpojer! ¿Podría ayudar con

  • Mueva el código nativo ActionSheetIOS a expo.

@cpojer Me encantaría ayudar, inscríbeme en Bibliotecas / CameraRoll (componentes ImagePickerIOS y CameraRoll)

La aplicación RNTester no tiene su propio package.json, por lo que cualquier componente que eliminemos debería eliminarse de la aplicación RNTester o permanecer en el núcleo como dependencia. ¿Cuál es el enfoque de RNTester con respecto a este adelgazamiento?

@cpojer Puedo ayudar a mover el Portapapeles a un repositorio comunitario :)

¿Puedo ayudar con esta tarea? @cpojer

  • Mueva el selector a un repositorio de la comunidad.

@jainkuniya ¿ Quizás podamos trabajar juntos?

@zhaozhiming , seguro, lo que estaba planeando es fusionarlo primero en el repositorio de RN y luego pasar al repositorio de la comunidad.

Interesante. ¿Qué pasará con el RNTester? Espero que podamos mantenerlo con todos los componentes.

@cpojer puedo ayudar con

  • Mover "Compartir" al repositorio de la comunidad

Además, sería muy útil tener algún tipo de plantilla coordinada, por lo que existe el código nativo como una lib, una manera fácil de desarrollarlo y contribuir.

@pvinis Tal vez eche un vistazo a esta confirmación del repositorio de NetInfo en el que estoy trabajando:

https://github.com/matt-oakes/react-native-netinfo/tree/83e96b30fda1c18f62d27ec0db61db7f56eddc1f

Todavía no hay código NetInfo, pero tiene las partes de la biblioteca de Android e iOS y un proyecto de ejemplo que se vincula sin necesidad de un package.json anidado.

Ahora estoy planeando mover el código NetInfo y luego mover los ejemplos de RNTester al proyecto example .

@EvanBacon suena bien. ¿Quiere registrarse para agregar una advertencia a RN para desaprobar ImageStore y recomendar una solución de terceros?

@ matt-oakes ya ha hecho un gran trabajo con NetInfo, ese es un modelo para reflejar todas las extracciones: https://github.com/react-native-community/react-native-netinfo/pull/1

@pvinis como @ matt-oakes dice que cada proyecto debe tener sus propios ejemplos y código de prueba. Creo que una vez que hayamos terminado, podemos considerar la creación de un solo ejemplo de RNTester que extraiga todos los módulos extraídos más utilizados y los reúna en una sola aplicación.

VirtualizedList se queda, ¿verdad? Lo vi antes en la lista pero veo que ya no lo es.

Hola @cpojer , puedo encargarme de mover ImageEditor a un repositorio separado.

Hola @cpojer, me encantaría trabajar en este.

  • Identifique todas las dependencias en package.json que no se usan directamente en React Native

@ matt-oakes, ¿cómo planeas probar o ayudar con el desarrollo de esta biblioteca? necesitamos un proyecto que incorpore la biblioteca, que se pueda actualizar / eliminar y recrear fácilmente o algo así.

Sería fácil de esta manera para otros contribuir. Podría ser una aplicación de "ejemplo", pero en mi opinión, una aplicación de "ejemplo" es para mostrar cómo usar una biblioteca, donde una aplicación "dev" sería donde la biblioteca puede ser desarrollada, probada, etc.

¿Alguna idea para eso?

@brunolemos sí lo es, perdón por mi error por ponerlo ahí al principio.

@Trancever ¡ https://github.com/react-native-community/react-native-image-editor para que envíes un PR en contra!
@ nimish-gupta ¡eso es increíble! ¿Puede hacer el análisis y crear un problema separado que analice las dependencias no utilizadas? o envíe una solicitud de extracción con explicaciones claras sobre por qué se pueden eliminar (es decir, no se pueden encontrar, etc.)
@pvinis estamos discutiendo actualmente si tiene sentido crear un andamio. Hasta que tengamos eso, basando su trabajo en la estructura en https://github.com/react-native-community/react-native-webview o https://github.com/react-native-community/react-native -netinfo tiene más sentido para mí.

hola @cpojer para el proyecto PickerIOS y Picker, planeo seguir los siguientes pasos:

  • Agregue un warning en el PickerIOS , que está obsoleto y se eliminará en una versión posterior.
  • Después del lanzamiento, elimine PickerIOS de RN .

Mientras tanto, podemos mover Picker al repositorio de la comunidad.

Sugerencias?

@jainkuniya Creo que la idea es buena, pero ten en cuenta que Picker usa PickerIOS bajo el capó. Creo que sería mejor si pudiéramos deshacernos de PickerAndroid y PickerIOS y en su lugar solo exponer Picker, ¿qué piensas? Muchos otros componentes ya funcionan de esta manera.

Para darles a las personas una idea del proceso por el que pasé para mover el código NetInfo:

1) Usé create-react-native-library para generar el andamio: npx react-native-create-library --platforms ios,android --package-identifier com.reactnativecommunity.netinfo --prefix RNC --license MIT netinfo
2) Creó un proyecto de ejemplo ejecutando react-native init NetInfoExample en la raíz del nuevo proyecto de biblioteca. Luego cambié el nombre de la carpeta creada a solo example .
3) Se eliminó example/package.json y se movieron las dependencias y los scripts a la raíz package.json . También moví algunos de los otros archivos generados como babel.config.js a la raíz del proyecto.
4) Se actualizaron las referencias a las bibliotecas React Native en los ejemplos de archivos gradle de Android y el proyecto Xcode. Buscar y reemplazar ../node_modules/react-native y reemplazarlo con ../../node_modules/react-native fue suficiente.
5) Se actualizó la ruta al nombre del módulo principal en MainApplication.java y AppDelegate.m de index a example/index .
6) Se agregaron los módulos babel-plugin-module-resolver y se configuraron así en babel.config.js . Esto le permite importar el código de la biblioteca de la misma forma que lo haría un usuario.
7) Vinculó manualmente el proyecto de la biblioteca con el ejemplo. Esto es muy similar a cómo lo haría normalmente, pero la ruta en Android en settings.gradle será ../../android ( así ).
8) Luego moví los archivos de código nativo, renombrándolos con un prefijo RNC (React Native Community) en lugar del antiguo RCT . Coloqué el código Javascript en js y cambié la ruta del índice en package.json .
9) Luego moví los ejemplos de RNTester al proyecto example y arreglé un poco el código. Siéntase libre de tomar el archivo example/index.js como una forma de contener los ejemplos que copia de RNTester. Es solo una envoltura liviana como la que había originalmente en RNTester.
10) Ordené un poco el proyecto para que coincida con la configuración de

Con suerte, eso ayuda a la gente :)

@pvinis Creo que hay mucho cruce entre mostrarle a la gente cómo usar la biblioteca y ayudar con el desarrollo, especialmente cuando la superficie es pequeña como con NetInfo. El example en el proyecto prácticamente cumple ambos propósitos al mismo tiempo.

Para las pruebas automatizadas, aún no lo he analizado completamente, sin embargo, he usado Jet (basado en la parte superior de Detox y usado por react-native-firebase ) para hacer pruebas de extremo a extremo con react-native- ubicación .

Impresionante. Hice el mismo proceso hace unos días cuando intentaba extraer algunas funciones de la aplicación a una biblioteca. No hice la eliminación package.json y un par de pequeños pasos más. Intentaré comprobar todo lo que hiciste y lo que hice yo, y veré si todavía hay cosas que no están claras.

Gracias por los detalles. :)

@cpojer SnapshotViewIOS también parece usarse internamente para algunas pruebas de integración de iOS. Solo está disponible si enlaza con el módulo nativo RCTTest . El uso está aquí: https://github.com/facebook/react-native/blob/master/RNTester/js/RNTesterApp.ios.js#L180

¿Estamos simplemente eliminando SnapshotViewIOS de la exportación RN pública, es decir, todavía debería estar disponible de forma privada para el uso de prueba?

Hubo una discusión sobre cómo mantener el historial de los archivos que se están importando. Encontré esta guía que fue realmente útil y me permitió hacerlo para el módulo NetInfo:

https://stosb.com/blog/retaining-history-when-moving-files-across-repositories-in-git/

Como resumen, primero debe averiguar qué archivos necesita copiar. Luego crea un script como este:

#!/bin/bash

mkdir -p combined/

# Pipe output to silence "file not found" warnings.
mv ReactAndroid/src/main/java/com/facebook/react/modules/netinfo/NetInfoModule.java combined/ 2>/dev/null
mv Libraries/Network/RCTNetInfo.h combined/ 2>/dev/null
mv Libraries/Network/RCTNetInfo.m combined/ 2>/dev/null
mv Libraries/Network/NetInfo.js combined/ 2>/dev/null

true

Debería colocar este archivo en algún lugar fuera del repositorio.

Luego debe ejecutar estos comandos:

git fetch origin --unshallow
git checkout -b history
git filter-branch -f --prune-empty --tree-filter ~/treefilter.sh @
git filter-branch --prune-empty -f --subdirectory-filter combined

El primer comando filter-branch tomará un tiempo y usará el script para mover todos los archivos que le interesan a una sola carpeta. El segundo comando debería ser bastante rápido y moverá los archivos de la nueva carpeta a la raíz y luego mantendrá solo las confirmaciones que alteren cualquiera de los archivos que desea conservar.

Luego puede terminar con un historial como este: https://github.com/react-native-community/react-native-netinfo/commits/master

hola @cpojer me encantaría trabajar

  • Mover ProgressViewIOS a un repositorio de la comunidad

Gracias

Nota sobre el polyfill de recuperación:

Elimine el polyfill fetch del repositorio y reutilice whatwg-fetch directamente si es posible

Tuvimos que bifurcarlo porque nuestro módulo Blob no es estándar y no libera automáticamente sus recursos. Debería ser más fácil implementar la limpieza automática de recursos con el nuevo sistema de módulos nativos, pero hasta entonces deberíamos mantener el polyfill bifurcado.

@cpojer Mover "Compartir" al repositorio de la comunidad es actualmente otro repositorio que tiene un conjunto de funciones más rico que el recurso compartido dentro del react-native. Entonces me gustaría tener un nuevo repositorio llamado react-native-simple-share o algo así.

Por favor, eche un vistazo a esta rama (eliminaré este repositorio una vez que obtengamos un nuevo repositorio de la comunidad)

Nota sobre el polyfill de recuperación:

Elimine el polyfill fetch del repositorio y reutilice whatwg-fetch directamente si es posible

Tuvimos que bifurcarlo porque nuestro módulo Blob no es estándar y no libera automáticamente sus recursos. Debería ser más fácil implementar la limpieza automática de recursos con el nuevo sistema de módulos nativos, pero hasta entonces deberíamos mantener el polyfill bifurcado.

Como necesito el soporte de AbortController.Signal, estaba buscando hacer una actualización del polyfill bifurcado. ¿Encajaría eso con el futuro del polyfill fetch inside core?

@cpojer Me gustaría trabajar en PushNotificationIOS.

@cpojer en el que podría ayudar

  • Mover ImageEditor a un repositorio comunitario

¡Gracias!

@ nicholaslee119 Creado https://github.com/react-native-community/react-native-progress-view para ti. Consulte los comentarios anteriores sobre cómo progresar.
@Ansalibrahim Buen punto. Creado https://github.com/react-native-community/react-native-simple-share para ti. ¡Por favor envíe un PR allí!
@rafaellincoln Creado https://github.com/react-native-community/react-native-push-notification-ios para que trabajes .
@dratwas @Trancever ya está en él, trabaje con él en el repositorio que se creó para él.
@ Jyrno42 ¿Podríamos actualizar a un polyfill de terceros que admita todo lo que necesitamos?

@cpojer Lo siento, no vi que @Trancever está en él.
Podría tomar Move ImageStore to a community repo si aún no está tomado o Move ImagePickerIOS to a community repo

¿Alguien podría decirme por qué se eliminarán AsycnStorage y PushNotificationIOS? Creo que ambos son utilizados por muchas aplicaciones, así que tal vez podríamos moverlos a la comunidad en lugar de simplemente eliminarlos.

Especialmente PushNoticationIos es utilizado por mucha gente. Estoy usando https://github.com/zo0r/react-native-push-notification que usa PushNotificationIos. ¿Existe una alternativa mejor que no conozco?

@vdlindenmark AsyncStorage no se eliminará, pero se moverá

¡Me gustaría tomar Picker!

Si aún no se ha tomado Move ImagePickerIOS to a community repo , con mucho gusto ayudaría 😄

Hola @cpojer , he enviado # 23359 para fusionar PickerIOS y Picker . Por favor revise :).

Este problema debe fijarse 📌

@dratwas Lo siento, me confundí allí. En realidad, estamos desaprobando ImageStore completo porque ya hay opciones de terceros disponibles, como lo señaló @EvanBacon. ¿Quieres ser voluntario para otro módulo?
@vdlindenmark como @Krizzu está señalando, ambos módulos se
@Keraito Creé https://github.com/react-native-community/react-native-image-picker-ios para que le envíes un PR.
@andersonaddo hecho! Gracias por la sugerencia.

@cpojer Me pregunto si ustedes también han evaluado la posibilidad de mover AccessibilityInfo al repositorio de la comunidad.

No sé si podría vivir aparte del núcleo, pero veo el beneficio de aumentar el soporte de accesibilidad en React-Native.

Ya existen algunas propuestas para aumentar el soporte de accesibilidad en la capa de vista y hacerlo más multiplataforma (https://github.com/react-native-community/discussions-and-proposals/pull/56, https: // github.com/react-native-community/discussions-and-proposals/pull/55, https://github.com/react-native-community/discussions-and-proposals/pull/54), pero algo que RN no hace En este momento, y no hay ningún problema o propuesta al respecto, es el acceso para todas las preferencias de algunos usuarios en el nivel del sistema operativo. Por ejemplo: no hay forma de obtener la opción "reducir movimiento", que es necesaria para adaptar la aplicación reduciendo / desactivando animaciones .

Creo que las opciones proporcionadas por UIAccessibility en iOS (no sé el equivalente en Android) podrían estar disponibles desde AccessibilityInfo .

Y tener un repositorio comunitario podría atraer más contribuciones para ese problema en particular.

Gracias.

@cpojer No puedo ver ningún módulo sin asignar, así que hablaré con @Trancever si puedo ayudar con:

  • Mover ImageEditor a un repositorio comunitario

@elucaswork La accesibilidad es increíblemente importante y creo que debe ser parte de React Native. Debemos hacer todo lo posible para mejorar el soporte de accesibilidad en React Native de forma inmediata.
¡@dratwas suena bien!

  • Mueva el selector a un repositorio de la comunidad.

@cpojer ¿ puedo iniciar este problema?

algo que RN no proporciona en este momento, y no hay ningún problema o propuesta al respecto, es el acceso para todas las preferencias de algunos usuarios en el nivel del sistema operativo. Por ejemplo: no hay forma de obtener la opción "reducir movimiento", que es necesaria para adaptar la aplicación reduciendo / desactivando animaciones .

Creo que esas opciones proporcionadas por UIAccessibility en iOS (no sé el equivalente en Android) podrían estar disponibles desde AccessibilityInfo .

Hoy me preguntaba cómo leer la opción "reducir movimiento" en React Native, pero parece que no se ha implementado.

¿Cuál sería la mejor manera de realizar una solicitud de función y obtener algo de visibilidad? ¿ Https://react-native.canny.io/feature-requests sigue siendo el foro preferido para las solicitudes de funciones?

¿Qué debemos hacer con VibrationIOS ? Se ha marcado como obsoleto a favor de Vibration desde marzo de 2016 . Parece un candidato fácil para la eliminación.

@hramos gran sugerencia! Yo me encargaré de quitarme ese.

@cpojer Me di cuenta de que el Picker / PickerIOS no estaba asignado a nadie. Me gustaría trabajar en eso también, si es posible.

Hola @rafaellincoln , para las cosas del selector, supongo que

Quería dar una actualización rápida sobre el progreso que todos han estado haciendo en el esfuerzo de Lean Core. Solo quiero decir lo impresionado que estoy por todas sus contribuciones en poco más de una semana. Muchas muchas muchas gracias.

Aquí está todo el trabajo que ya está terminado:

  • NetInfo (https://github.com/react-native-community/react-native-netinfo) se dividió con éxito y se lanzó en npm a través de @ react-native-community / netinfo por @ matt-oakes, quien incluso agregó nuevas pruebas ¡y nuevas funciones del módulo!
  • ViewPagerIOS (https://github.com/react-native-community/react-native-viewpager/pull/1) fue dividido con éxito por @ferrannp.
  • AsyncStorage (https://github.com/react-native-community/react-native-async-storage) fue eliminado por @Krizzu.
  • StatusBar (https://github.com/react-native-community/react-native-statusbar/pull/1) fue movido a un repositorio separado por @dmtrKovalenko.
  • Slider (https://github.com/react-native-community/react-native-slider/pull/1) fue dividido por @michalchudziak.
  • MaskedViewIOS (https://github.com/react-native-community/react-native-masked-view/pull/1) fue convertido en un repositorio comunitario por @FonDorn.
  • PushNotificationIOS (https://github.com/react-native-community/react-native-push-notification-ios/pull/1) fue extraído por @rafaellincoln.
  • ImageEditor (https://github.com/react-native-community/react-native-image-editor/pull/1) fue extraído por @Trancever.
  • @EvanBacon agregó un mensaje de obsolescencia para ImageStore en # 23330.
  • @wellmonge fusionó AlertIOS y Alert en # 23318.
  • Los ingenieros de Callstack lanzaron la primera versión de la nueva CLI de React Native: https://blog.callstack.io/the-react-native-cli-has-a-new-home-79b63838f0e6

También quiero resaltar cómo la extracción de estos módulos puede conducir a un mejor mantenimiento de esos módulos, es decir, @ matt-oakes agregó pruebas para NetInfo (https://github.com/react-native-community/react-native-netinfo/pull/ 4) y @ifsnow agregó tipos de flujo a AsyncStorage (https://github.com/react-native-community/react-native-async-storage/pull/4). Al desacoplar estos componentes de React Native (y Facebook), pueden moverse mucho más rápido individualmente sin ser bloqueados por un empleado de Facebook. Además, debido a que podemos migrar problemas existentes y solicitudes de extracción desde el repositorio de React Native, también facilitará el mantenimiento de React Native y podremos responder a las solicitudes de extracción más rápido.

Esto es en lo que estamos trabajando o en lo que estamos trabajando a continuación:

  • Eliminar VibrationIOS
  • Eliminar dependencias de terceros no utilizadas
  • Comience a migrar el código interno de Facebook para usar los nuevos paquetes react-native-community

Nuevamente, a todos los que han estado ayudando hasta ahora, ¡gracias!

@cpojer

  • Eliminar dependencias no utilizadas
  • Identifique todas las dependencias en package.json que no se usan directamente en React Native

Las tareas anteriores se completan con los PR n. ° 23428 y n. ° 23467

@cpojer

  • Eliminar SwipeableList

abordado en # 23484, puede eliminar ListView también si lo desea.

FWIW, CameraRoll depende de ListView. Quizás moverlo primero sería útil para eliminar ListView.

FWIW, CameraRoll depende de ListView. Quizás moverlo primero sería útil para eliminar ListView.

El archivo CameraRollView en RNTester parece ser lo único que usa ListView en ReactNative. Quizás un PR para cambiar eso a FlatList sería algo bueno para romper esa dependencia. Aceptaría felizmente que si sucede antes de que CameraRoll se retire por completo

En comparación con otras versiones, el tamaño aumenta, lo cual es un punto clave. Por lo tanto, ¿hay alguna forma de reducir el tamaño en react native 0.58.4? Solo para una página se necesitaron 18 MB.
Las siguientes son mis dependencias
"react": "16.6.3", "react-native": "0.58.4", "react-native-elements": "^1.0.0", "react-native-gesture-handler": "^1.0.15", "react-native-vector-icons": "^6.3.0", "react-navigation": "^3.2.3"

Vi que navigatorIos se eliminó de rn 0.59. Me preguntaba si ya existe un paquete comunitario para ello. @cpojer

@cpojer puedo trabajar en este, si alguien no ha comenzado a trabajar en esto

  • Elimine el polyfill fetch del repositorio y reutilice whatwg-fetch directamente si es posible

@ nimish-gupta ¡pruébalo! Puede haber algunos errores, pero podemos discutir eso en las relaciones públicas y ver cómo va. Puede que no sea factible hacer esto, pero intentemos y veamos hasta dónde podemos llegar.

@cpojer Me pregunto si KeyboardAvoidingView es lo suficientemente útil para mantenerlo en el núcleo.
¿Han pensado en eliminarlo también para dar espacio a soluciones más sólidas como https://github.com/APSL/react-native-keyboard-aware-scroll-view , o es muy útil mantenerlo en el núcleo? ?

@elucaswork en realidad usamos ese sorprendentemente mucho en FB, así que espero que lo sigamos manteniendo por un tiempo. Tal vez podamos discutir la posibilidad de moverlo a un repositorio separado después de que hayamos terminado con el trabajo actualmente previsto en este proyecto.

Buen trabajo aqui. Sin embargo, estaba intentando usar NetInfo y AsyncStorage y parece que faltan archivos podspec . @cpojer Creo que muchos de nosotros usamos Pods, ¿no deberíamos convertirlo en una especie de estándar con paquetes nativos de reacción que tienen códigos iOS nativos?

Buen trabajo aqui. Sin embargo, estaba intentando usar NetInfo y AsyncStorage y parece que faltan archivos podspec . @cpojer Creo que muchos de nosotros usamos Pods, ¿no deberíamos convertirlo en una especie de estándar con paquetes nativos de reacción que tienen códigos iOS nativos?

Parece que estos tienen subespecificaciones en el archivo de pod de React Native que probablemente deban agregarse a los nuevos repositorios: https://github.com/facebook/react-native/blob/master/React.podspec#L301 -L304

@syaau @TheSavior Buen lugar. Abrí un PR para agregar un Podspec al nuevo repositorio de NetInfo:

https://github.com/react-native-community/react-native-netinfo/pull/17

@cpojer en mi experiencia KeyboardAvoidingView es realmente escabroso, ¿tal vez esta sea una buena oportunidad para mejorarlo si se va a quedar en el núcleo?

Me gustaría proponer que desaprovechemos ART a favor de react-native-svg .

@justDanielMata sí, definitivamente creo que debería mejorarse si permanece en el núcleo, pero eso debería manejarse en una discusión diferente.
@EvanBacon Hablaré de esto con el equipo y me pondré en

Eliminar WebView del repositorio de RN

Estoy feliz de tomar esto

@ericlewis, lamentablemente, solo se puede hacer desde el lado de FB porque todavía dependemos de él internamente.

NavigatorIos se ha eliminado de react-native , @cpojer , react-native-community ? Quiero revertirlo, si está bien

tengo una versión funcional aquí
https://github.com/michaelknoch/react-native-navigator-ios

@sijad (para su información: no he arreglado ninguna importación de tipo de flujo interrumpido)

@sijad Nos gustaría poner solo componentes en react-native-community que todavía recomendamos usar. Los componentes que estamos sacando de React Native como parte de Lean Core anteriores son todos buenos componentes para usar en sus aplicaciones. NavigatorIOS no es algo que queremos que la gente continúe usando, ya que recomendamos otras soluciones de navegación. Sin embargo, parece que @michaelknoch se encargó de mantenerlo, por lo que recomiendo usar esa versión hasta que pueda pasar a otra.

pero ¿por qué desaconseja el uso de navigatorios? ¿Crees que el rendimiento de la navegación basada en JS (fe react-navigation) es lo suficientemente rápido como para que la navegación nativa ya no sea obligatoria?
@cpojer

@cpojer Hola, acabo de crear un PR para ProgressViewIOS https://github.com/react-native-community/react-native-progress-view/pull/1

@michaelknoch por el contrario, definitivamente le recomendamos que utilice una solución de navegación nativa. Simplemente sucede que NavigatorIOS era un sistema de navegación heredado que ya no usamos en Facebook. En este momento, utilizamos nuestro propio sistema de navegación nativo personalizado en Facebook que, lamentablemente, no es de código abierto. Recomendamos a las personas que utilicen https://github.com/wix/react-native-navigation.
@kdenz increíble, ¡lo comprobaré!

@cpojer Acaba de completar la migración y resumen de SegmentedControlIos y agregó una aplicación de ejemplo.

  • Probé el componente y todo funciona bien en un nuevo proyecto de RN.
  • Lanzado a npm .

@cpojer completó el cambio de Clipboard-Api del núcleo de RN a la versión comunitaria y agregó una aplicación de ejemplo para probar todo.

  • Probé el componente y todo funciona bien en un nuevo proyecto de RN.
  • Lanzado a npm .

@cpojer Recientemente comencé con react native, pero podría intentarlo

  • Mover "TestModule" nativo a RNTester

si aún no está resuelto!

@cpojer ¿qué pasa con el componente Toast? Creo que debería quedar obsoleto ahora y eliminarse más tarde.
Razones:

  1. Toast es solo otro tipo / estilo de notificación, hay muchos tipos de componentes de notificaciones
  2. Existe solo implementación de Android
  3. Hay un montón de componentes "similares a tostadas" mantenidos por la comunidad https://github.com/search?q=react+native+toast que son multiplataforma

¿Qué piensa usted al respecto?

Estoy interesado en mantener TabBarIOS y mantenerlo / a prueba de futuro. Creo que es bastante valioso, junto con NavigatorIOS, como una solución liviana con accesibilidad de primera clase.

Si la opinión generalizada es que no debería estar bajo react-native-community, ya que al igual que NavigatorIOS ya está en desuso, lo haría por mi propia cuenta pero lo preferiría bajo el paraguas de -community.

¿Hubo una razón para la desaprobación además de que no se usa dentro de Facebook y es solo iOS (lo cual es una razón decente)?

Tengo una versión funcional aquí: https://github.com/michaelknoch/react-native-tabbar-ios

@karlsander

Hola, muevo el código nativo ActionSheetIOS a expo. Por favor marque 🙇
https://github.com/expo/react-native-action-sheet/pull/105

Estaba tratando de encontrar dónde se usa react-clone-referenced-element , pero sin suerte. ¿Me estoy perdiendo de algo? Soy nuevo en contribuir y en react-native code-base, lo siento si es una pregunta estúpida.

@Rendfold no te falta nada, me preguntaba exactamente lo mismo.

Aquí está la confirmación relevante en la que se agregó: https://github.com/facebook/react-native/commit/665954efcc4460839d00a572be84cf204a42c0d5

Parece que es para satisfacer la dependencia ahora que se ha eliminado ListView. Creo que esto solo se usa dentro de Facebook también.

@ericlewis se actualizó allí, pero no se agregó, así que fui más allá. Tuve que ir a las confirmaciones de 2016 para encontrar dónde estaba eaba2abc0b76f9a26703c87eecf4a8bb52f9ed3e
Pero sí, tenías razón, es para ListView.

@cpojer Estaba hurgando en DrawerLayout / DrawerLayoutAndroid para # 23730 y parece bastante aislado.

¿Sería un buen candidato para extraer también? Estoy feliz de asumir eso.

Noté que de los módulos mencionados aquí, solo react-native-async-storage y react-native-netinfo han pasado las pruebas e2e para ambas plataformas, react-native-cameraroll también las tiene, pero las pruebas fallan en Android.

Recientemente analicé las pruebas e2e de react-native-svg usando Detox y lo configuré en travis y bitrise:
https://travis-ci.org/msand/react-native-svg-e2e/builds
https://app.bitrise.io/app/1a150b039e9b8fbd#/builds

Lo tengo tomando capturas de pantalla tanto en ios como en android, y probando la configuración del nuevo proyecto en modo simple react-native para ambos, y además con cocoapods para ios.

No tengo acceso para configurar bitrise para el repositorio react-native-svg, @cpojer ,

Hacer que funcione sin kvm en travis y bitrise requirió el último emulador canary y muchos intentos para encontrar una configuración que funcione, ya que no admiten la aceleración. De todos modos, en caso de que algún otro módulo esté interesado en configurar e2e en otro lugar que no sea circleci, entonces este repositorio podría ser útil: https://github.com/msand/react-native-svg-e2e

Fuera del tema: si alguien está interesado en ayudar con las pruebas react-native-svg, sería genial obtener un script / aplicación para ejecutar las pruebas desde aquí: https://github.com/web-platform-tests/ wpt / árbol / master / svg
Probablemente pueda usar https://github.com/kristerkari/react-native-svg-transformer para cargar los archivos svg como están, y luego un paso de comparación con las capturas de pantalla sería realmente útil.

Con respecto a desaprobar / dividir ART, estoy a favor de separarlo del repositorio react-native, dejarlo vivir como está y obtener correcciones de errores / mejoras de rendimiento. Al menos si solo tiene, por ejemplo, datos de ruta simples que desea renderizar y no necesita ninguna otra parte de la especificación svg, entonces es probable que ART tenga más rendimiento cuando se use en react-native al menos. Ya que no tiene que admitir tantas funciones como algo que tenga como objetivo la conformidad completa con las especificaciones de svg.

Si renderiza en lienzo usando ART en la web, también podría ser más rápido que svg, dependiendo del caso de uso; profile para encontrar sus puntos de acceso / cuellos de botella reales antes de esforzarse en este tipo de optimización y, si lo hace, realice las mediciones A / B adecuadas con estadísticas sobre suficientes datos. Y, si tiene código existente usando ART, probablemente esté bien mantenerlo como está. Pero, para el nuevo código, probablemente recomendaría usar svg conforme a las especificaciones y escribirlo de una manera compatible con la web (react-native-) (a menos que necesite un rendimiento de nivel canvas / webgl). También se incluirá una implementación de compatibilidad index.web.js en la próxima versión de react-native-svg para este propósito.

Hoy me preguntaba cómo leer la opción "reducir movimiento" en React Native, pero parece que no se ha implementado.
¿Cuál sería la mejor manera de realizar una solicitud de función y obtener algo de visibilidad? ¿ Https://react-native.canny.io/feature-requests sigue siendo el foro preferido para las solicitudes de funciones?

@kristerkari He enviado un PR que agrega soporte para "reducir el movimiento" en AccessibilityInfo
https://github.com/facebook/react-native/pull/23839

@cpojer Hola, lamento haber estado fuera por un tiempo. He movido con éxito la barra de estado de reacción nativa. Pero no lo menospreció en el núcleo. ¿Debería hacerlo ahora?
Y también estoy planeando crear una versión adicional para el paquete react-native-status-bar.

@dmtrKovalenko sí, ¡hazlo!

Hizo un PR para la barra de estado de desaprobación -> # 23898

No tengo acceso para configurar bitrise para el repositorio react-native-svg, @cpojer ,

@msand Creo que todo el mundo se ha decidido por CircleCI, porque funciona más rápido como lo comparó @gengjiawen , pero no estoy seguro de si eso es 'oficial'.

react-native-cameraroll también los tiene, pero las pruebas fallan en Android.

Tengo algunos problemas para aprobar la prueba de Android, la prueba es realmente simple (se inicia la aplicación), por lo que es algo en config. He copiado la configuración de netinfo, pero no funciona de fábrica. @ matt-oakes, ¿ves de un vistazo si hay algo en particular que me haya perdido?

@bartolkaruza Esto es algo que arreglé en el repositorio de NetInfo aquí: https://github.com/react-native-community/react-native-netinfo/pull/25

Enviaré un PR para arreglar Camera Roll ahora.

@cpojer ¿ algún plan para extraer tvOS del núcleo?

Creo que también deberíamos eliminar Button .

¿Eliminar o extraer? Preferiría extraer que eliminar.

Una pregunta para las bibliotecas nativas de reacción que actualmente utilizan la funcionalidad que se extrae en módulos de la comunidad:

¿Cuál es el enfoque recomendado de confiar en módulos extraídos? ¿Dependencias directas o peerDependencies?

Como ejemplo, reactotron-react-native actualmente usa AsyncStorage directamente. Cuando se usa react-native-asyncstorage como una dependencia directa, podría llevar a que se usen múltiples versiones en la aplicación consumidora. ¿Se está planificando esto o debería ser una dependencia entre pares?

Creo que debería ser una dependencia, y AsyncStorage define ReactNative como peerDependency, de esta manera podría usar varias versiones de AsyncStorage en la misma aplicación (excepto que desea asegurarse de usar la misma, y ​​lo deja claro en la biblioteca readme), pero el proceso de instalación mostrará una advertencia si la dependencia de ReactNative no se puede cumplir.

¿Es así de simple? ¿No habría potencialmente varias versiones del módulo nativo denominado "AsyncStorage"? Creo que esto podría generar problemas, ¿o no?

Sí, habría varias versiones, pero si cada una es independiente y no comparte datos entre ellas, no debería haber problemas.

Hola @cpojer Me gustaría ayudar con algunos de estos problemas, ¿podría comenzar con "Mover el componente PickerIOS / Picker combinado al repositorio de la comunidad"?

Hola @wagnermaciel , yo estamos trabajando en ello. Y casi hecho. @cpojer , ¿puedes crear un repositorio comunitario? De hecho, supongo que el plan es trasladarlo a la comunidad y fusionar ambos componentes.

https://github.com/jainkuniya/react-native-picker

@jainkuniya No te preocupes. @cpojer ¿Hay algún problema aquí que pueda

@wagnermaciel ¡ gracias por unirte a nuestro esfuerzo! Acabo de actualizar la publicación original y eliminé a las personas que no respondieron a las tareas para las que se inscribieron. Cualquiera de los que aparecen arriba sin un nombre junto a ellos puede ser recogido por usted si lo desea. ¿En cuál quieres trabajar?

Hola @cpojer , ¿puedo ser asignado para mover "ImagePickerIOS a un repositorio de la comunidad"? Estaré feliz de mantenerlo. ¡Muchas gracias de antemano!

@ aerlinn13 Te

@cpojer ¡ Gracias por la rápida respuesta! ¿Podrías asignarme "Eliminar ProgressBarAndroid del repositorio, posiblemente mover al repositorio de la comunidad"? Me encantaría trabajar en eso. ¡¡¡Gracias!!!

@wagnermaciel hecho! Espero su contribución :)

Hola @cpojer , quiero mencionar el componente ToastAndroid. ¿Tienes una idea de qué hacer con eso?
Parece que ToastAndroid se usa en HMRLoadingView y LinkingExample. Por lo tanto, es cuestionable cómo reemplazar el tipo de notificación para esos dos componentes.
De todos modos, si FB lo usa internamente, entonces no es un problema en el momento actual e ignore mi comentario :)

Mi publicación original:

@cpojer ¿qué pasa con el componente Toast? Creo que debería quedar obsoleto ahora y eliminarse más tarde.
Razones:

  1. Toast es solo otro tipo / estilo de notificación, hay muchos tipos de componentes de notificaciones
  2. Existe solo implementación de Android
  3. Hay un montón de componentes "similares a tostadas" mantenidos por la comunidad https://github.com/search?q=react+native+toast que son multiplataforma

¿Qué piensa usted al respecto?

@radeno No creo que lo vayamos a eliminar ahora, pero podemos optar por hacerlo más tarde.

Lo siento, @cpojer estuvo muy ocupado el mes pasado, pero hoy reanudaré el trabajo en ProgressViewIOS

@cpojer Acabo de notar que "Deprecate StatusBarIOS" está marcado, pero StatusBarIOS.ios y StatusBarIOS.android no han cambiado desde 2018. ¿Pasé por alto algo?

Si no falta nada, lo siento. De lo contrario, avíseme, porque puedo ayudarlo.

@cpojer ¿Podría proporcionar alguna aclaración sobre dónde encontrar o cómo crear los archivos para la carpeta ios? ¡Gracias por adelantado!

@wagnermaciel Consulte https://github.com/facebook/react-native/issues/23313#issuecomment -461462981 para conocer el proceso. Hay un código nativo de iOS, ya que no está implementado allí: https://github.com/facebook/react-native/blob/master/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js#L12

@cpojer listo para asumir el movimiento de cualquier componente que aún no esté asignado, o abordar la auditoría de dependencias de JS.

@cpojer Me gustaría contribuir a react-native ya que nuestra empresa lo está utilizando actualmente en producción. Encontré este problema general buscando buenos primeros números, pero no pude entender lo que todavía está en juego.

¿Cuáles son las principales prioridades? ¿Necesita más ayuda con los problemas en la parte superior (por ejemplo, mover ProgressViewIOS a un repositorio de la comunidad) o con los que están en la sección de trabajo futuro? Hay algunos que no tienen a nadie asignado (como el que mueve ProgressViewIOS) pero al leer el hilo parece que ya están tomados.

Las principales prioridades de

¿Tenemos las instrucciones para crear una nueva biblioteca RNC en algún lugar de una wiki o algo así? Será útil guardarlos y tenerlos para que otros los encuentren, no solo para RNC sino como una especie de plantilla / pautas para todas las bibliotecas.

En realidad, acabo de encontrar esto , pero aún no está hecho. :)

Creo que los próximos candidatos son:

  • KeyboardAvoidingView, SafeAreaView
  • Modal (?).

¡Estaría encantado de llevarse SafeAreaView !

¿Están todavía en juego esas migraciones desde el núcleo? Si es así, ¿cuáles son los próximos candidatos actualizados? Me gustaría intentar echar una mano también :)

Creo que @brentvatne @ide @ericvicenti @kmagiera ha informado opiniones sobre lo que aún podría moverse y no afectar la experiencia del desarrollador al usar bibliotecas de terceros como react-navigation y reanimated.

Una de las cosas con las que podríamos necesitar ayuda es deshacernos del uso de ToolbarAndroid en RNTester en Android. ¿Alguien podría trabajar para reemplazar su uso con otra cosa?

Acabo de terminar de actualizar la publicación de nivel superior. ImagePickerIOS es uno de los componentes no reclamados donde el componente aún no se extrajo. ¿Hay alguien a quien le gustaría asumir el esfuerzo y enviar un PR al repositorio creado en https://github.com/react-native-community/react-native-image-picker-ios ?

Finalmente, parece que el trabajo para traer DatePickerIOS y DatePickerAndroid nunca se materializó, consulte https://github.com/react-native-community/discussions-and-proposals/pull/85 - ¡Esta es una buena oportunidad! Idealmente, alguien se encarga de extraer ambos componentes de DatePicker en este repositorio: https://github.com/react-native-community/react-native-datepicker

Con dos exportaciones de alto nivel, DatePickerIOS y DatePickerAndroid.

Después de que la versión inicial se envíe y los componentes estén obsoletos de RN, la comunidad podrá fusionar los dos en un solo componente.

cc @mmcknett y @Swaagie

Se agregó ReactART como otra parte de RN que nos gustaría extraer en un repositorio separado: https://github.com/react-native-community/react-native-art

¡Se busca ayudante!

¿Puedo tomar DatePickerIOS y DatePickerAndroid ?

@sijad, ¿ ha trabajado con React Native antes y tiene un plan sobre cómo realizar la extracción?

@cpojer ¿Puedo tomar ReactART a partir del próximo lunes? Actualmente estoy evangelizando e impulsando la adopción de RN en el trabajo, por lo que tuve que lidiar con ReactART y encapsular el código nativo como paquetes de RN reutilizables.

¡@ivanmoskalev suena genial! Avíseme cuando esté comenzando y haga un PR para el nuevo repositorio que creé :)

@cpojer , ¿por accidente review ? Tenía todo el trabajo menos los documentos y algunas pruebas de desintoxicación.

editar: cc @sijad para la conciencia

edición 2: https://github.com/Swaagie/react-native-datetimepicker todo funciona como existía en la rama review . No tengo derechos para volver a crear ese repositorio, pero me gustaría terminarlo.

También @sijad , si desea contribuir en forma de una revisión exhaustiva y correcciones de código (si es necesario), ¡sería muy bienvenido!

@cpojer @sijad el trabajo definitivamente se materializó como mencionó @Swaagie . También me acerqué a Discord.

No se preocupe por perder la rama, puede ser fácil pasarla por alto. En retrospectiva, debería haberle aconsejado a Martijn que abriera un PR en el estado Draft mientras él continuaba haciendo los PR más pequeños para el trabajo que hicimos y pusimos en nuestros sprints.

¿Existe algún lugar donde pueda ayudar a sugerir documentación para procedimientos operativos estándar para estos módulos más pequeños en Lean Core en react-native-community ? Hemos aprendido mucho iterando sobre react-native-datetimepicker ; nos encantaría compartirlo con la comunidad en general para hacer otras modularizaciones más fáciles / rápidas.

Oh hombre, debo tener y luego recrear un repositorio con un nombre diferente -.-

¿Podrías enviar un PR al nuevo selector de fechas?

¡Servirá! ¡Gracias por la respuesta rápida! Tampoco hay resentimientos, todos somos humanos y, como dijo @crobbins , deberíamos haber hecho el trabajo más visible.

@cpojer ¿ podrías actualizar la publicación superior y agregar mi identificador de github a:
Merge DatePickerIOS and DatePickerAndroid, move to community repo
¡Gracias!

@Swaagie Hecho!

Sería increíble si adopta https://github.com/yfuks/react-native-action-sheet y lo fusiona con ActionSheetIOS

Si va a mantener un repositorio que se crea para mover las API fuera del núcleo de React Native, asegúrese de ser capaz de admitir implementaciones para otras plataformas, y asegúrese de ver las implementaciones equivalentes en react-native-web y reaccionar -ventanas-nativas.

@cpojer , ¿realmente estás haciendo todos esos o puedo agarrar uno?
FWIW He progresado con RCTImagePickerIOS y enviaré un PR en los próximos días.

@ Johan-dutoit sí, desafortunadamente, la eliminación de módulos solo puede realizarla un empleado de Facebook. ¡Esperamos su extracción ImagePickerIOS!

@cpojer 🎉PR Enviado y probado 🎉

@cpojer Me gustaría que reaccionaras de forma nativa a esas carpetas que se consideran un poco confusas, en un archivo readme.md que explica lo que pretendes hacer en cada uno de los archivos. Esto facilitaría enormemente a quienes quieran contribuir al proyecto. Como anzuelo

Por ejemplo

image

  • React.js
    El propósito principal de este archivo es ...
  • react-native-implementation.js
    El propósito principal de este archivo es ...
  • react-native-interface.js
    El propósito principal de este archivo es ...

Esos tres archivos pueden ser un poco fáciles de entender, pero cuando tenemos archivos como estos puede resultar un poco complicado.
image

Obviamente, no tienen que ser demasiado descriptivos, y mucho menos describir lo que hace cada archivo. Solo la definición más relevante o básica de lo que se pretende hacer en una carpeta determinada.

Además, sería muy útil mostrar un esquema de cómo funciona este repositorio. Me gustaria saber tu opinion. Gracias por todo.

@cpojer ¿Queda algo que pueda recoger? Me encantaría colaborar.

Como @FLGMwt mencionó en https://github.com/facebook/react-native/issues/23313#issuecomment -469288200, sería genial mover DrawerLayoutAndroid también

Sería genial mover ToastAndroid y Animated también

@ecreeth , esos archivos usan createReactClass porque dependen de mixins que aún no se han eliminado. Los archivos que usan createReactClass todavía usan propTypes, pero se eliminarán para Flow una vez que se actualicen.

@TheSavior ¡ Muchas gracias por la información!

Me encantaría contribuir, veo que "Mover el botón a un repositorio de la comunidad" no se ha tomado. ¿Lo que hay que hacer? ¡Me encantaría ayudar!

Seguro. Solo revisa los otros como https://github.com/react-native-community/react-native-netinfo. Necesita tener el código nativo para ios y android, además de cualquier js. Desafortunadamente, no tenemos una forma específica de crear una nueva lib.

Hola, cómo usar webview después de eliminar webview en RN

Hola, me encantaría ayudar! Veo que todas las tareas de "eliminar" se han asignado a @cpojer , ¿hay alguna clase que pueda eliminar para obtener ayuda? por ejemplo, el "ImageStore"

Oye, puedo ayudar a mover DatePickerComponents, por favor déjame saber cómo puedo ser de ayuda @cpojer , ¡Gracias!

Hola @cpojer , puedo ayudar a mover el componente CheckBox, te agradeceré que me puedas guiar a lo largo del proceso. ¡Gracias!

Estoy feliz de intentar trasladar Button a un nuevo repositorio comunitario. Agradecería alguna orientación sobre cómo proceder, pero comenzaré por echar un vistazo a la fuente y comenzaré a orientarme. @cpojer por favor consejo.

PR abierto para eliminar Remove DatePickerAndroid, DatePickerIOS, TimePickerAndroid

https://github.com/facebook/react-native/pull/26729

¿Cómo decidimos cuándo agregar nuevas exportaciones al núcleo? Por ejemplo, el gancho useWindowDimensions se puede construir en el espacio de usuario pero se ha agregado al núcleo: https://github.com/facebook/react-native/blob/3b3c95b0170e60983eb6e89b910d100d08eee141/Libraries/Utilities/useWindowDimensions .js

Creo que lo que pensamos con los hooks es que tiene sentido modernizar el núcleo react-native para proporcionar hooks de forma predeterminada. No se sentiría genial que React native solo proporcionara API heredadas y que los ganchos las envuelvan en un paquete comunitario separado.

Entonces, creo que los ganchos son una pregunta específica distinta de agregar generalmente nuevas exportaciones al núcleo.

¡Hola a todos! Actualmente, los miembros de la comunidad no pueden realizar ninguna acción. Las eliminaciones programadas actualmente están en espera por dos motivos:

  • Estamos esperando un tiempo hasta que eliminemos componentes para que la comunidad tenga tiempo de migrar a las versiones extraídas.
  • Las eliminaciones solo las puede hacer alguien de Facebook porque en realidad solo estamos moviendo esos archivos para que sean internos de Facebook hasta que adoptemos los módulos externos en el futuro.

Con respecto a las API basadas en hooks, este tema no es la vía adecuada para esa discusión. En general, creo que deberíamos agregar API basadas en enganches progresivamente a medida que repensamos nuestra API pública en el futuro.

Hola a todos, soy nuevo en contribuir a proyectos de código abierto y me gustaría saber si todavía puedo ayudar con este problema.

Las mudanzas programadas actualmente están en espera por dos razones ...

¿Fue un error que ToolbarAndroid se eliminara (silenciosamente) de todos modos?

@cpojer ¿Puedo hacer 'Mover el botón a un repositorio de la comunidad'?

@Archulan puede enviar su PR a react-native-button

@Archulan ver este comentario # 23313 (comentario)

@Archulan puede enviar su PR a react-native-button

Bueno. ¿Podrías guiarme para hacer esto?

Creo que no tiene sentido sacar Button . El componente es muy pequeño y es útil para implementar algunas funciones básicas sin necesidad de instalar bibliotecas.

@brentvatne

Creo que no tiene sentido sacar Button .

tan raro como react contener <Button/>

después de la revolución debería haber

react-native = jsi(fabric & turbomodule) + codegen

otros podrían ser impulsados ​​por la comunidad.

para conseguir algunas funciones básicas en su lugar.

tal vez debería usar monorepo en react-native con react-native-element como react con react-dom

@cpojer ¿ moviendo Vibration (https://reactnative.dev/docs/vibration) a un proyecto comunitario? Si es así, y como parece lo suficientemente pequeño para empezar, podría ayudar con eso.

@cpojer ¿ puedo eliminar ImageStore ?

¿Es posible ayuda con esto? Soy un principiante y creo que puedo aprender mucho con esto.
Saludos.
Manuel Portero.

Si aún se necesita ayuda con esto, estoy feliz de ayudar 😃

Yo también

Me gustaría contribuir. ¿Hay algo que pueda hacer?

¿Hay algo que pueda hacer?

Me gustaría contribuir, ¿hay algo que pueda hacer?

¿Fue útil esta página
0 / 5 - 0 calificaciones