<?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: Sofolahan Eniola Ademola </title>
    <description>The latest articles on DEV Community by Sofolahan Eniola Ademola  (@nattive).</description>
    <link>https://dev.to/nattive</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%2F469990%2F193e309c-8ef3-46d1-8079-fff15f2f18af.png</url>
      <title>DEV Community: Sofolahan Eniola Ademola </title>
      <link>https://dev.to/nattive</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nattive"/>
    <language>en</language>
    <item>
      <title>Ai a weapon of self destruction</title>
      <dc:creator>Sofolahan Eniola Ademola </dc:creator>
      <pubDate>Mon, 07 Jul 2025 13:36:24 +0000</pubDate>
      <link>https://dev.to/nattive/ai-a-weapon-of-self-destruction-1ejl</link>
      <guid>https://dev.to/nattive/ai-a-weapon-of-self-destruction-1ejl</guid>
      <description>&lt;p&gt;AI is a powerful tool, In the hands of an experienced developer, it becomes a weapon of mass productivity. In the hands of a junior developer, it can easily become a weapon of self-destruction.&lt;/p&gt;

&lt;p&gt;Don’t get me wrong, AI has permanently changed the game. It’s doubled efficiency, sped up debugging, and unlocked new levels of problem-solving. I’ve used it so much that I can instantly tell when a colleague pastes raw AI output without filtering or fine-tuning it.&lt;/p&gt;

&lt;p&gt;Recently, I had the chance to work with a few junior devs, and I was honestly shocked by how heavily some of them rely on AI. I always ask them:&lt;/p&gt;

&lt;p&gt;Do you understand the suggested fix?&lt;/p&gt;

&lt;p&gt;Did you test it properly?&lt;/p&gt;

&lt;p&gt;Does the UI match the design pixel for pixel?&lt;/p&gt;

&lt;p&gt;Do you know the performance impact of the technique you used?&lt;/p&gt;

&lt;p&gt;Did you even ask your AI for pros and cons—or an implementation plan?&lt;/p&gt;

&lt;p&gt;I mean, it's easy to just copy your problem and paste it into ChatGPT or Claude. But what about code structure? Performance optimisations? Memory leaks? and so on.&lt;/p&gt;

&lt;p&gt;The gist is, AI can assist with all of that—but rarely on the first try. You need to guide it, prompt it precisely, and validate the output thoroughly.&lt;/p&gt;

&lt;p&gt;These oversights show up quickly, especially when reviewing pull requests. It’s become frustrating to constantly point out basic issues that should’ve been caught with proper scrutiny. If you're blindly trusting AI without understanding or refining what it gives you, you're not just slowing down your team, you’re weakening your own growth.&lt;/p&gt;

&lt;p&gt;So, to my dearest young and aspiring devs: Use the tool to help you improve, learn, and do the work. Because when your experience or knowledge is combined with the right tools, you won’t just get by—you’ll do exploits.&lt;/p&gt;

&lt;p&gt;cheers &lt;/p&gt;

</description>
    </item>
    <item>
      <title>New Features in ES15 (2024) with Code Examples</title>
      <dc:creator>Sofolahan Eniola Ademola </dc:creator>
      <pubDate>Wed, 28 Aug 2024 16:30:00 +0000</pubDate>
      <link>https://dev.to/nattive/new-features-in-es15-2024-with-code-examples-4926</link>
      <guid>https://dev.to/nattive/new-features-in-es15-2024-with-code-examples-4926</guid>
      <description>&lt;p&gt;ECMAScript 15 (ES15) is the latest version of the JavaScript programming language, released in 2024. It introduces several new features that aim to enhance code readability, maintainability, and performance. Here is my top 5 features that i believe you should be aware of:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Class Fields and Static Properties&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;One of the most significant additions to ES15 is the ability to define class fields and static properties directly within the class body. This eliminates the need for constructor functions to initialize properties, leading to cleaner and more concise code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&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;class&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;age&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;h3&gt;
  
  
  2. &lt;strong&gt;WeakRefs&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;WeakRefs provide a mechanism to create weak references to objects, preventing memory leaks. This is particularly useful when dealing with objects that are no longer needed but might be kept alive due to unintentional references.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&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;obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;weakRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;WeakRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// ... (later)&lt;/span&gt;

&lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// obj is eligible for garbage collection&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. &lt;strong&gt;Import Assertions&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Import assertions allow you to specify the module format of an imported module, ensuring compatibility with different module systems. This can be helpful when dealing with modules from various sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;myFunction&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;./myModule.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;assert&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. &lt;strong&gt;RegExp Match Indices&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;indices&lt;/code&gt; property of regular expression matches now provides more information about the indices of matched substrings. This can be useful for more precise string manipulation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&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;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/hello/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;match&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;indices&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: [[0, 5]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. &lt;strong&gt;Array.prototype.at()&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;at()&lt;/code&gt; method provides a more concise way to access elements at specific positions in an array, including negative indices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&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;fruits&lt;/span&gt; &lt;span class="o"&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;apple&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;banana&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;cherry&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fruits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: "banana"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fruits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: "cherry"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These new features in ES15 offer significant improvements to the JavaScript language, making it more efficient and expressive. By understanding and utilizing these features, you can write cleaner, more maintainable, and performant JavaScript code.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What's the difference between ReactNode vs React.Element</title>
      <dc:creator>Sofolahan Eniola Ademola </dc:creator>
      <pubDate>Sun, 25 Aug 2024 07:52:03 +0000</pubDate>
      <link>https://dev.to/nattive/whats-the-difference-between-reactnode-vs-reactelement-cgc</link>
      <guid>https://dev.to/nattive/whats-the-difference-between-reactnode-vs-reactelement-cgc</guid>
      <description>&lt;p&gt;When working with TypeScript in ReactJs, understanding the nuances between &lt;code&gt;ReactNode&lt;/code&gt; and &lt;code&gt;React.Element&lt;/code&gt; is crucial for writing clean, type-safe code. Ealier in my career, i often misuse or interchange the usage of &lt;code&gt;ReactNode&lt;/code&gt; and &lt;code&gt;React.Element&lt;/code&gt;. But these types represent different aspects of React content, and their appropriate usage can significantly impact your project's maintainability and performance. Let's talk about this in details:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is ReactNode?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ReactNode&lt;/code&gt; is a comprehensive type that encompasses any type of React content that can be rendered. This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React elements&lt;/strong&gt; (created using JSX)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strings&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Numbers&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arrays&lt;/strong&gt; or &lt;strong&gt;fragments&lt;/strong&gt; of the above&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;null&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;undefined&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Booleans&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What is React.Element?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;React.Element&lt;/code&gt; on the other hand, is a more specific type that represents a React element. This is the object returned by &lt;code&gt;React.createElement()&lt;/code&gt; or JSX expressions. It has a defined structure with &lt;code&gt;type&lt;/code&gt;, &lt;code&gt;props&lt;/code&gt;, and &lt;code&gt;key&lt;/code&gt; properties.&lt;/p&gt;

&lt;p&gt;Now let's take a look at key differences between both:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Differences&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;ReactNode&lt;/th&gt;
&lt;th&gt;React.Element&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scope&lt;/td&gt;
&lt;td&gt;Includes &lt;code&gt;React.Element&lt;/code&gt; and other types.&lt;/td&gt;
&lt;td&gt;Represents only React elements.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usage&lt;/td&gt;
&lt;td&gt;For component children or props accepting various content.&lt;/td&gt;
&lt;td&gt;When you specifically need a React element.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nullability&lt;/td&gt;
&lt;td&gt;Can be &lt;code&gt;null&lt;/code&gt; or &lt;code&gt;undefined&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Cannot be &lt;code&gt;null&lt;/code&gt; or &lt;code&gt;undefined&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Type Safety&lt;/td&gt;
&lt;td&gt;Provides less type safety compared to &lt;code&gt;React.Element&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Provides more type safety.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;When to Use ReactNode&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Defining types for children props:&lt;/strong&gt; When a component can accept various types of content, use &lt;code&gt;ReactNode&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working with flexible content:&lt;/strong&gt; If your component needs to render different types of content, &lt;code&gt;ReactNode&lt;/code&gt; is suitable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&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="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;Props&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Container&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FC&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Props&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When to Use React.Element&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ensuring type safety:&lt;/strong&gt; When you need to guarantee that a prop is a React element, use &lt;code&gt;React.Element&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working with higher-order components or render props:&lt;/strong&gt; If you're manipulating React elements, &lt;code&gt;React.Element&lt;/code&gt; is appropriate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&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="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;Props&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;element&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactElement&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ElementWrapper&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FC&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Props&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;wrapper&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cloneElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;modified&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Default to ReactNode:&lt;/strong&gt; When in doubt, use &lt;code&gt;ReactNode&lt;/code&gt; for component children.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use React.Element for specificity:&lt;/strong&gt; If you need to ensure a prop is a React element, use &lt;code&gt;React.Element&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consider nullability:&lt;/strong&gt; Handle &lt;code&gt;null&lt;/code&gt; and &lt;code&gt;undefined&lt;/code&gt; cases when using &lt;code&gt;ReactNode&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type narrowing:&lt;/strong&gt; If necessary, narrow &lt;code&gt;ReactNode&lt;/code&gt; to &lt;code&gt;React.ReactElement&lt;/code&gt; for specific operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By understanding the differences between &lt;code&gt;ReactNode&lt;/code&gt; and &lt;code&gt;React.Element&lt;/code&gt;, you can write more type-safe and maintainable React components. Choose the appropriate type based on your specific needs to ensure your code is both flexible and robust.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The proposed CSS @when/@else Rules</title>
      <dc:creator>Sofolahan Eniola Ademola </dc:creator>
      <pubDate>Sat, 01 Jun 2024 07:24:16 +0000</pubDate>
      <link>https://dev.to/nattive/the-proposed-css-whenelse-rules-1i9f</link>
      <guid>https://dev.to/nattive/the-proposed-css-whenelse-rules-1i9f</guid>
      <description>&lt;p&gt;So if you have been wondering why CSS is so crucial in web development? The answer lies in its ability to shape the visual aspects of websites. CSS (Cascading Style Sheets) is important for creating aesthetically pleasing web pages by controlling layout, colors, fonts, and various design elements. &lt;/p&gt;

&lt;p&gt;But what if you could go beyond the traditional methods and apply styles conditionally based on specific criteria? This is where the proposed CSS when/else rules come in.&lt;/p&gt;

&lt;p&gt;Although these rules are still in the proposal stage and not yet implemented in browsers, they offer a glimpse into the future of CSS. Developers can look forward to using these features to enhance the power and flexibility of CSS for conditional styling. For more details, you can refer to the W3C module.&lt;/p&gt;

&lt;p&gt;Now, let’s look at this feature to understand what the when/else rules are all about.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding CSS when/else Rules
&lt;/h3&gt;

&lt;p&gt;With CSS, when/else rules provide a mechanism for applying styles selectively based on specific conditions. In simpler terms, they allow developers to define a set of styles to be applied when a condition is met and an alternative set of styles when it is not. This approach differs from traditional CSS, where styles are applied universally.&lt;/p&gt;

&lt;h4&gt;
  
  
  Comparison Table: when/else Rules vs. Traditional CSS
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Traditional CSS&lt;/th&gt;
&lt;th&gt;CSS when/else Rules&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Application of Styles&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Styles are applied universally to elements&lt;/td&gt;
&lt;td&gt;Styles are applied conditionally based on rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Standard CSS selectors and properties&lt;/td&gt;
&lt;td&gt;Conditional statements with @when and &lt;a class="mentioned-user" href="https://dev.to/else"&gt;@else&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flexibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited to media queries and standard selectors&lt;/td&gt;
&lt;td&gt;Greater flexibility with conditional styling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Use Cases&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Consistent styling across all elements&lt;/td&gt;
&lt;td&gt;Dynamic styling based on specific criteria&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Implementation Status&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fully supported by all browsers&lt;/td&gt;
&lt;td&gt;Currently in proposal stage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Example of Traditional CSS
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Traditional CSS example */&lt;/span&gt;
&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;black&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;lightgray&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;h4&gt;
  
  
  Example of CSS @when/&lt;a class="mentioned-user" href="https://dev.to/else"&gt;@else&lt;/a&gt; Rules (Proposed)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Proposed CSS @when/@else example */&lt;/span&gt;
&lt;span class="k"&gt;@when&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefers-color-scheme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;dark&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;black&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&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;@else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;black&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;p&gt;Although these when/else rules are still in the proposal stage and not yet implemented in browsers, they offer a glimpse into the future of CSS. Developers can look forward to using these features to enhance the power and flexibility of CSS for conditional styling. For more details, you can refer to the W3C module.&lt;/p&gt;

&lt;p&gt;In this example, the &lt;code&gt;.container&lt;/code&gt; will have a padding of 10px if the viewport width is less than 600px. Otherwise, it will default to a padding of 20px.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Use Cases for CSS @when/&lt;a class="mentioned-user" href="https://dev.to/else"&gt;@else&lt;/a&gt; Rules
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Responsive Design&lt;/strong&gt;: Adjusting layout and font sizes based on viewport dimensions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;: Switching from a multi-column layout to a single-column layout on mobile devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Feature Detection&lt;/strong&gt;: Applying styles only if certain CSS features are supported by the browser.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;: Using grid layout styles only if the browser supports CSS Grid.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Environment Adaptation&lt;/strong&gt;: Changing styles based on user preferences or environmental conditions like dark mode.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;: Applying a dark color scheme if the user has set their system to dark mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;State-Based Styling&lt;/strong&gt;: Modifying styles based on the state of an element, such as hover or focus.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;: Changing the background color of a button when it is hovered over.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fallbacks for Older Browsers&lt;/strong&gt;: Providing alternative styles for browsers that do not support modern CSS properties.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;: Using flexbox as a fallback for browsers that do not support grid layout.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I personally think this new features will enhance readability, and with the combination of different queries (such as &lt;a class="mentioned-user" href="https://dev.to/media"&gt;@media&lt;/a&gt; and &lt;a class="mentioned-user" href="https://dev.to/support"&gt;@support&lt;/a&gt;) into a single statement. You can wrap multiple conditions into one block instead of writing separate conditional rules for specific tasks. like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@when media(max-width: 769px) and supports(display: grid) and supports(display: flex) {
  .grid {
    grid-template-columns: 1fr;
  }

  .flex {
    flex-direction: row;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And most importantly, less JavaScript. to achieve something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
window.addEventListener('resize', () =&amp;gt; {
  if (window.innerWidth &amp;lt; 600) {
    document.body.classList.add('mobile');
  } else {
    document.body.classList.remove('mobile');
  }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can now achieve same in CSS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body.mobile .container {
  /* Styles for mobile */
}

@else {
  .container {
    /* Default styles */
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Responsive design using the rules&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@when media(max-width: 768px) {
  .column {
    width: 100%;
  }
}

@else {
  .column {
    width: 50%;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is so much more you can achieve with these rules! Tell me in the comments section: Are you looking forward to this feature? Will you be using it? What do you think?&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>html</category>
      <category>javascript</category>
    </item>
    <item>
      <title>My top VS Code Extensions for Front-End Development in 2024</title>
      <dc:creator>Sofolahan Eniola Ademola </dc:creator>
      <pubDate>Fri, 03 May 2024 09:25:05 +0000</pubDate>
      <link>https://dev.to/nattive/my-top-vs-code-extensions-for-front-end-development-in-2024-3lg5</link>
      <guid>https://dev.to/nattive/my-top-vs-code-extensions-for-front-end-development-in-2024-3lg5</guid>
      <description>&lt;p&gt;As a front-end developer, having the right set of tools can greatly improve your productivity. In this article, I will share with you some essential VS Code extensions that i love and used over the years as a frontend developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Server
&lt;/h2&gt;

&lt;p&gt;Live Server is a must-have extension that allows you to launch a local development server and automatically refresh the browser whenever you make changes to your HTML, CSS, or JavaScript files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8e59rswxxlpy0bw8fvv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8e59rswxxlpy0bw8fvv.gif" alt="Live Server" width="896" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Markdown All in One
&lt;/h2&gt;

&lt;p&gt;Markdown All in One is a must-have extension for anyone who works extensively with Markdown files. This powerful tool streamlines your workflow with essential features like shortcuts, syntax highlighting, and preview functionality, making it incredibly easy to create and edit Markdown documents with ease and efficiency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftsb94jq493a7u6v8ujcb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftsb94jq493a7u6v8ujcb.gif" alt="Markdown All in One" width="1536" height="676"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  GitLens
&lt;/h2&gt;

&lt;p&gt;GitLens is a powerful extension that enhances your Git experience within VS Code. It seamlessly integrates with your Git repositories and provides valuable insights, such as blame annotations and a visual representation of code changes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0uogfcgmnezv4sl7ssw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0uogfcgmnezv4sl7ssw.png" alt="Gitlense" width="610" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CodeSnap
&lt;/h2&gt;

&lt;p&gt;CodeSnap allows you to capture and share beautiful screenshots of your code, with features including quick saving, copying to clipboard, line number display, and multiple configuration options.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzga8ybiitvnmfipshhk1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzga8ybiitvnmfipshhk1.png" alt="code snap" width="800" height="802"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Error Lens
&lt;/h2&gt;

&lt;p&gt;Error Lens helps you quickly identify and fix errors in your code. It's language diagnostic features by making diagnostics stand out more prominently, highlighting the entire line wherever a diagnostic is generated by the language and also prints the message inline.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzedpb63976e44ejwxtr1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzedpb63976e44ejwxtr1.png" alt="Error Lens" width="800" height="92"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prettier ESLint
&lt;/h2&gt;

&lt;p&gt;If you have eslint configured in your project, this extension will help you to format your JavaScript and TypeScript code using the prettier-eslint package.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqyb077fv0udvsuxvg1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqyb077fv0udvsuxvg1t.png" alt="Prettier ESLint" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Thunder Client
&lt;/h2&gt;

&lt;p&gt;Thunder Client is a versatile and lightweight REST API client extension for VS Code, allowing you to quickly test endpoints within your coding environment. No need of switching between apps or installing additional tools like Postman - with Thunder Client, you can streamline your workflow and test APIs seamlessly within VS Code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf857qwun6zpm8jog5sa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf857qwun6zpm8jog5sa.png" alt="Thunder Client" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Maximize the potential of VS Code with a vast array of extensions designed to enhance your development workflow. From boosting productivity to enhancing code quality, these tools help you work smarter, not harder. By harnessing the power of these extensions, you can simplify your development process and concentrate on what matters most, building amazing front-end product.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>webdev</category>
      <category>webdesign</category>
      <category>vscode</category>
    </item>
  </channel>
</rss>
