<?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: Pablo Gomez-Echegaray</title>
    <description>The latest articles on DEV Community by Pablo Gomez-Echegaray (@pgomezec).</description>
    <link>https://dev.to/pgomezec</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%2F1137906%2F82250f45-964e-4e1f-87b0-350d5f6c18c1.jpeg</url>
      <title>DEV Community: Pablo Gomez-Echegaray</title>
      <link>https://dev.to/pgomezec</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pgomezec"/>
    <language>en</language>
    <item>
      <title>Sharing how I overcame my struggles trying to setup React Native in a monorepo! Hope it helps!</title>
      <dc:creator>Pablo Gomez-Echegaray</dc:creator>
      <pubDate>Thu, 17 Apr 2025 19:31:30 +0000</pubDate>
      <link>https://dev.to/pgomezec/sharing-how-i-overcame-my-struggles-trying-to-setup-react-native-in-a-monorepo-hope-it-helps-2610</link>
      <guid>https://dev.to/pgomezec/sharing-how-i-overcame-my-struggles-trying-to-setup-react-native-in-a-monorepo-hope-it-helps-2610</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/pgomezec/setting-up-react-native-monorepo-with-yarn-workspaces-2025-a29" class="crayons-story__hidden-navigation-link"&gt;Setting up React Native Monorepo With Yarn Workspaces (2025)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/pgomezec" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1137906%2F82250f45-964e-4e1f-87b0-350d5f6c18c1.jpeg" alt="pgomezec profile" class="crayons-avatar__image" width="400" height="400"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/pgomezec" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Pablo Gomez-Echegaray
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Pablo Gomez-Echegaray
                
              
              &lt;div id="story-author-preview-content-2414396" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/pgomezec" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1137906%2F82250f45-964e-4e1f-87b0-350d5f6c18c1.jpeg" class="crayons-avatar__image" alt="" width="400" height="400"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Pablo Gomez-Echegaray&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/pgomezec/setting-up-react-native-monorepo-with-yarn-workspaces-2025-a29" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 17 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/pgomezec/setting-up-react-native-monorepo-with-yarn-workspaces-2025-a29" id="article-link-2414396"&gt;
          Setting up React Native Monorepo With Yarn Workspaces (2025)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/reactnative"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;reactnative&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/monorepo"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;monorepo&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mobile"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mobile&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/pgomezec/setting-up-react-native-monorepo-with-yarn-workspaces-2025-a29" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/pgomezec/setting-up-react-native-monorepo-with-yarn-workspaces-2025-a29#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>reactnative</category>
      <category>monorepo</category>
      <category>mobile</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Setting up React Native Monorepo With Yarn Workspaces (2025)</title>
      <dc:creator>Pablo Gomez-Echegaray</dc:creator>
      <pubDate>Thu, 17 Apr 2025 18:50:44 +0000</pubDate>
      <link>https://dev.to/pgomezec/setting-up-react-native-monorepo-with-yarn-workspaces-2025-a29</link>
      <guid>https://dev.to/pgomezec/setting-up-react-native-monorepo-with-yarn-workspaces-2025-a29</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclaimer: This article is revised version of this great &lt;a href="https://www.callstack.com/blog/setting-up-react-native-monorepo-with-yarn-workspaces" rel="noopener noreferrer"&gt;Callstack article&lt;/a&gt;. It seemed some things were outdated so I wrote this to share how I got a 0.78 React Native project working with yarn workspaces in 2025. Enjoy!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a monorepo?
&lt;/h2&gt;

&lt;p&gt;A monorepo is a single repository that holds a multitude of projects with all their code and assets. While the projects can be related, they can be used independently by different teams. &lt;/p&gt;

&lt;p&gt;Working with monorepos is very useful, especially when developing big and complex applications like super apps. Monorepos enable sharing the logic between a web app and a mobile app, for example.&lt;/p&gt;

&lt;p&gt;In this article, we’re going to set up a basic structure for a monorepo in React Native.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use monorepo in React Native?
&lt;/h2&gt;

&lt;p&gt;Thanks to react-native-web we can share every component so there’s no need to duplicate the code many times. This means easier dependency management, shorter CI times, and better collaboration between teams since the code can be shared.&lt;/p&gt;

&lt;p&gt;The main advantage though is the possibility of sharing packages between React and React Native. Most of the time we decide to share only business logic, but thanks to React Native Web, we can also share some of the UI components.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up Yarn workspaces
&lt;/h2&gt;

&lt;p&gt;While setting up a monorepo, we have two options: we can either hoist the packages to the root level or prevent them from hoisting. Yarn workspaces have an option named nohoist which allows us to specify packages that aren’t hoisted. It depends on your use case but most of the time it’s better to hoist packages to the root level.&lt;/p&gt;

&lt;p&gt;Alternatively, you can use npm workspaces, it should work the same.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why it’s better to avoid using nohoist
&lt;/h3&gt;

&lt;p&gt;Preventing packages from hoisting takes back the main advantage of monorepos which is sharing node_modules between repositories. When nohoist option is turned on, most of the time packages are duplicated inside the root level node_modules and inside the project level node_modules. Downloading packages multiple times can lead to longer CI/CD runs and higher costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rearranging the project structure
&lt;/h3&gt;

&lt;p&gt;In order to set up yarn workspaces, we need to restructure our project to suit the structure below. Projects need to be divided into separate folders and we should have root level package.json&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;your-project
    packages
        web // &amp;lt;- React app
        mobile // &amp;lt;- React Native app
        shared // &amp;lt;- Shared (includes files shared between mobile/web)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, you should create a package.json file in the root directory of our project with this command: &lt;code&gt;$ yarn init -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It should look like this:&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="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"private"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"true"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"example-app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"workspaces"&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="s2"&gt;"packages/*"&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;Note that &lt;code&gt;private: true&lt;/code&gt; is required because workspaces are not meant to be published.&lt;/p&gt;

&lt;p&gt;In the workspaces section, we define a work tree. We can pass there an array of glob patterns that should be used to locate the workspaces. So in the example above, every folder inside packages is defined as a workspace.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a React Native project &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Use command below to create a React Native project inside the packages folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx @react-native-community/cli@latest init AwesomeProject
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In order for our app to work in a monorepo structure, we need to make sure that config files are pointing to the root level node_modules due to package hoisting.&lt;/p&gt;

&lt;h4&gt;
  
  
  iOS setup &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Regenerate Pods, by entering the command below in the packages/mobile folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ios &amp;amp;&amp;amp; pod install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Android setup &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Note: At the time of creating this project, 0.78.1 was the latest version of RN. The &lt;a href="https://www.callstack.com/blog/setting-up-react-native-monorepo-with-yarn-workspaces" rel="noopener noreferrer"&gt;Callstack article&lt;/a&gt; has steps for older versions.&lt;/em&gt;&lt;br&gt;
In top-level build.gradle add this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;allprojects {
    project.pluginManager.withPlugin("com.facebook.react") {
        react {
            reactNativeDir = rootProject.file("../../../node_modules/react-native/")
            codegenDir = rootProject.file("../../../node_modules/@react-native/codegen/")
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and inside: &lt;code&gt;packages/mobile/android/settings.gradle&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
&lt;/span&gt;&lt;span class="gi"&gt;+ pluginManagement { includeBuild("../../../node_modules/@react-native/gradle-plugin") }
&lt;/span&gt;&lt;span class="gd"&gt;- includeBuild('../node_modules/react-native-gradle-plugin')
&lt;/span&gt;&lt;span class="gi"&gt;+ includeBuild('../../../node_modules/react-native-gradle-plugin')
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Configure Metro &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;We’re almost done with setting up the project. The last thing in the React Native app is to add watchFolders so metro knows where the linked node_modules are. The shared modules are symlinked by Yarn, and Metro started supporting symlinks from version 0.75.1, effectively being shipped with React Native 0.72. &lt;/p&gt;

&lt;p&gt;Regardless of whether you are using symlinks, metro still requires us to list symlinked modules in the config, but this might change in the future. You can follow the discussion on GitHub.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// packages/mobile/metro.config.js&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="na"&gt;watchFolders&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../node_modules&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../node_modules/@example-app/shared&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Ready!
&lt;/h2&gt;

&lt;p&gt;Install your dependencies with &lt;code&gt;yarn&lt;/code&gt; in your monorepo's root directory. You should see all your dependencies in the root node_modules folder like so:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejh3uedfs3366ohlgggq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejh3uedfs3366ohlgggq.png" alt="dependencies in root node_modules folder" width="343" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the &lt;code&gt;mobile/node_modules&lt;/code&gt; folder should only contain a &lt;code&gt;.bin&lt;/code&gt; folder:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcq16xentbs1yne0gn33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcq16xentbs1yne0gn33.png" alt="mobile/.bin folder" width="350" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recommend adding a &lt;code&gt;clean&lt;/code&gt; script to your root &lt;code&gt;package.json&lt;/code&gt; to help clear stubborn modules:&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="w"&gt;  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&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="nl"&gt;"clean"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"find . -type d &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;( -name &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;node_modules&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; -o -name &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;.kotlin&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; -o -name &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;.gradle&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; -o -name &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;build&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; -o -name &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Pods&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;) -prune -exec rm -rf {} +"&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;Then start your server with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn workspace mobile start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And build your iOS or Android with their respective scripts:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yarn workspace mobile ios&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yarn workspace mobile android&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  To sum up
&lt;/h2&gt;

&lt;p&gt;Setting up a monorepo can be tricky, but it pays off in the long run! You can easily share all of your code and assets between React and React Native.&lt;/p&gt;

&lt;p&gt;Using a monorepo is growing in popularity - there is even an open proposal to migrate react-native repository to monorepo. Find out more about React Native monorepo on github.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed from 2022
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
Creating React Native Project: 

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/react-native-community/react-native-template-typescript" rel="noopener noreferrer"&gt;react-native-template-typescript&lt;/a&gt; is deprecated. Switched to @react-native-community/cli .&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS Setup: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did not edit paths in Podfile since there were no require_relative statements. &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Did not edit &lt;code&gt;WITH_ENVIRONMENT&lt;/code&gt; and &lt;code&gt;REACT_NATIVE_XCODE&lt;/code&gt; paths since they already responded to the React Native path:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt;

&lt;span class="nv"&gt;WITH_ENVIRONMENT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$REACT_NATIVE_PATH&lt;/span&gt;&lt;span class="s2"&gt;/scripts/xcode/with-environment.sh"&lt;/span&gt;
&lt;span class="nv"&gt;REACT_NATIVE_XCODE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$REACT_NATIVE_PATH&lt;/span&gt;&lt;span class="s2"&gt;/scripts/react-native-xcode.sh"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Android Setup: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did not uncomment the line in packages/android/app/build.gradle&lt;/li&gt;
&lt;li&gt;Updated codegenDir path. &lt;code&gt;"../../../node_modules/react-native-codegen/"&lt;/code&gt;module moved to &lt;code&gt;"../../../node_modules/@react-native/codegen/"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Didn't add the &lt;code&gt;apply from&lt;/code&gt; line to &lt;code&gt;settings.gradle&lt;/code&gt; since it was causing the build process to hang.&lt;/li&gt;
&lt;li&gt;Updated includeBuild path in two places. (not sure if necessary).&lt;/li&gt;
&lt;li&gt;Didn't include the steps for &amp;lt; RN 0.71 since I didn't try them. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Metro Configuration: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Didn't include &lt;code&gt;unstable_enableSymlinks&lt;/code&gt;. Might be deprecated since it didn't have an effect.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>reactnative</category>
      <category>monorepo</category>
      <category>mobile</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Solución: Android Emulator no cabe en la pantalla</title>
      <dc:creator>Pablo Gomez-Echegaray</dc:creator>
      <pubDate>Sun, 22 Dec 2024 18:52:10 +0000</pubDate>
      <link>https://dev.to/pgomezec/solucion-android-emulator-no-cabe-en-la-pantalla-4bdf</link>
      <guid>https://dev.to/pgomezec/solucion-android-emulator-no-cabe-en-la-pantalla-4bdf</guid>
      <description>&lt;p&gt;Fuente: &lt;a href="https://www.youtube.com/watch?v=oZdXk0-7_W8&amp;amp;ab_channel=TheDebugArena" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=oZdXk0-7_W8&amp;amp;ab_channel=TheDebugArena&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En File Explorer, encuentra:&lt;br&gt;
C:\Users\AppData\Local\Android\Sdk\emulator\qemu&lt;/p&gt;

&lt;p&gt;Encuentra el emulador que estabas usando.&lt;br&gt;
Para mi, era: windows-x86_64&lt;br&gt;
Abre ese directorio y haz click derecho a: qemu-system-x86-64&lt;br&gt;
Haz click en "Properties" y vete a la pestaña de "Compatibility".&lt;br&gt;
Marca la caja que dice "Override high DPI scaling behavior" y selecciona a "System" en el menu desplegable.&lt;br&gt;&lt;br&gt;
Aprieta a OK y despues a Apply.&lt;/p&gt;

&lt;p&gt;Ahora, si empiezes de nuevo el emulador, debe ser del tamaño correcto.&lt;/p&gt;

</description>
      <category>android</category>
      <category>bugfix</category>
      <category>reactnative</category>
      <category>emulator</category>
    </item>
    <item>
      <title>Solution: Android Emulator is too big and wont fit on screen -Windows 10</title>
      <dc:creator>Pablo Gomez-Echegaray</dc:creator>
      <pubDate>Sun, 22 Dec 2024 18:32:07 +0000</pubDate>
      <link>https://dev.to/pgomezec/solution-android-emulator-is-too-big-and-wont-fit-on-screen-windows-10-5fd4</link>
      <guid>https://dev.to/pgomezec/solution-android-emulator-is-too-big-and-wont-fit-on-screen-windows-10-5fd4</guid>
      <description>&lt;p&gt;Source: &lt;a href="https://www.youtube.com/watch?v=oZdXk0-7_W8&amp;amp;ab_channel=TheDebugArena" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=oZdXk0-7_W8&amp;amp;ab_channel=TheDebugArena&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In file explorer, find:&lt;br&gt;
C:\Users&amp;lt;user&amp;gt;\AppData\Local\Android\Sdk\emulator\qemu&lt;/p&gt;

&lt;p&gt;Find the emulator you are using.&lt;br&gt;
For me, it was: windows-x86_64&lt;br&gt;
Open the folder and locate: qemu-system-x86-64&lt;br&gt;
Right click it and go to Properties,&lt;br&gt;
Go to the Compatibility Tab and click "change high DPI settings".&lt;br&gt;
Check the box "Override high DPI scaling behavior. Scaling performed by:" and select "System" in the dropdown below. &lt;br&gt;
Click Ok and then click Apply.&lt;/p&gt;

&lt;p&gt;Restart your emulator and it should be correctly sized.&lt;/p&gt;

</description>
      <category>android</category>
      <category>mobile</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Solution: "Android Emulator Process has terminated" - Windows 10</title>
      <dc:creator>Pablo Gomez-Echegaray</dc:creator>
      <pubDate>Sun, 22 Dec 2024 18:10:06 +0000</pubDate>
      <link>https://dev.to/pgomezec/solution-android-emulator-process-has-terminated-windows-10-219j</link>
      <guid>https://dev.to/pgomezec/solution-android-emulator-process-has-terminated-windows-10-219j</guid>
      <description>&lt;p&gt;I was setting up my environment to work on a React Native project on a new Windows laptop. I followed all the steps in the setup guide: &lt;a href="https://reactnative.dev/docs/set-up-your-environment" rel="noopener noreferrer"&gt;https://reactnative.dev/docs/set-up-your-environment&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, I got error "AVD process has terminated" whenever I tried to launch the device. I checked to make sure I had enough free space in my drive and I did have 130GB free which is more than enough. It may fail if it has less than 7.5GB of free storage. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solution, which was not mentioned in the guide, was to download Visual C++ Redistributable.&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you to DrXPatt on Youtube for the solution!&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=eeIlKz3CNmc&amp;amp;ab_channel=DrXPatt" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=eeIlKz3CNmc&amp;amp;ab_channel=DrXPatt&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>My First Year in Web Dev</title>
      <dc:creator>Pablo Gomez-Echegaray</dc:creator>
      <pubDate>Sat, 16 Mar 2024 04:31:54 +0000</pubDate>
      <link>https://dev.to/pgomezec/my-first-year-in-web-dev-cl4</link>
      <guid>https://dev.to/pgomezec/my-first-year-in-web-dev-cl4</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86r7l0uivfkx2e4sea6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86r7l0uivfkx2e4sea6w.png" alt="Screenshot of a LinkedIn conversation: " width="490" height="332"&gt;&lt;/a&gt;
I see you have an experience as a teacher/tutor/software developer/ web developer. &lt;br&gt;
I am interested knowing more about you and the knowledge you have. In your about section "You wrote your dream is to create software and apps to promote common well-being" which caught my eye.&lt;br&gt;
I have been working on a few ideas that might interest you. Let me know when you are free to chat or jump on a quick call.""/&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;March 16th, 2024&lt;/strong&gt; marks one year since I committed to web development. Summer 2022, I graduated from my teaching credential program feeling absolutely exhausted on all levels. All I wanted was peace. So I moved back in with my parents. I worked easy part-time jobs and took some classes for fun at my local community college. &lt;/p&gt;

&lt;h2&gt;
  
  
  Searching for light
&lt;/h2&gt;

&lt;p&gt;Peace was not easy to find however. My mom was sick and had to have heart surgery while I was still emotionally recovering from the worst couple years of my life. I started to learn JavaScript for fun while I was in my teaching credential program. I played &lt;a href="https://store.steampowered.com/app/1812820/Bitburner/" rel="noopener noreferrer"&gt;Bitburner&lt;/a&gt; which is a game where you write scripts to earn money by running hacks on other people's servers, all in-game btw. I would spend weekends optimizing my scripts instead of grading and doing my assignments. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6352fpwq7ceduy1lgkhy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6352fpwq7ceduy1lgkhy.png" alt="Hack scripts in Bitburner" width="600" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In my search for peace and my next phase, computer programming seemed like a good place to look.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I had completed most of a minor in Computer Science during my undergrad. With a Math B.A. and computer science, I thought there had to be something I could do with that. So my first move was to explore and see what might interest me. In November/December 2022, I started applying to software engineering internships to see if I could landing anything off the bat. &lt;/p&gt;

&lt;p&gt;To no one's surprise, I got nothing. My skills were rough and the big tech companies were starting their big layoffs. The easy covid jobs of 2020-2021 were gone. It meant that I had to really polish my skills if I were to even have a chance. Problem was, I hadn't even picked an area to pursue and I didn't the money to go back to school or do a bootcamp. My interests thus far were android/mobile development or web dev but I was still waddling around in the dark about where to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fuse is lit
&lt;/h2&gt;

&lt;p&gt;Someone I had tutored at my part-time job, Manny, told me about Bay Valley Tech, a free online web development bootcamp provided for CA residents. I decided to try it out since I had made websites with Wix and Wordpress in the past. When that started in February 2023, I put web developer in my LinkedIn title just to announce my interest. But then, on March 16th, I received a message:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I see you have an experience as a teacher/tutor/software developer/ web developer. &lt;br&gt;
I am interested knowing more about you and the knowledge you have. In your about section "You wrote your dream is to create software and apps to promote common well-being" which caught my eye.&lt;br&gt;
I have been working on a few ideas that might interest you. Let me know when you are free to chat or jump on a quick call.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Saurav, an IT professional at my job, reached out to me about a project that he was working on. During that call, it became apparent that I wasn't qualified to do what he wanted. He asked what frameworks I was familiar with and I sheepishly confessed that I didn't know what a framework was. I quickly added that I was more than willing to learn but that I just hadn't gotten there yet. &lt;/p&gt;

&lt;p&gt;He paused. But then he gave me a chance. He understood my eagerness and told me to learn about frameworks and talk to him again in a week. I was in! But not yet! So I crammed as much info as I could find about frameworks, I picked React, and quickly started learning the basics. The next week we met and we continued to work on the project. I enjoyed making websites with Wix, I had an opportunity to work on a project, and I had a bootcamp to teach me. &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;It was at that moment that I decided to dedicate myself to making websites. &lt;br&gt;
*&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;The following months were a blur so I'll make a list of everything that happened:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Someone reached out to me on LinkedIn to teach a highschool Web Design class (August 2023)&lt;/li&gt;
&lt;li&gt;Helped start a coding club at my community college (August 2023)&lt;/li&gt;
&lt;li&gt;Got an UX Writing internship @ Phils Drills through &lt;a href="//www.parkerdewey.com"&gt;ParkerDewey&lt;/a&gt; (March 2023)&lt;/li&gt;
&lt;li&gt;That internship turned into Shopify Development. (May 2023)&lt;/li&gt;
&lt;li&gt;Attended student hackathon (April 2023) &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8u96i51wtfainhu3dizz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8u96i51wtfainhu3dizz.png" alt="Selfie of me with my club" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I have a dream
&lt;/h2&gt;

&lt;p&gt;It was also around here that a dream had started to take form. A dream to make a website that made it easy for people to apply for and manage their Medi-Cal. I've been on Medi-Cal all my life and I thought month-long waits for appointments, long holds on the phone, and getting bounced around was the norm. When I was hungry in college, I heard about Calfresh (food stamps) but was dismissive because I thought applying would be hassle like Medi-Cal. I discovered that Code for America had built GetCalfresh.org which made it simple to apply in 10 minutes. I was astonished. I thought,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is the power of good web development!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I decided that I would stick with web development until this ideal Medi-Cal web app was built, even if I had to do it myself!&lt;/p&gt;

&lt;h2&gt;
  
  
  Community makes the stars align
&lt;/h2&gt;

&lt;p&gt;After spending the whole summer learning React, I realized I had no one to talk to about it with. I went looking for React events in the Bay Area to meet others who were working with the framework. I found a React Native event in San Francisco around September/October. I didn't know anything about React Native but I said fuck it, I'll go for the exposure. &lt;/p&gt;

&lt;p&gt;I arrive at the event and it's a presentation between two companies, Callstack and Abbott. I'm the only person there that's not from a company. It felt like I wasn't supposed to be there but everyone I talked to was kind and let me speak. There was even one guy, Efraín, whose family is from the same area as mine! A group of us went out for drinks afterwards and I eventually met, Steven. He told me he might have an opportunity me to do data visualization for them. &lt;/p&gt;

&lt;p&gt;Every month I'd send him a message to check-in about that opportunity. In December, I finally got to meet him again on Zoom. I got another interview a few weeks later with another member of his team, Ryder. It was a very informal interview where he asked me about my technical knowledge, career goals, and even personal interests. &lt;/p&gt;

&lt;p&gt;Around this time, I had started paying for a mentor, Lo, to help me guide my learning. I made so much progress on my personal projects and it really helped to have a professional to bounce ideas and concerns off of.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsi6exanr2rgzeglym0kf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsi6exanr2rgzeglym0kf.png" alt="Mentoring session with Lo" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I heard back in Jan/Feb, that I'd been accepted and I would be starting as a Technical Resident for his team. It's currently my 4th week with Abbott and I didn't expect everyone to be so nice! Ryder, my mentor, and Steven are very understanding and helpful with getting me up to speed in the project. Since last week, I've been coming into the office (which is super close to my house!) with Efraín and he's been great at introducing me to everyone. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2oai1ctmtwym54fqela9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2oai1ctmtwym54fqela9.png" alt="Efraín and I" width="689" height="919"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In January, I had also applied to the Technologists for Public Good Mentorship Program and got accepted! And my mentor, Luigi, is one of the people who built GetCalfresh.org! With his guidance, I've redesigned the CoveredCa.com mobile homepage. I'm currently learning about accessibility and performance to improve user experience on the website! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjuqf2hmrdd0dftzkles.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjuqf2hmrdd0dftzkles.png" alt="Screenshot of my redesign" width="800" height="612"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I've Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Effort becomes luck
I got lucky that I went to that event and met Steven who provided me this opportunity. But if I had not put in the work to learn React, build projects, and put myself out there and go to random events, that opportunity wouldn't've been offered to me. Thus, effort has the power to raise your luck.&lt;/li&gt;
&lt;li&gt;It takes a village
I would have never gotten this far without people who believed in me like Saurav, Manny, Phil (from Phil's Drills), and Steven! My mind works best when I have people that I look up to who validate me and push me to be my best self. This includes the therapists that I saw, Kyoko and Jason, from the free e-clinic at Palo Alto University.&lt;/li&gt;
&lt;li&gt;Dreams beg to be chased
I couldn't accept the fact that Medi-Cal was so hard to use while Calfresh was so easy. It actually made me frustrated. That gave me the drive to do something about it. Even now, I still get restless thinking about how its not real yet. Finding this dream made such a drastic impact on my motivation. So be stubborn and carve a path with your own god-given hands!&lt;/li&gt;
&lt;li&gt;ADHD is REAL and requires real life-style changes
I did okay in school because it gave me deadlines and consequences. They are clear signals to my brain to do what needs to be done. After you graduate, your grades become your bank account balance and your only deadline is your rent payment. So it was a huge struggle to stay focused and be productive while teaching myself. I got a work-study job at my community college that allowed me to study away from home while getting paid. On days I wasn't working, I went to the library or cafes, even on the weekends. Every day that I stayed home I felt slow, depressed, and distracted. If you have ADHD, I highly suggest figuring out ways to build an environment that tells you to focus. You have a disability that inhibits your ability to regulate your attention. We must rely on external signals to get our brains in focus.&lt;/li&gt;
&lt;li&gt;Depression is REAL and requires real help
People say your health is the best investment. Well so is your mental health. Depression would make my brain rot. It would take days or weeks to get back to feeling productive. Therapy helped me a lot with untangling the mess of thoughts in my head and clarifying where my feelings were coming from so I could address them. Nowadays I feel a lot better but I still go to therapy because its good to practice one's awareness of their emotions.&lt;/li&gt;
&lt;li&gt;Take risks / Do stuff for yourself
I had a bunch 'bucket list' type things I wanted to do but was putting off until I found a real job. But that ended up just making feel trapped. If you have the means, do something crazy once in a while. In September, I had a panic attack because I felt so trapped. So that same day, I bought a week-long trip to Mexico to see my family that I'd never met. Earlier in June or July I got my hair braided which oddly forced me to feel more confident. I also got the homies together to go to Half Moon Bay for my birthday. Life doesn't have to stop just because you're working. You work but You are not work. You are You and you must feed Your Self. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiecoaadw3az1frodqeig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiecoaadw3az1frodqeig.png" alt="Sitting at a dinner table with my homies" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This year has been a wild ride. And I expect it to get even wilder from here! I hope that I will improve my ability to teach and help others. And I'm sure that I will build some cool stuff this year! &lt;strong&gt;Massive 'Thank You's to all my friends and mentors who've supported me through this journey!!!&lt;/strong&gt; I hope to pay your kindness back and/or forward! Thanks for reading!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>career</category>
      <category>selflearning</category>
    </item>
    <item>
      <title>A user-centered CoveredCa.com</title>
      <dc:creator>Pablo Gomez-Echegaray</dc:creator>
      <pubDate>Sat, 09 Mar 2024 23:25:37 +0000</pubDate>
      <link>https://dev.to/pgomezec/a-user-centered-coveredcacom-5hco</link>
      <guid>https://dev.to/pgomezec/a-user-centered-coveredcacom-5hco</guid>
      <description>&lt;h1&gt;
  
  
  I redesigned the CoveredCa.com mobile homepage for ease-of-use and accessibility
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. My Story: The impact of good web development &amp;amp; UX
&lt;/h2&gt;

&lt;p&gt;I have been on Medi-Cal for as long as I can remember. Searching online for a number to call to change something about my case, calling right when they open at 8am, being told I call the wrong number, call the new number, get put on hold for 30+ mins, (repeat if it was still the wrong number). I thought, this is just how it is. &lt;/p&gt;

&lt;p&gt;Having trouble paying for healthy food in college, someone suggested that I apply for Calfresh (food stamps). I cringed at the thought. Do I really want to go through the hassle? I'm busy enough with school. Do I even qualify? Do I really need it? &lt;/p&gt;

&lt;p&gt;I looked online and I found &lt;a href="//GetCalfresh.org"&gt;GetCalfresh.org&lt;/a&gt;. Oh, I can apply online? "The entire application should take about 10 minutes to complete." I can do that! The prompts took me through the application, one step at a time. In 10-15 mins, I was done and I received email confirmation of my application. Within a few weeks I had my food stamps. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is the power of good web development&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Why
&lt;/h2&gt;

&lt;p&gt;Immediately I thought, "Why isn't it this easy with Medi-Cal?". After trying to become a high school math teacher and switching careers to web development, I returned to this question and went one step farther. I asked myself, "Could I do for Medi-Cal what GetCalfresh.org did for food stamps?". &lt;/p&gt;

&lt;p&gt;I learned that affordable healthcare programs are much more complex than food stamps. But there had to be &lt;em&gt;something&lt;/em&gt; I could do. &lt;/p&gt;

&lt;p&gt;The Technologists for Public Good organization had launched their mentorship program at the beginning of this year. I applied, got in, and was matched with Luigi Ray-Montañez, one of the people behind the development of the GetCalfresh.org website! He agreed that I might be biting off more than I could chew but that I could start by cloning the &lt;a href="//CoveredCa.com"&gt;CoveredCa&lt;/a&gt; homepage and making changes along the way. &lt;/p&gt;

&lt;p&gt;While I was working on it, questions started to pop into my mind: "Why is this form even here?", "Why is this page so long?", "What's the point of this section?". The more I questioned the design of the page, the less I was motivated to code. &lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Process
&lt;/h2&gt;

&lt;p&gt;I finally said, "To hell with the code, I'm gonna redesign it. I'm no good at Figma so I'll just draw it out and see what I come up with".&lt;/p&gt;

&lt;h3&gt;
  
  
  The Issues
&lt;/h3&gt;

&lt;p&gt;I started by going through the page section by sections, collecting my thoughts what I did and didn't like. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foihznjen4mt6k2dytt5o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foihznjen4mt6k2dytt5o.png" alt="Author's handwritten notes in a notebook" width="725" height="657"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's what I ended up with:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Language Options 

&lt;ul&gt;
&lt;li&gt;Language Options hard to find&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Replace Form with Link to Form&lt;/li&gt;
&lt;li&gt;Is Your Medical Coverage ending

&lt;ul&gt;
&lt;li&gt;bold “Is your medical coverage ending” instead of “set your plain in motion”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Our Coverage Options

&lt;ul&gt;
&lt;li&gt;No Aria Labels?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;How Can We Help You?

&lt;ul&gt;
&lt;li&gt;Title/Elements non-semantic&lt;/li&gt;
&lt;li&gt;Could ul instead of div?&lt;/li&gt;
&lt;li&gt;“Click below for Answers to” or “FAQ”?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;How to Get Covered

&lt;ul&gt;
&lt;li&gt;Too much space&lt;/li&gt;
&lt;li&gt;left align, minify icons/change icons, less space between&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Health Plans for Small Business

&lt;ul&gt;
&lt;li&gt;redundant? &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dates and Deadlines

&lt;ul&gt;
&lt;li&gt;Today’s Events has permanent “events”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ready to care for your health

&lt;ul&gt;
&lt;li&gt;-redundant?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chat not tab-selectable on desktop&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After this, I noticed I still was having trouble coming up with a design that would address it all and be good. So I decided to identify the main functions of this website. &lt;/p&gt;

&lt;h3&gt;
  
  
  "What do I need to be able to do on CoveredCa.com?"
&lt;/h3&gt;

&lt;p&gt;I went section by section again and whenever I saw a section that addressed something new, I added it to the list. Here's what I got:&lt;br&gt;
A: Explore Plans&lt;br&gt;
B: Apply/Check eligibility&lt;br&gt;
C: Assess if coverage ending/renew coverage&lt;br&gt;
D: Change my Plan&lt;br&gt;
E: Report Changes &lt;/p&gt;

&lt;p&gt;With this, I had a new target. Address these 5 functions in as few sections as necessary. But how do I do that? I'm no designer, so I looked to GetCalfresh.org for inspiration. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Product
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz17u2i51mq7ank9vkhv2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz17u2i51mq7ank9vkhv2.png" alt="Author's hand-drawn design outline" width="382" height="763"&gt;&lt;/a&gt;&lt;br&gt;
Luckily, I could rip most of the sections straight from CoveredCa or GetCalfresh and make minor adjustments to some of them. I showed the sketches and notes to my mentor, Luigi, and he liked them and encouraged me to Figma it out so people can compare side by side the effects of my changes. &lt;/p&gt;

&lt;h2&gt;
  
  
  4. The Result
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5c2uehoz2ei7xqohpk4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5c2uehoz2ei7xqohpk4s.png" alt=" " width="800" height="642"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.figma.com/file/SI5OLMV0gbzCZ33uFAOFFs/CoveredCa?type=design&amp;amp;node-id=0%3A1&amp;amp;mode=design&amp;amp;t=5RGV3ByPgImQi6Sy-1" rel="noopener noreferrer"&gt;Check out the full design here&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I won't go over all the changes but I'll boil it down to a few types:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Redundant Sections:
I removed sections, such as "How to Get Covered", "Health Plans for Small Businesses", "Ready to Care for your Health", that had information that was already contained in other sections.&lt;/li&gt;
&lt;li&gt;Merged Sections: 
Some sections were highly related to each other so it made sense to combine parts of them to make one concise section. See "Dates and Deadlines" and "Never miss a deadline", "Our Coverage Options" and "How Can We Help You? &amp;gt; Transition to Another Program".&lt;/li&gt;
&lt;li&gt;Additions:
The function to "Report A Change" was addressed in a hard to find link and it lead to a wall of text that is difficult to digest. So I made it its own section with a video. I also added the Translate and Chat buttons from the GetCalfresh website, which were issues on CoveredCa.com. &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Results
&lt;/h3&gt;

&lt;p&gt;The new design occupies 50% less space (or less if I did something about the footer), the new design has 5 sections compared to the 9 in the original, has improved accessibility features (translation and chat), and communicates all the same information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection
&lt;/h2&gt;

&lt;p&gt;I started this journey as web developer and I knew I wanted to learn about UX as well. But I never knew I could do both and how closely related they were in the process of creating a new website. This is like taking glimpse at my future as a human-centered web developer. &lt;/p&gt;

&lt;p&gt;My next steps are to investigate the performance issues with the mobile site (run a Lighthouse report on CoveredCa.com if you're interested).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note to anyone from CoveredCA or Medi-Cal if you're reading this:&lt;/strong&gt;&lt;br&gt;
I do NOT hate you! I think y'all are AWESOME for even having a website and it's clear that y'all have poured a LOT of work into it! As you can see, these are just minor suggestions from newbie that wanted to do a personal project related to their interests. Maybe one day I'll get to work for y'all!&lt;/p&gt;

&lt;p&gt;Much love if you made it this far! Thanks for reading :)&lt;/p&gt;

</description>
      <category>ux</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>a11y</category>
    </item>
  </channel>
</rss>
