<?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: Giacomo Cerquone</title>
    <description>The latest articles on DEV Community by Giacomo Cerquone (@giacomocerquone).</description>
    <link>https://dev.to/giacomocerquone</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%2F270110%2F2b35566e-284c-4392-84cb-1f3b1f5bf681.jpg</url>
      <title>DEV Community: Giacomo Cerquone</title>
      <link>https://dev.to/giacomocerquone</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/giacomocerquone"/>
    <language>en</language>
    <item>
      <title>Sharing VS Code extensions across teams</title>
      <dc:creator>Giacomo Cerquone</dc:creator>
      <pubDate>Thu, 28 Apr 2022 14:11:04 +0000</pubDate>
      <link>https://dev.to/musixmatch/sharing-vs-code-extensions-across-teams-22ij</link>
      <guid>https://dev.to/musixmatch/sharing-vs-code-extensions-across-teams-22ij</guid>
      <description>&lt;p&gt;Let's say you have a big monorepo (not unusual at all in these days) and that you have 20+ developers working on it and you have many tools to improve the quality of the written code.&lt;br&gt;
How do you keep the developer experience at the top?&lt;/p&gt;

&lt;p&gt;This is one of the many challenges we face at Musixmatch in our front-end codebase.&lt;/p&gt;

&lt;p&gt;We're aware of several generic ways in which companies can provide a cohesive environment to work on. There is Vagrant, but also cloud development solutions with workspaces that provide you with stuff already configured for you.&lt;/p&gt;

&lt;p&gt;But what about something more specific to the editor/IDE in use? What if there was a way to inform the developers that a certain project requires certain extensions and settings?&lt;/p&gt;

&lt;p&gt;We use &lt;strong&gt;Visual Studio Code&lt;/strong&gt; and we believe it's important for the developers to be on common ground when talking about the software we use to write code, and there is a way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The .vscode folder
&lt;/h2&gt;

&lt;p&gt;Visual Studio Code has both a user configuration and a workspace one that can be found inside the project, within a ".vscode" folder that contains all the necessary json files to properly configure the editor.&lt;/p&gt;

&lt;p&gt;The overall configuration of Visual Studio Code will be a merge of the configuration inside the developer computer and the one inside the project.&lt;/p&gt;

&lt;p&gt;Can we do the same but for extensions and not just settings?&lt;/p&gt;

&lt;h2&gt;
  
  
  The extensions.json file
&lt;/h2&gt;

&lt;p&gt;Just the other day I was investigating why we were encountering many difficulties in writing stories with Storybook for our React Native internal design system (called &lt;strong&gt;Ritmo&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;We're used to writing our stories in MDX because we found it to be more declarative than javascript. Sadly, though, there is no straightforward support from linters and syntax highlighters over MDX files*.&lt;/p&gt;

&lt;p&gt;Thanks to the &lt;a href="https://github.com/mdx-js/vscode-mdx" rel="noopener noreferrer"&gt;following VS Code extension&lt;/a&gt; and the &lt;a href="https://github.com/mdx-js/eslint-mdx" rel="noopener noreferrer"&gt;related eslint plugin&lt;/a&gt;, we enabled linting and syntax highlighting also inside MDX files.&lt;/p&gt;

&lt;p&gt;So, Visual Studio Code has a way to request users working on a project, that contains a .vscode/extensions.json file, to install certain extensions. Here is an example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fj7zl82i52tnfbhasj6gu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fj7zl82i52tnfbhasj6gu.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;MDX stands for "Markdown JSX", it's an extension of the more classical MD format that allows writing JSX (e.g. using React components) inside markdown files.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I find this to be a little useful gem, also I'd love to see this approach used within open source projects.&lt;/p&gt;

&lt;p&gt;What do you use instead to keep your projects synced and well organized between your devs?&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>reactnative</category>
      <category>javascript</category>
      <category>storybook</category>
    </item>
    <item>
      <title>Re-thinking React Native env vars</title>
      <dc:creator>Giacomo Cerquone</dc:creator>
      <pubDate>Sun, 29 Dec 2019 10:31:53 +0000</pubDate>
      <link>https://dev.to/giacomocerquone/re-thinking-react-native-env-vars-589d</link>
      <guid>https://dev.to/giacomocerquone/re-thinking-react-native-env-vars-589d</guid>
      <description>&lt;h1&gt;
  
  
  You can read this post on my &lt;a href="https://giacomocerquone.com/blog/rethinking-env-vars-in-react-native"&gt;personal blog&lt;/a&gt; too.
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Please let me know of your ideas, solutions and thoughts about all this
&lt;/h3&gt;

&lt;p&gt;We can say it: some parts of React Native are still &lt;strong&gt;missing&lt;/strong&gt; and sometimes this may keep us on alert when developing an app made for the public.&lt;br&gt;
One of the main pieces I think it's missing, is the use of &lt;strong&gt;environment variables&lt;/strong&gt;.&lt;br&gt;
This post comes from problems and difficulties I experienced while building and working on &lt;strong&gt;pretty complex&lt;/strong&gt; React Native apps.&lt;br&gt;
For sure many packages tries to help, yet I didn't find one that was &lt;strong&gt;satisfying my requirements&lt;/strong&gt;.&lt;br&gt;
So if you're searching for a straightforward solution, leave hope. Instead, if you know about this problem and didn't find a solution that fits your need, keep reading :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;Let's go for steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I need &lt;strong&gt;many builds&lt;/strong&gt; of my app and each of them must be configured in a specific way.&lt;/li&gt;
&lt;li&gt;The same way of applying the configuration is needed &lt;strong&gt;while developing&lt;/strong&gt; (so to have a "dev" configuration).&lt;/li&gt;
&lt;li&gt;It's obvious that needing a build time configuration (a configuration that gets applied in a specific build), the configuration &lt;strong&gt;must come from outside&lt;/strong&gt; the javascript code. And this is because we always build using native tools (gradle/xcodebuild).&lt;/li&gt;
&lt;li&gt;The configuration can also be guided by a &lt;strong&gt;single value&lt;/strong&gt;.
For example, I could inject a 'stage' string, and let the javascript code picks up a particular &lt;strong&gt;configuration object&lt;/strong&gt; with the correct values.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In fact, what we want &lt;strong&gt;isn't&lt;/strong&gt; the configuration of an environment, but the configuration of a specific build in a specific way. Let's understand why in the next paragraph.&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;NOTE: As you may have read from this other post, I'm recently excluding Expo from the complex apps I'm working on.&lt;br&gt;
On Expo, we have what it's called "&lt;strong&gt;OTA channels&lt;/strong&gt;". When we request a particular build, you are asked for a string that represents the channel of the app. It will listen to this channel and will retrieve the OTA updates. With that I could accomplish what I'm asking.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not a standard solution?
&lt;/h2&gt;

&lt;p&gt;First of all, why do we use env vars at all?&lt;br&gt;
To &lt;strong&gt;store secrets&lt;/strong&gt; and to &lt;strong&gt;configure behaviours&lt;/strong&gt; of an application.&lt;br&gt;
But everything in a front-end app is &lt;strong&gt;free to be seen&lt;/strong&gt; by anyone, so in React Native, for example, we might use them only to configure behaviors in a standard way.&lt;br&gt;
Then we must distinguish between:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using env vars in a &lt;strong&gt;boxed solution&lt;/strong&gt; to create apps (one like create-react-app, react native, angular-cli, etc.)&lt;/li&gt;
&lt;li&gt;Using them in a custom solution (one that &lt;strong&gt;reimplements a webpack config&lt;/strong&gt; basically).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the first kind, you'll always be restricted somehow from the fact that those tools were born exactly to avoid the configuration pain.&lt;br&gt;
In the second one, you're free to go but it's very hard to reimplement it and you will need to fix so many weird stuff during the journey that &lt;strong&gt;it may not worth the risk&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So to find a solution in React Native, we can &lt;strong&gt;spy on solutions&lt;/strong&gt; implemented by other tools.&lt;br&gt;
&lt;strong&gt;Create react app&lt;/strong&gt;, for example, gives you this: &lt;a href="https://create-react-app.dev/docs/adding-custom-environment-variables/"&gt;https://create-react-app.dev/docs/adding-custom-environment-variables/&lt;/a&gt; and it's done through a custom webpack configuration done by the facebook team &lt;a href="https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/config/webpack.config.js"&gt;here&lt;/a&gt; that uses &lt;a href="https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/config/env.js"&gt;this code&lt;/a&gt; to collect all the env vars defined with a &lt;code&gt;REACT_&lt;/code&gt; prefix for each of them.&lt;/p&gt;

&lt;p&gt;Nice, but since in React Native we're left alone, we should reimplement a custom webpack conf.&lt;br&gt;
Luckily there is already a &lt;a href="https://github.com/mrsteele/dotenv-webpack#readme"&gt;webpack plugin&lt;/a&gt; to inject env vars, &lt;strong&gt;but&lt;/strong&gt;, as we anticipated earlier, a custom configuration is &lt;strong&gt;really hard to achieve&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://github.com/reactnativecn/react-native-webpack"&gt;This is the only attempt&lt;/a&gt; at doing it that I could find online but it's &lt;strong&gt;not updated&lt;/strong&gt; and it's so &lt;strong&gt;awkward&lt;/strong&gt; that I'd prefer to not embark myself into a thing like this. (plus I'm almost sure that &lt;strong&gt;it doesn't work as it is&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Let's find a different way to solve this issue then.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;This is the idea: why use env vars when we already can export something directly through the same language we're writing the code?&lt;br&gt;
Of course, this doesn't come out of nowhere. Many tools do this already (metro.config, .babelrc, etc.) but we're not used to do it in our application's code.&lt;br&gt;
Examining the &lt;a href="https://12factor.net/config"&gt;twelve-factor app&lt;/a&gt; manifesto we can get an intuition of why is that and what are the &lt;strong&gt;consequences&lt;/strong&gt; of doing this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Another approach to config is the use of config files that are not checked into revision control, such as config/database.yml in Rails.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then it basically says that this is prone to human errors (like everything I'd say) and then there are these assumptions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Env vars are easy to change between deploys without changing any code.&lt;br&gt;
Unlike config files, there is little chance of them being checked into the code repo accidentally.&lt;br&gt;
They are a language and OS-agnostic standard.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In React Native:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The first sentence is &lt;strong&gt;true&lt;/strong&gt; but &lt;strong&gt;only&lt;/strong&gt; if the code runs in a machine we control.&lt;/li&gt;
&lt;li&gt;The second is pretty much &lt;strong&gt;false&lt;/strong&gt;. We're used to have &lt;strong&gt;dotenv files&lt;/strong&gt;, so there is the &lt;strong&gt;same risk&lt;/strong&gt; of committing that instead of a config file.Plus in front-end apps, as we said, env vars are just configuration values.&lt;/li&gt;
&lt;li&gt;The third sentence implies that &lt;strong&gt;should be easy&lt;/strong&gt; to read them from the code. It should be indeed, but in the current situation it's &lt;strong&gt;absolutely the opposite&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why do we have such &lt;strong&gt;inconsistencies&lt;/strong&gt; with this manifesto? Simple, because environment variables were started to be used in the developing world when you needed to configure an environment, indeed, where your code would have run, but not all kinds of development allow this.&lt;/p&gt;

&lt;h1&gt;
  
  
  The solution
&lt;/h1&gt;

&lt;p&gt;I won't go into details with all the implementations I tried and discarded, this post would become huge with all the considerations, the pros and cons. Consider only that, luckily for you, I'm using the following solution in many production apps and it's going ok.&lt;br&gt;
It's very basic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define an active.env.js file at the root of the project like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Define configuration values in an env.js file like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Platform&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-native&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;active&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./active.env&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;envs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;stage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;DEV_API&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://staging.api.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;SOUNDS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Platform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OS&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;android&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;prod&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;DEV_API&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://prod.api.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;SOUNDS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Platform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OS&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;android&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;dev&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;DEV_API&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://dev.api.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;SOUNDS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Platform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OS&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;android&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="kc"&gt;false&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;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;envs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;active&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;You'll use a shell script (or an npm package) within an npm script called, for example, "set-stage" which will write inside the active.env.js file the right string (env) to apply to the project. Something like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"set-stage": "shx echo \"export default 'stage';\"&amp;gt; active.env.js",
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;From wherever you want, import a configuration value like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;DEV_API&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;env.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now within each build process, you just have to automatize the changing of the content of the active.env.js file and you and leave it as "dev" the rest of the time.&lt;br&gt;
This can be done through command concatenation (&amp;amp;&amp;amp; inside the npm scripts).&lt;/p&gt;

&lt;h2&gt;
  
  
  OTA channels
&lt;/h2&gt;

&lt;p&gt;Another problem we solve in such easy way is the creation and definition of &lt;a href="https://docs.expo.io/versions/latest/distribution/release-channels/"&gt;release channels&lt;/a&gt; (from expo terminology) with your favorite OTA updates system.&lt;br&gt;
With &lt;a href="https://github.com/microsoft/react-native-code-push"&gt;Microsoft CodePush&lt;/a&gt;, which &lt;a href="https://giacomocerquone.com/blog/microsoft-codepush-integration-in-react-native-0.60"&gt;I talked about here&lt;/a&gt; for example, you can import the CODE PUSH key from the right env javascript file at build time and correctly direct the updates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternatives
&lt;/h2&gt;

&lt;h3&gt;
  
  
  react-native-dotenv
&lt;/h3&gt;

&lt;p&gt;This package goes &lt;strong&gt;very close&lt;/strong&gt; to accomplish what I want for my build workflow but sadly they &lt;strong&gt;reached a dead-end&lt;/strong&gt; for various reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No possibility to choose a certain env file.
&lt;a href="https://github.com/zetachang/react-native-dotenv/pull/34"&gt;Someone tried to implement it&lt;/a&gt; through an env var (a sort of parent env var to orchestrate everything) but hit a wall when working with gradle and xcode&lt;/li&gt;
&lt;li&gt;The package is not maintained anymore and there is some low-level problem to the whole architecture that forces you to edit the files that import the env vars when you change them to let them retrieve the new values. (I assume because of babel)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  react-native-config
&lt;/h3&gt;

&lt;p&gt;This one is the best you can get without coming up with your own implementation.&lt;br&gt;
The problem is that to achieve all those functionalities, it's built as a dependency and not as a dev dependency (it must be linked and so &lt;strong&gt;the code runs at runtime&lt;/strong&gt; too) and you have to tinker a bit on how to configure it properly both on xCode and Android Studio.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>env</category>
      <category>var</category>
      <category>build</category>
    </item>
  </channel>
</rss>
