<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.1">Jekyll</generator><link href="https://blog.calebnance.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.calebnance.com/" rel="alternate" type="text/html" /><updated>2022-05-06T21:43:18-04:00</updated><id>https://blog.calebnance.com/feed.xml</id><title type="html">Blog | Caleb Nance | Web Development</title><subtitle>javascript, php, react, and all things code explained by Caleb Nance</subtitle><entry><title type="html">React Navigation V6 Expo SDK 45 Error</title><link href="https://blog.calebnance.com/react-native/react-navigation-expo-sdk-45-error.html" rel="alternate" type="text/html" title="React Navigation V6 Expo SDK 45 Error" /><published>2022-05-06T05:12:48-04:00</published><updated>2022-05-06T05:12:48-04:00</updated><id>https://blog.calebnance.com/react-native/react-navigation-expo-sdk-45-error</id><content type="html" xml:base="https://blog.calebnance.com/react-native/react-navigation-expo-sdk-45-error.html">&lt;p&gt;Today I was updating a few of my expo clones to the latest &lt;strong&gt;Expo SDK 45&lt;/strong&gt; and kept getting the following error:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;react-native-gesture-handler] Seems like you&lt;span class=&quot;s1&quot;&gt;&apos;re using an old API with gesture components, check out new Gestures system!&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Searching this error gave me mixed results but finally found a solution that worked for me.&lt;/p&gt;

&lt;p&gt;I am using the latest &lt;strong&gt;React Navigation v6&lt;/strong&gt; and more specifically the package:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;@react-navigation/native&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;^6.0.10&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The solve was pretty simple, just changing all usages of &lt;strong&gt;@react-navigation/stack&lt;/strong&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;createStackNavigator&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;@react-navigation/stack&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Stack&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;createStackNavigator&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;To use the &lt;strong&gt;@react-navigation/native-stack&lt;/strong&gt; like below&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;createNativeStackNavigator&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;@react-navigation/native-stack&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Stack&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;createNativeStackNavigator&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This is &lt;strong&gt;not&lt;/strong&gt; a drop-in replacement, but most things should be. Double check the API for &lt;a href=&quot;https://reactnavigation.org/docs/native-stack-navigator/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;native-stack&lt;/a&gt; to be sure.&lt;/p&gt;

&lt;p&gt;Hope this helps!&lt;/p&gt;</content><author><name></name></author><category term="react-native" /><category term="code" /><category term="howto" /><category term="javascript" /><category term="react-native" /><category term="expo" /><category term="react" /><category term="react-navigation" /><category term="react-native-gesture-handler" /><summary type="html">React Navigation v6 Expo SDK 45 error with react-native-gesture-handler</summary></entry><entry><title type="html">React Navigation V6 Multi Modal Transition Setup</title><link href="https://blog.calebnance.com/react-native/react-navigation-multi-modal-transition.html" rel="alternate" type="text/html" title="React Navigation V6 Multi Modal Transition Setup" /><published>2021-10-31T11:12:48-04:00</published><updated>2021-10-31T11:12:48-04:00</updated><id>https://blog.calebnance.com/react-native/react-navigation-multi-modal-transition</id><content type="html" xml:base="https://blog.calebnance.com/react-native/react-navigation-multi-modal-transition.html">&lt;p&gt;Today I wanted share a quick snippet for &lt;strong&gt;React Navigation V6&lt;/strong&gt;, how to setup a multi-modal transition structure with the use of their &lt;a href=&quot;https://reactnavigation.org/docs/group/&quot;&gt;Group API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let’s say you wanted 2 (or more) modal types, one group of modals that opened in full screen and another group that opened in the Presentation mode.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-jsx&quot; data-lang=&quot;jsx&quot;&gt;&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;React&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;react&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;NavigationContainer&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;@react-navigation/native&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;createStackNavigator&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;TransitionPresets&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;@react-navigation/stack&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// stacks&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;StackHome&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;./StackHome&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// modal screens&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;ModalOnboarding&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;../screens/ModalOnboarding&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;ModalSelectPhoto&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;../screens/ModalSelectPhoto&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;RootStack&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;createStackNavigator&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;NavigationContainer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Navigator&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;screenOptions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;navigation&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;headerShown&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;gestureEnabled&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;cardOverlayEnabled&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
      /* your regular stack or tab navigation */
      &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Group&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Screen&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;StackHome&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;component&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;StackHome&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Group&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
      
      /* modal(s) grouping for Slide From Bottom */
      &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Group&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;screenOptions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;presentation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;modal&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;TransitionPresets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;ModalSlideFromBottomIOS&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Screen&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;ModalOnboarding&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;component&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;ModalOnboarding&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Group&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
      
      /* modal(s) grouping for Presentation */
      &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Group&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;screenOptions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;presentation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;modal&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;TransitionPresets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;ModalPresentationIOS&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Screen&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;ModalSelectPhoto&quot;&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;component&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;ModalSelectPhoto&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Group&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;RootStack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Navigator&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;NavigationContainer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;</content><author><name></name></author><category term="react-native" /><category term="code" /><category term="howto" /><category term="javascript" /><category term="react-native" /><category term="react" /><category term="react-navigation" /><summary type="html">react navigation v6 transition setup</summary></entry><entry><title type="html">Using CSS Variables with SCSS Variables</title><link href="https://blog.calebnance.com/css/using-css-variables-with-scss.html" rel="alternate" type="text/html" title="Using CSS Variables with SCSS Variables" /><published>2021-01-16T17:10:01-05:00</published><updated>2021-01-16T17:10:01-05:00</updated><id>https://blog.calebnance.com/css/using-css-variables-with-scss</id><content type="html" xml:base="https://blog.calebnance.com/css/using-css-variables-with-scss.html">&lt;p&gt;Recently I ran into an issue when creating dark/light palettes with CSS Variables within my scss.&lt;/p&gt;

&lt;p&gt;The issue was how scss handled the setting of a css variable with a scss variable.&lt;/p&gt;

&lt;p&gt;The below example &lt;strong&gt;DID NOT WORK&lt;/strong&gt;:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-scss&quot; data-lang=&quot;scss&quot;&gt;&lt;span class=&quot;nd&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;--color-background&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$white&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nd&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;.dark-mode&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;--color-background&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$black&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This is a breaking change and compatibility issue, so the need for interpolation is the fix (&lt;a href=&quot;https://sass-lang.com/documentation/breaking-changes/css-vars&quot;&gt;reference link&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;By wrapping your scss variable with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#{}&lt;/code&gt; fixes this compile issue!&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-scss&quot; data-lang=&quot;scss&quot;&gt;&lt;span class=&quot;nd&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;--color-background&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$white&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nd&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;.dark-mode&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;--color-background&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$black&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;</content><author><name></name></author><category term="css" /><category term="css" /><category term="scss" /><category term="howto" /><category term="code" /><summary type="html">new syntax when using scss variables to populate css variables</summary></entry><entry><title type="html">iPhone and iPad Pixel Sizes Guide: Complete List</title><link href="https://blog.calebnance.com/development/iphone-ipad-pixel-sizes-guide-complete-list.html" rel="alternate" type="text/html" title="iPhone and iPad Pixel Sizes Guide: Complete List" /><published>2020-11-05T20:19:11-05:00</published><updated>2020-11-05T20:19:11-05:00</updated><id>https://blog.calebnance.com/development/iphone-ipad-pixel-sizes-guide-complete-list</id><content type="html" xml:base="https://blog.calebnance.com/development/iphone-ipad-pixel-sizes-guide-complete-list.html">&lt;p&gt;Below is a collective list of iPhone / iPad screen sizes. I find this break-down helpful when working with react native and edge casing for navigational elements, etc.&lt;/p&gt;

&lt;h2 id=&quot;iphone-screen-sizes&quot;&gt;iPhone Screen Sizes&lt;/h2&gt;

&lt;table class=&quot;mobile-specs&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;iPhone Models&lt;/th&gt;
      &lt;th&gt;Height&lt;/th&gt;
      &lt;th&gt;Width&lt;/th&gt;
      &lt;th&gt;Has Notch&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;13 Pro Max and 12 Pro Max&lt;/td&gt;
      &lt;td&gt;926&lt;/td&gt;
      &lt;td&gt;428&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;13 Pro, 12 Max, and 12&lt;/td&gt;
      &lt;td&gt;844&lt;/td&gt;
      &lt;td&gt;390&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;12 Mini, 11 Pro, X, and Xs&lt;/td&gt;
      &lt;td&gt;812&lt;/td&gt;
      &lt;td&gt;375&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;11 Pro Max, 11, Xs Max, and Xr&lt;/td&gt;
      &lt;td&gt;896&lt;/td&gt;
      &lt;td&gt;414&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;8+, 7+, 6+, and 6s+&lt;/td&gt;
      &lt;td&gt;736&lt;/td&gt;
      &lt;td&gt;414&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;8, 7, 6, and 6s&lt;/td&gt;
      &lt;td&gt;667&lt;/td&gt;
      &lt;td&gt;375&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;SE, 5, 5s, and 5c&lt;/td&gt;
      &lt;td&gt;568&lt;/td&gt;
      &lt;td&gt;320&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;4, 4s, 3G, 3GS, and 2G&lt;/td&gt;
      &lt;td&gt;480&lt;/td&gt;
      &lt;td&gt;320&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;strong&gt;iPhone status bar:&lt;/strong&gt; 44pt height (older models have a 20pt height)&lt;/p&gt;

&lt;h2 id=&quot;ipad-screen-sizes&quot;&gt;iPad Screen Sizes&lt;/h2&gt;

&lt;table class=&quot;mobile-specs&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;iPad Models&lt;/th&gt;
      &lt;th&gt;Height&lt;/th&gt;
      &lt;th&gt;Width&lt;/th&gt;
      &lt;th&gt;Year(s)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad Pro (12.9 inch)&lt;/td&gt;
      &lt;td&gt;1366&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;2020, 2018, 2017, 2015&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad Pro (11 inch)&lt;/td&gt;
      &lt;td&gt;1194&lt;/td&gt;
      &lt;td&gt;834&lt;/td&gt;
      &lt;td&gt;2020, 2018&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad Air (10.9 inch)&lt;/td&gt;
      &lt;td&gt;1180&lt;/td&gt;
      &lt;td&gt;820&lt;/td&gt;
      &lt;td&gt;2020&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad Air (10.5 inch)&lt;/td&gt;
      &lt;td&gt;1112&lt;/td&gt;
      &lt;td&gt;834&lt;/td&gt;
      &lt;td&gt;2019&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad Pro (10.5 inch)&lt;/td&gt;
      &lt;td&gt;1112&lt;/td&gt;
      &lt;td&gt;834&lt;/td&gt;
      &lt;td&gt;2017&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad (10.2 inch)&lt;/td&gt;
      &lt;td&gt;1080&lt;/td&gt;
      &lt;td&gt;810&lt;/td&gt;
      &lt;td&gt;2020, 2019&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad mini (gen 5)&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;2019&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad (9.7 inch)&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;2018, 2017&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad Pro (9.7 inch)&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad mini (gen 4)&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;2015&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad Air 2&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;2014&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad Air&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;2013&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad 4&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;late 2012&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad 3&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;early 2012&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad mini&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;2012&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;iPad 2&lt;/td&gt;
      &lt;td&gt;1024&lt;/td&gt;
      &lt;td&gt;768&lt;/td&gt;
      &lt;td&gt;2011&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;strong&gt;iPad status bar:&lt;/strong&gt; 40pt height (older models have a 20pt height)&lt;/p&gt;</content><author><name></name></author><category term="development" /><category term="code" /><category term="development" /><category term="iphone" /><category term="ipad" /><category term="pixels" /><category term="react-native" /><summary type="html">an ultimate list of iPhone and iPad screen sizes in pixels.</summary></entry><entry><title type="html">Laravel - Run a Single Test in PHPUnit</title><link href="https://blog.calebnance.com/laravel/laravel-run-a-single-test-in-phpunit.html" rel="alternate" type="text/html" title="Laravel - Run a Single Test in PHPUnit" /><published>2020-09-03T09:20:24-04:00</published><updated>2020-09-03T09:20:24-04:00</updated><id>https://blog.calebnance.com/laravel/laravel-run-a-single-test-in-phpunit</id><content type="html" xml:base="https://blog.calebnance.com/laravel/laravel-run-a-single-test-in-phpunit.html">&lt;p&gt;Today I wanted to share a quick snipped on how to run a single test in Laravel with PHPUnit.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;vendor&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;bin&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;phpunit&lt;/span&gt; --&lt;span class=&quot;n&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;SearchTest&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;As you see you can use the filter flag to run a single test from filename.&lt;/p&gt;

&lt;p&gt;Hope this helped!&lt;/p&gt;</content><author><name></name></author><category term="laravel" /><category term="laravel" /><category term="php" /><category term="unit-test" /><category term="seeder" /><summary type="html">running a single test in Laravel with PHPUnit</summary></entry><entry><title type="html">Laravel - Run a Single Seeder by classname</title><link href="https://blog.calebnance.com/laravel/laravel-run-a-single-seeder-by-classname.html" rel="alternate" type="text/html" title="Laravel - Run a Single Seeder by classname" /><published>2020-08-03T11:20:24-04:00</published><updated>2020-08-03T11:20:24-04:00</updated><id>https://blog.calebnance.com/laravel/laravel-run-a-single-seeder-by-classname</id><content type="html" xml:base="https://blog.calebnance.com/laravel/laravel-run-a-single-seeder-by-classname.html">&lt;p&gt;Below is how to run a single seeder from your command line:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;php&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;artisan&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;db&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;seed&lt;/span&gt; --&lt;span class=&quot;n&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;PokemonCardsPricingTableSeeder&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;In the above command, you would need to replace the &lt;strong&gt;–class=&lt;/strong&gt; value to what your classname is.&lt;/p&gt;

&lt;p&gt;That’s it! Short and sweet. Cheers 🍻&lt;/p&gt;</content><author><name></name></author><category term="laravel" /><category term="laravel" /><category term="php" /><category term="seeder" /><category term="seed" /><summary type="html">running a single seeder in Laravel from classname</summary></entry><entry><title type="html">Expo Spotify UI Clone</title><link href="https://blog.calebnance.com/react-native/expo-spotify-ui-clone.html" rel="alternate" type="text/html" title="Expo Spotify UI Clone" /><published>2019-07-17T12:12:48-04:00</published><updated>2019-07-17T12:12:48-04:00</updated><id>https://blog.calebnance.com/react-native/expo-spotify-ui-clone</id><content type="html" xml:base="https://blog.calebnance.com/react-native/expo-spotify-ui-clone.html">&lt;p&gt;Today I wanted to talk about my UI Clone of the native Spotify app I created and open sourced. It’s written in React Native and Expo.&lt;/p&gt;

&lt;h3 id=&quot;notable-features&quot;&gt;Notable Features&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Running on the latest Expo SDK 40&lt;/li&gt;
  &lt;li&gt;One code base that output to: iOS, Android and PWA (Progressive Web App)&lt;/li&gt;
  &lt;li&gt;React Navigation (&lt;a href=&quot;https://reactnavigation.org/docs/4.x/getting-started&quot;&gt;v4&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Prettier/Linting
    &lt;ul&gt;
      &lt;li&gt;run: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yarn lint&lt;/code&gt; for CLI output&lt;/li&gt;
      &lt;li&gt;helpers in code editor&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Global Styles (reusable styles across the app)
    &lt;ul&gt;
      &lt;li&gt;uses 8pt system (but &lt;a href=&quot;https://github.com/calebnance/expo-spotify/blob/master/src/constants/globalStyles.js#L4&quot;&gt;can easily be changed&lt;/a&gt;)&lt;/li&gt;
      &lt;li&gt;simple Design System starter&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Example SVG usage&lt;/li&gt;
  &lt;li&gt;Example PropTypes usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/calebnance/expo-spotify&quot; class=&quot;btn btn-outline-dark&quot;&gt;View Project on Github&lt;/a&gt;&lt;/p&gt;

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

&lt;div class=&quot;img-wrapper&quot;&gt;
  &lt;img class=&quot;img&quot; src=&quot;/assets/img/react-native/spotify-ui-clone-react-native.jpg&quot; alt=&quot;preview of Spotify UI Clone&quot; title=&quot;preview of Spotify UI Clone&quot; /&gt;
&lt;/div&gt;</content><author><name></name></author><category term="react-native" /><category term="code" /><category term="howto" /><category term="javascript" /><category term="react-native" /><category term="react" /><category term="expo" /><summary type="html">spotify ui clone with react native and expo</summary></entry><entry><title type="html">Github’s Custom Repo Image Card Support</title><link href="https://blog.calebnance.com/development/github-custom-repo-image-card-support.html" rel="alternate" type="text/html" title="Github’s Custom Repo Image Card Support" /><published>2019-04-21T15:19:11-04:00</published><updated>2019-04-21T15:19:11-04:00</updated><id>https://blog.calebnance.com/development/github-custom-repo-image-card-support</id><content type="html" xml:base="https://blog.calebnance.com/development/github-custom-repo-image-card-support.html">&lt;p&gt;With Github’s recent custom (per repository) Open Graph image support &lt;a href=&quot;https://github.blog/2019-04-17-custom-open-graph-images-for-repositories/&quot;&gt;feature announcement&lt;/a&gt;, I wanted to test it out! Side note, this has been an open &lt;a href=&quot;https://github.com/isaacs/github/issues/612&quot;&gt;issue since March 2016&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;location&quot;&gt;Location&lt;/h2&gt;
&lt;p&gt;Find it on any repo within the &lt;strong&gt;Settings Tab&lt;/strong&gt; on Github.&lt;/p&gt;

&lt;div class=&quot;img-wrapper&quot;&gt;
  &lt;img class=&quot;img&quot; src=&quot;/assets/img/dev/github-social-preview.png&quot; alt=&quot;github open graph image support&quot; /&gt;
&lt;/div&gt;

&lt;h2 id=&quot;test-preview-image&quot;&gt;Test Preview Image&lt;/h2&gt;
&lt;p&gt;Once you’ve uploaded a preview image, test it on Twitter: &lt;a href=&quot;https://cards-dev.twitter.com/validator&quot;&gt;Link Validator&lt;/a&gt; or Facebook: &lt;a href=&quot;https://developers.facebook.com/tools/debug/sharing/?q=https%3A%2F%2Fgithub.com%2Fcalebnance%2Fexpo-netflix&quot;&gt;Debug Sharing Link&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;img-wrapper&quot;&gt;
  &lt;img class=&quot;img&quot; src=&quot;/assets/img/dev/twitter-card-validator.png&quot; alt=&quot;twitter link validator&quot; /&gt;
&lt;/div&gt;

&lt;h2 id=&quot;post-the-thing&quot;&gt;Post the thing&lt;/h2&gt;
&lt;p&gt;Then once all of that checks out, &lt;a href=&quot;https://twitter.com/calebnance/status/1120037834507812865&quot;&gt;post it&lt;/a&gt;!&lt;/p&gt;</content><author><name></name></author><category term="development" /><category term="code" /><category term="development" /><category term="github" /><category term="repo" /><category term="repository" /><category term="og" /><category term="image" /><summary type="html">github now supports custom Open Graph images for repositories</summary></entry><entry><title type="html">Expo Multi Screen App Starter</title><link href="https://blog.calebnance.com/react-native/expo-multi-screen-app-starter.html" rel="alternate" type="text/html" title="Expo Multi Screen App Starter" /><published>2018-10-10T22:12:48-04:00</published><updated>2018-10-10T22:12:48-04:00</updated><id>https://blog.calebnance.com/react-native/expo-multi-screen-app-starter</id><content type="html" xml:base="https://blog.calebnance.com/react-native/expo-multi-screen-app-starter.html">&lt;p&gt;To continue from my last post, I wanted to share with you a more robust multi screen expo app starter.&lt;/p&gt;

&lt;h3 id=&quot;out-of-the-box&quot;&gt;Out of the box&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Running on the latest Expo SDK 40&lt;/li&gt;
  &lt;li&gt;React Navigation (&lt;a href=&quot;https://reactnavigation.org/docs/4.x/getting-started&quot;&gt;v4&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Light/Dark Theme&lt;/li&gt;
  &lt;li&gt;Prettier &amp;amp; Airbnb Eslint&lt;/li&gt;
  &lt;li&gt;Simple Jest testing&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;other-features--api&quot;&gt;Other features / api&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;Dynamic route transitions (&lt;strong&gt;Mode:&lt;/strong&gt; regular &amp;amp; modal)&lt;/li&gt;
  &lt;li&gt;SVG usage&lt;/li&gt;
  &lt;li&gt;Utility checker for the notch: iPhoneX, iPhoneXs, iPhoneXr, iPhoneXs Max&lt;/li&gt;
  &lt;li&gt;Preloading/caching local fonts &amp;amp; images
    &lt;ul&gt;
      &lt;li&gt;with splash loading screen&lt;/li&gt;
      &lt;li&gt;and once the app has loaded, &lt;a href=&quot;https://airbnb.io/lottie/&quot;&gt;lottie&lt;/a&gt; animation intro into app&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Navigation Stacks&lt;/li&gt;
  &lt;li&gt;Example of Production vs Development flags&lt;/li&gt;
  &lt;li&gt;Custom SVG back button within React Navigation header&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/calebnance/expo-multi-screen-starter&quot; class=&quot;btn btn-outline-dark&quot;&gt;View Project on Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/calebnance/expo-multi-screen-starter#demo-and-release-notes&quot;&gt;Check the Demo &amp;amp; Release Notes here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This also comes with a very nice &lt;strong&gt;api/constants&lt;/strong&gt; import system I’ve slowly made better and better. This comes with &lt;strong&gt;global colors&lt;/strong&gt;, &lt;strong&gt;device info&lt;/strong&gt;, and &lt;strong&gt;global styles&lt;/strong&gt;. Pull requests are welcome!&lt;/p&gt;

&lt;div class=&quot;video-wrapper&quot;&gt;
  &lt;video class=&quot;video vid-mw&quot; autoplay=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; playsinline=&quot;&quot;&gt;
    &lt;source src=&quot;/assets/videos/expo/multi-screen-starter-v0.0.2.mp4&quot; type=&quot;video/mp4&quot; /&gt;
  &lt;/video&gt;
&lt;/div&gt;</content><author><name></name></author><category term="react-native" /><category term="code" /><category term="howto" /><category term="javascript" /><category term="react-native" /><category term="react" /><category term="expo" /><summary type="html">expo multi screen app starter, react native</summary></entry><entry><title type="html">Expo Single Screen App Starter</title><link href="https://blog.calebnance.com/react-native/expo-single-screen-app-starter.html" rel="alternate" type="text/html" title="Expo Single Screen App Starter" /><published>2018-10-03T21:30:18-04:00</published><updated>2018-10-03T21:30:18-04:00</updated><id>https://blog.calebnance.com/react-native/expo-single-screen-app-starter</id><content type="html" xml:base="https://blog.calebnance.com/react-native/expo-single-screen-app-starter.html">&lt;p&gt;Today I wanted to tell you all about the expo project I created to help you jump start a quick 1 screen app.&lt;/p&gt;

&lt;p&gt;This is a perfect project for a game app, or any app idea that only really needs one main screen. I got the idea from a game app actually, &lt;a href=&quot;https://github.com/calebnance/expo-single-screen-starter#demo-and-release-notes&quot;&gt;click here&lt;/a&gt; to see the side by side of this code repo and the game.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/calebnance/expo-single-screen-starter&quot; class=&quot;btn btn-outline-dark&quot;&gt;View Project on Github&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;out-of-the-box&quot;&gt;Out of the box&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Expo SDK Latest&lt;/li&gt;
  &lt;li&gt;Airbnb Eslint and Prettier&lt;/li&gt;
  &lt;li&gt;Simple Jest testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This also comes with a very nice &lt;strong&gt;api/constants&lt;/strong&gt; import system I’ve slowly made better and better. This comes with &lt;strong&gt;global colors&lt;/strong&gt;, &lt;strong&gt;device info&lt;/strong&gt;, and &lt;strong&gt;global styles&lt;/strong&gt;. This project is meant to be small and as minimal as possible, but the framework is pretty nice and easily expandable. Pull requests are welcome!&lt;/p&gt;

&lt;div class=&quot;video-wrapper&quot;&gt;
  &lt;video class=&quot;video vid-mw&quot; autoplay=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; playsinline=&quot;&quot;&gt;
    &lt;source src=&quot;/assets/videos/expo/single-screen-starter-v0.0.2.mp4&quot; type=&quot;video/mp4&quot; /&gt;
  &lt;/video&gt;
&lt;/div&gt;</content><author><name></name></author><category term="react-native" /><category term="code" /><category term="howto" /><category term="javascript" /><category term="react-native" /><category term="react" /><category term="expo" /><summary type="html">expo single screen app starter, react native</summary></entry></feed>