<?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: Tona</title>
    <description>The latest articles on DEV Community by Tona (@tonadev).</description>
    <link>https://dev.to/tonadev</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%2F291879%2F928d9d4f-554b-477d-bca6-e417b9882861.png</url>
      <title>DEV Community: Tona</title>
      <link>https://dev.to/tonadev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tonadev"/>
    <language>en</language>
    <item>
      <title>XState `ActorProvider` bug</title>
      <dc:creator>Tona</dc:creator>
      <pubDate>Sat, 25 Oct 2025 04:39:41 +0000</pubDate>
      <link>https://dev.to/tonadev/xstate-actorprovider-bug-aco</link>
      <guid>https://dev.to/tonadev/xstate-actorprovider-bug-aco</guid>
      <description>&lt;p&gt;While I was working with my first project using XState, Astro and React I stumbled upon this nasty error.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Uncaught Error: You used a hook from "ActorProvider" but it's not inside a  component.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I only found one issue in Github related to this &lt;a href="https://github.com/TanStack/router/issues/1353" rel="noopener noreferrer"&gt;HMR crash (under very specific circumstances)&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// onboarding-form.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Step1&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="s1"&gt;./step-1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MachineContext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createActorContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;machine&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;OnboardingForm&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;OnboardingMachineContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Provider&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Onboarding&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/OnboardingMachineContext.Provider&lt;/span&gt;&lt;span class="err"&gt;&amp;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;p&gt;Then I thought it was related to circular dependencies since I was importing the &lt;code&gt;MachineContext&lt;/code&gt; in my &lt;code&gt;Step1&lt;/code&gt;, then I created the context in a separate file &lt;code&gt;onboarding-machine-context&lt;/code&gt; and import it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// onboarding-form.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Step1&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="s1"&gt;./step-1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MachineContext&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="s1"&gt;./onboarding-machine-context&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;OnboardingForm&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;OnboardingMachineContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Provider&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Onboarding&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/OnboardingMachineContext.Provider&lt;/span&gt;&lt;span class="err"&gt;&amp;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;p&gt;And it fixed it. Hope this can help someone else.&lt;/p&gt;

</description>
      <category>astro</category>
      <category>xstate</category>
      <category>react</category>
    </item>
    <item>
      <title>Resolving Intellisense Autosuggest (Ctrl + Space) Issues in VS Code on macOS Ventura, Sonoma and Sequoia</title>
      <dc:creator>Tona</dc:creator>
      <pubDate>Fri, 22 Dec 2023 15:26:58 +0000</pubDate>
      <link>https://dev.to/tonadev/resolving-intellisense-autosuggest-ctrl-space-issues-in-vs-code-on-macos-ventura-and-sonoma-58a4</link>
      <guid>https://dev.to/tonadev/resolving-intellisense-autosuggest-ctrl-space-issues-in-vs-code-on-macos-ventura-and-sonoma-58a4</guid>
      <description>&lt;h2&gt;
  
  
  TLDR
&lt;/h2&gt;

&lt;p&gt;Check your global shortcuts&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to System Settings &amp;gt; Keyboard &amp;gt; Keyboard Shortcuts ... &amp;gt; Input Sources&lt;/li&gt;
&lt;li&gt;Disable "Select the previous input source"&lt;/li&gt;
&lt;li&gt;Click "Done"&lt;/li&gt;
&lt;li&gt;Restart machine&lt;/li&gt;
&lt;li&gt;Enjoy! &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Recently, I encountered a frustrating issue while working in Visual Studio Code on my Mac running macOS Ventura, Sonoma and Sequoia (Thanks for the update). The Intellisense autosuggest, a crucial feature for any developer, suddenly stopped working. After some investigation, I realized that a specific keybinding conflict was the root cause. In this article, I’ll share how I fixed this issue, hoping it will help others facing a similar problem.&lt;br&gt;
The Problem&lt;/p&gt;

&lt;p&gt;Intellisense is an essential tool in a developer's arsenal, offering real-time code suggestions, parameter info, and quick fixes. However, a few months ago, it became unresponsive on my setup. The issue was perplexing, as there were no apparent changes in my VS Code settings or extensions that could have led to this.&lt;/p&gt;

&lt;p&gt;After a bit of research and troubleshooting, I discovered that the problem was due to a keybinding conflict with macOS Ventura and Sonoma. The default keybinding for Intellisense in VS Code is Ctrl + Space. However, this combination is also used by macOS for switching input sources.&lt;br&gt;
The Solution&lt;/p&gt;

&lt;p&gt;Here's a step-by-step guide to resolve this keybinding conflict:&lt;br&gt;
Step 1: Access Keyboard Shortcuts&lt;/p&gt;

&lt;p&gt;Navigate to System Settings &amp;gt; Keyboard &amp;gt; Keyboard Shortcuts ... &amp;gt; Input Sources.&lt;br&gt;
Step 2: Modify the Shortcut&lt;/p&gt;

&lt;p&gt;Locate the option for "Select the previous input source" and disable it. This step is crucial as it removes the conflict with the VS Code Intellisense shortcut.&lt;br&gt;
Step 3: Save Changes&lt;/p&gt;

&lt;p&gt;After disabling the conflicting shortcut, click "Done" to save your changes.&lt;br&gt;
Step 4: Restart Your Machine&lt;/p&gt;

&lt;p&gt;For the changes to take full effect, restart your Mac. This ensures that the new settings are applied correctly.&lt;br&gt;
Step 5: Enjoy Uninterrupted Coding&lt;/p&gt;

&lt;p&gt;Once your machine restarts, open VS Code and enjoy the seamless functionality of Intellisense autosuggest.&lt;br&gt;
Conclusion&lt;/p&gt;

&lt;p&gt;Keybinding conflicts can be a subtle yet frustrating issue, especially when they interfere with essential development tools like Intellisense in VS Code. By following these simple steps, you can quickly resolve such conflicts on macOS Ventura and Sonoma, leading to a more efficient and enjoyable coding experience.&lt;/p&gt;

&lt;p&gt;Remember, sometimes the solutions to complex problems are simpler than we think!&lt;/p&gt;

&lt;p&gt;Follow me on X &lt;a href="https://x.com/tonadev" rel="noopener noreferrer"&gt;@tonadev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fix</category>
      <category>macos</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Google Analytics Tag using Astro</title>
      <dc:creator>Tona</dc:creator>
      <pubDate>Fri, 26 May 2023 15:21:10 +0000</pubDate>
      <link>https://dev.to/tonadev/google-analytics-tag-using-astro-35og</link>
      <guid>https://dev.to/tonadev/google-analytics-tag-using-astro-35og</guid>
      <description>&lt;p&gt;If you are using Astro and want to add Google Analytics with the copy/paste version provided by Google itself, which is the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;    &lt;span class="c"&gt;&amp;lt;!-- Google tag (gtag.js) --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;async&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://www.googletagmanager.com/gtag/js?id=G-V"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
      &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
      &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;dataLayer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;gtag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nf"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

      &lt;span class="nf"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;config&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;G-V&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just note that Astro by default would convert the second &lt;code&gt;script&lt;/code&gt; tag without any attributes to a &lt;code&gt;module&lt;/code&gt; type meaning that the function &lt;code&gt;gtag&lt;/code&gt; would be scoped to that single &lt;code&gt;script&lt;/code&gt; tag. &lt;/p&gt;

&lt;p&gt;The fix is super simple, just remember to add &lt;code&gt;type="application/javascript"&lt;/code&gt; so that Astro doesn't infer the script tag to a &lt;code&gt;module&lt;/code&gt; one.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- first script tag --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/javascript"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;Follow me on Twitter, &lt;a href="https://twitter.com/tonadev" rel="noopener noreferrer"&gt;@tonadev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@jtzanno?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Joao Tzanno&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/G9_Euqxpu4k?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Cool way to use staging and production environment with Next.js</title>
      <dc:creator>Tona</dc:creator>
      <pubDate>Sat, 27 Mar 2021 05:33:45 +0000</pubDate>
      <link>https://dev.to/tonadev/cool-way-to-use-staging-and-production-environment-with-next-js-28bb</link>
      <guid>https://dev.to/tonadev/cool-way-to-use-staging-and-production-environment-with-next-js-28bb</guid>
      <description>&lt;p&gt;At work we've been using Next.js to develop a new app and so far we've been using only the staging or quality assurance environment, but as time passes the time to deploy this app to production is getting closer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The task
&lt;/h2&gt;

&lt;p&gt;I had to setup our Next.js app to make it work in multiple environments and load the env variables accordingly, the environments were development, staging and production. After some thought and reading how Next handles the &lt;code&gt;.env&lt;/code&gt; files I was sad when I realized that the &lt;code&gt;.env.staging&lt;/code&gt; file was not supported (&lt;a href="https://github.com/vercel/next.js/issues/12772#issuecomment-627296165" rel="noopener noreferrer"&gt;and probably won't be supported in a long time&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;I knew I had to keep using Next's cool implementation for &lt;code&gt;.env&lt;/code&gt; files, like allowing me to expand variables, and keep some environment variables out of the client side and I didn't want to copy how they do it, because that'd imply adding more code to the project and also not taking advantage of a cool feature of a framework, fortunately I came with a solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  The solution
&lt;/h2&gt;

&lt;p&gt;Instead of having a &lt;code&gt;.env.production&lt;/code&gt; file, I thought that at install time I'll generate the appropriate &lt;code&gt;.env.production&lt;/code&gt; file based on a environment variable, I knew that we were using the &lt;code&gt;TARGET_ENV&lt;/code&gt; variable to separte the staging and production deployments so if I read that value I can use our good friend &lt;code&gt;node&lt;/code&gt; to create the file.&lt;/p&gt;

&lt;p&gt;This is the script that I created&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
 

&lt;p&gt;After creating that one, I chosen to create a custom step for the app called &lt;code&gt;boot&lt;/code&gt;&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;"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;"boot"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npm install &amp;amp;&amp;amp; node copyEnvFile.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="nl"&gt;"copy:env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node copyEnvFile.js"&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;&lt;strong&gt;And that's it&lt;/strong&gt; you are handling different environments using Next.js native dotenv file management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some troubles I faced
&lt;/h2&gt;

&lt;p&gt;Before coming up with the full solution above I faced some problems&lt;/p&gt;

&lt;h3&gt;
  
  
  Consider the write permits of the user running &lt;code&gt;npm&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;I thought that the best place to do the copy envfile test was inside the &lt;code&gt;next build&lt;/code&gt; step, but because of some problems inside the deploying container I was not create files because of ownership permissions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using any of the &lt;code&gt;pre&lt;/code&gt; or &lt;code&gt;pos&lt;/code&gt; install hook.
&lt;/h3&gt;

&lt;p&gt;In order to run any of the mentioned hooks, npm needs to be spawn by the owner of the files and because there were some unkwown discrepancies I had an error that wouldn't run any of these hooks inside my particular container.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other alternatives
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Using &lt;code&gt;env-cmd&lt;/code&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Checkout the &lt;a href="https://www.npmjs.com/package/env-cmd" rel="noopener noreferrer"&gt;&lt;code&gt;env-cmd&lt;/code&gt;&lt;/a&gt; package&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With that package you can load a specific &lt;code&gt;.env&lt;/code&gt; file based on some variables but I chose not to use it because I'd be loosing cool Next.js features&lt;/p&gt;

&lt;h3&gt;
  
  
  Using &lt;code&gt;if-env&lt;/code&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Checkout the &lt;a href="https://www.npmjs.com/package/if-env" rel="noopener noreferrer"&gt;&lt;code&gt;if-env&lt;/code&gt;&lt;/a&gt; package&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's really useful for running certain scripts based on the environment variables but again it's not a good solution because you won't be able to use some Next.js features&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;This is my first dev.to article and I hope you find value in it. See ya!&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>dotenv</category>
      <category>staging</category>
    </item>
  </channel>
</rss>
