<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ana Arezo</title>
    <description>The latest articles on DEV Community by Ana Arezo (@anaarezo).</description>
    <link>https://dev.to/anaarezo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1134047%2F84a51e74-d47c-48df-a5f3-809d41c78818.jpeg</url>
      <title>DEV Community: Ana Arezo</title>
      <link>https://dev.to/anaarezo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anaarezo"/>
    <language>en</language>
    <item>
      <title>A11y: Mejora de la accesibilidad de las aplicaciones con ESLint</title>
      <dc:creator>Ana Arezo</dc:creator>
      <pubDate>Thu, 10 Aug 2023 20:41:31 +0000</pubDate>
      <link>https://dev.to/anaarezo/a11y-mejora-de-la-accesibilidad-de-las-aplicaciones-con-eslint-3pjp</link>
      <guid>https://dev.to/anaarezo/a11y-mejora-de-la-accesibilidad-de-las-aplicaciones-con-eslint-3pjp</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/FormidableLabs/eslint-plugin-react-native-a11y"&gt;Descargar ESLint React Native A11y&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cuando se trata de desarrollar aplicaciones en React Native, garantizar la accesibilidad es un aspecto esencial para crear experiencias inclusivas y fáciles de usar.&lt;/p&gt;

&lt;p&gt;Aquí es donde entra en juego el plugin ESLint React Native A11y. Es un plugin diseñado para mejorar la accesibilidad en aplicaciones React Native y React mediante el uso de ESLint, una herramienta de análisis de código JavaScript.&lt;/p&gt;

&lt;p&gt;Vamos a desglosar esto: mientras que muchos de nosotros estamos familiarizados con el poder de un verificador de código, hay mucho más por descubrir con este plugin.&lt;/p&gt;

&lt;p&gt;El plugin ESLint React Native A11y es una herramienta que va más allá de la simple comprobación de sintaxis. Está diseñada para ayudar a que tus aplicaciones React Native sean más accesibles durante la escritura de código e incluso cuando se crean acciones que se ejecutan en el pipeline del repositorio.&lt;/p&gt;

&lt;p&gt;Esta herramienta puede ofrecerte ideas sobre cómo corregir tu código y también recordarte que las propiedades deben tener los tipos correctos.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo funciona?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Instalación: Primero, necesitas instalar el paquete del plugin, que es &lt;code&gt;eslint-plugin-react-native-a11y&lt;/code&gt;. Esto se puede hacer usando el gestor de paquetes node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configuración: Una vez instalado, debes configurar el plugin en el archivo &lt;code&gt;.eslintrc&lt;/code&gt; de tu proyecto. Esto implica incluir el plugin en la sección de plugins y definir las reglas que quieres habilitar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Con el plugin configurado, ESLint empezará a analizar tu código durante el proceso de desarrollo. Aplicará las reglas específicas del plugin para comprobar la accesibilidad de tu código.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cuando ESLint identifica problemas de accesibilidad en su código, genera mensajes de error o advertencia, dependiendo de la gravedad del problema. Estos mensajes suelen incluir detalles sobre el problema específico y, en algunos casos, sugerencias sobre cómo solucionarlo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Puede configurar ESLint para que se ejecute automáticamente cada vez que guarde un archivo o antes de confirmar los cambios en el sistema de control de versiones. Esto ayuda a identificar y rectificar los problemas de accesibilidad desde el principio del desarrollo.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para implementar esto en su repositorio, siga los siguientes pasos.&lt;/p&gt;

&lt;p&gt;En el archivo &lt;code&gt;.eslintrc.js&lt;/code&gt;, añada el siguiente fragmento:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;module.exports&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;root:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;extends:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;'@react-native-community'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;'plugin:react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/ios'&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En el mismo archivo &lt;code&gt;.eslintrc.js&lt;/code&gt;, añade las reglas dentro del objeto rules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;rules:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-accessibility-hint':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-role':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-state':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-states':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-component-type':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-traits':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-value':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/no-nested-touchables':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-descriptors':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-ignores-invert-colors':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/exhaustive-deps':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-actions':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-accessibility-props':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;'error'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="err"&gt;touchables:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableOpacity'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableHighlight'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableWithoutFeedback'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableNativeFeedback'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableBounce'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'Pressable'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'Button'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Una vez que hayas terminado, ejecuta el linter tal y como está instalado en tu proyecto, y descubrirás todos los errores relacionados con la accesibilidad que puedes rectificar.&lt;/p&gt;

&lt;p&gt;En resumen, ESLint React Native A11y es una potente herramienta que ayuda a garantizar que tus aplicaciones React Native sean accesibles para un público más amplio, promoviendo prácticas inclusivas y experiencias mejoradas para todos los usuarios.&lt;/p&gt;

&lt;p&gt;Si encuentras problemas o inconsistencias en el artículo, no dudes en comentarlo.&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>frontend</category>
      <category>javascript</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>A11y: Improving app accessibility with ESLint</title>
      <dc:creator>Ana Arezo</dc:creator>
      <pubDate>Thu, 10 Aug 2023 20:32:51 +0000</pubDate>
      <link>https://dev.to/anaarezo/a11y-improving-app-accessibility-with-eslint-16n6</link>
      <guid>https://dev.to/anaarezo/a11y-improving-app-accessibility-with-eslint-16n6</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/FormidableLabs/eslint-plugin-react-native-a11y"&gt;ESLint React Native A11y Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When it comes to developing applications in React Native, ensuring accessibility is an essential aspect of creating inclusive and user-friendly experiences.&lt;/p&gt;

&lt;p&gt;This is where the ESLint Plugin React Native A11y comes into play. It's a plugin designed to enhance accessibility in React Native and React applications through the usage of ESLint, a JavaScript code analysis tool.&lt;/p&gt;

&lt;p&gt;Let's break this down: while many of us are familiar with the power of a code checker, there's much more to discover with this plugin.&lt;/p&gt;

&lt;p&gt;The ESLint Plugin React Native A11y is a tool that goes beyond simple syntax checks. It's crafted to assist in making your React Native applications more accessible during code writing and even when creating actions that run in the repository's pipeline.&lt;/p&gt;

&lt;p&gt;This tool can offer ideas on how to fix your code and also remind you that properties need to have the correct types.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Does It Work?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Installation:&lt;/strong&gt; First, you need to install the plugin package, which is &lt;code&gt;eslint-plugin-react-native-a11y&lt;/code&gt;. This can be done using the node package manager.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configuration:&lt;/strong&gt; Once installed, you must set up the plugin in your project's &lt;code&gt;.eslintrc&lt;/code&gt; file. This involves including the plugin in the plugins section and defining the rules you want to enable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Analysis:&lt;/strong&gt; With the plugin configured, ESLint will start analysing your code during the development process. It will apply the specific rules of the plugin to check the accessibility of your code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feedback and Corrections:&lt;/strong&gt; When ESLint identifies accessibility issues in your code, it generates error or warning messages, depending on the severity of the problem. These messages usually include details about the specific problem and, in some cases, suggestions on how to fix it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integration into Development Workflow:&lt;/strong&gt; You can set up ESLint to run automatically whenever you save a file or before you commit your changes to the version control system. This helps identify and rectify accessibility issues right from the beginning of development.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To implement this in your repository, follow the steps below.&lt;/p&gt;

&lt;p&gt;Within the &lt;code&gt;.eslintrc.js&lt;/code&gt; file, add the snippet below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;module.exports&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;root:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;extends:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;'@react-native-community'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;'plugin:react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/ios'&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the same &lt;code&gt;.eslintrc.js&lt;/code&gt; file, add the rules within the rules object:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;rules:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-accessibility-hint':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-role':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-state':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-states':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-component-type':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-traits':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-value':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/no-nested-touchables':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-descriptors':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-ignores-invert-colors':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/exhaustive-deps':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-actions':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-accessibility-props':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;'error'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="err"&gt;touchables:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableOpacity'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableHighlight'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableWithoutFeedback'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableNativeFeedback'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableBounce'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'Pressable'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'Button'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you're done, run the linter as installed in your project, and you'll discover all the accessibility-related errors you can rectify.&lt;/p&gt;

&lt;p&gt;In summary, ESLint React Native A11y is a powerful tool that helps ensure your React Native applications are accessible to a broader audience, promoting inclusive practices and enhanced experiences for all users.&lt;/p&gt;

&lt;p&gt;If you encounter issues or inconsistencies in the article, please feel free to comment.&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>frontend</category>
      <category>javascript</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>A11y: Melhorando a acessibilidade de aplicativos com ESLint</title>
      <dc:creator>Ana Arezo</dc:creator>
      <pubDate>Thu, 10 Aug 2023 20:22:08 +0000</pubDate>
      <link>https://dev.to/anaarezo/a11y-melhorando-a-acessibilidade-de-aplicativos-com-eslint-1l7a</link>
      <guid>https://dev.to/anaarezo/a11y-melhorando-a-acessibilidade-de-aplicativos-com-eslint-1l7a</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/FormidableLabs/eslint-plugin-react-native-a11y"&gt;Download do ESLint React Native A11y&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando se trata de desenvolver aplicativos em React Native, garantir a acessibilidade é um aspecto essencial para criar experiências inclusivas e amigáveis ​​ao usuário.&lt;/p&gt;

&lt;p&gt;É aí que o ESLint Plugin React Native A11y entra em cena, é um plugin projetado para melhorar a acessibilidade em aplicativos React Native e React, através do uso do ESLint, uma ferramenta de limpeza de código JavaScript. &lt;/p&gt;

&lt;p&gt;Vamos quebrar isso em partes: embora muitos de nós estejamos familiarizados com o poder de um verificador de código, há muito mais a descobrir com esse plugin.&lt;/p&gt;

&lt;p&gt;O ESLint Plugin React Native A11y é uma ferramenta que vai além das simples verificações de sintaxe. Foi projetado para ajudar a tornar seus aplicativos React Native mais acessíveis durante a escrita do código e até mesmo ao criar ações que rodam na pipeline do repositório de código.&lt;/p&gt;

&lt;p&gt;Esta ferramenta pode fornecer ideias de como corrigir o código, como também, lembrá-lo de que as propriedades devem estar com os tipos corretos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como funciona?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Instalação: Primeiro, você precisa instalar o pacote do plugin, que é o eslint-plugin-react-native-a11y. Isso pode ser feito usando o gerenciador de pacotes npm.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configuração: Depois de instalado, você deve configurar o plugin no arquivo .eslintrc do seu projeto. Isso envolve a inclusão do plugin na seção de plugins e a definição das regras que você deseja habilitar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Análise de Código: Com o plugin configurado, o ESLint começará a analisar seu código durante o processo de desenvolvimento. Ele aplicará as regras específicas do plugin para verificar a acessibilidade do seu código.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feedback e Correções: Quando o ESLint encontra problemas de acessibilidade no seu código, ele gera mensagens de erro ou aviso, dependendo da gravidade do problema. Essas mensagens geralmente incluem detalhes sobre o problema específico e, em alguns casos, sugestões sobre como corrigi-lo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integração no Fluxo de Desenvolvimento: Você pode configurar o ESLint para ser executado automaticamente sempre que você salvar um arquivo ou antes de confirmar suas alterações no sistema de controle de versão. Isso ajuda a identificar e corrigir problemas de acessibilidade desde o início do desenvolvimento.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para implementar em seu repositório siga os passos, a seguir.&lt;/p&gt;

&lt;p&gt;Dentro do arquivo .eslintrc.js adicione o trecho abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;module.exports&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;root:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;extends:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;'@react-native-community'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;'plugin:react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/ios'&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No mesmo arquivo .eslintrc.js adicione as regras dentro do objeto rules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;rules:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-accessibility-hint':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-role':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-state':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-states':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-component-type':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-traits':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-value':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/no-nested-touchables':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-descriptors':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-ignores-invert-colors':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/exhaustive-deps':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-valid-accessibility-actions':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;'react-native-a&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;y/has-accessibility-props':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;'error'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="err"&gt;touchables:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableOpacity'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableHighlight'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableWithoutFeedback'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableNativeFeedback'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'TouchableBounce'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'Pressable'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;'Button'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ao finalizar rode o linter conforme o instalado no projeto e você irá descobrir todos os erros que pode corrigir relacionados à acessibilidade.&lt;/p&gt;

&lt;p&gt;Em resumo, o ESLint React Native A11y é uma ferramenta poderosa que ajuda a garantir que seus aplicativos React Native sejam acessíveis a um público mais amplo, promovendo práticas inclusivas e melhores experiências para todos os usuários.&lt;/p&gt;

&lt;p&gt;Caso encontre problemas ou inconsistências no artigo fique à vontade para sinalizar.&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>frontend</category>
      <category>javascript</category>
      <category>reactnative</category>
    </item>
  </channel>
</rss>
