<?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>Forem: Martins Gouveia</title>
    <description>The latest articles on Forem by Martins Gouveia (@martygo).</description>
    <link>https://forem.com/martygo</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%2F476589%2F050c2e21-bab0-40c6-9fe1-6a6f8b04ebf5.jpeg</url>
      <title>Forem: Martins Gouveia</title>
      <link>https://forem.com/martygo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/martygo"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Mon, 26 Jan 2026 10:39:41 +0000</pubDate>
      <link>https://forem.com/martygo/-2gkb</link>
      <guid>https://forem.com/martygo/-2gkb</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/martygo" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F476589%2F050c2e21-bab0-40c6-9fe1-6a6f8b04ebf5.jpeg" alt="martygo"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/martygo/top-10-vercel-alternatives-in-2023-3mof" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;🚀 Top 10 Vercel Alternatives for 2026 🌐&lt;/h2&gt;
      &lt;h3&gt;Martins Gouveia ・ Aug 25 '23&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#cloud&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#frontend&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#nextjs&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>cloud</category>
      <category>frontend</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Game-Changing Tools Reshaping Frontend Engineering 🤩</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Fri, 03 Oct 2025 19:47:14 +0000</pubDate>
      <link>https://forem.com/martygo/game-changing-tools-reshaping-frontend-engineering-7oi</link>
      <guid>https://forem.com/martygo/game-changing-tools-reshaping-frontend-engineering-7oi</guid>
      <description>&lt;h2&gt;
  
  
  1. &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_components" rel="noopener noreferrer"&gt;Web Components&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Web Components&lt;/strong&gt; are a suite of web platform APIs that allow for the creation of reusable, encapsulated, and interoperable custom elements in web applications. These custom elements extend the functionality of standard HTML elements by enabling developers to define their own unique tags with custom behavior and styling.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;The core technologies comprising Web Components include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Custom Elements&lt;/strong&gt;: APIs that enable the definition of new HTML elements, including their lifecycle callbacks and custom methods and properties. This allows for creating new, semantic HTML tags like &lt;strong&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shadow DOM&lt;/strong&gt;: Provides a way to encapsulate a component's internal DOM structure and styling, preventing conflicts with the rest of the document's styles and scripts. This creates a "shadow tree" that is isolated from the main document.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;HTML Templates&lt;/strong&gt;: (&amp;lt;&lt;strong&gt;template&lt;/strong&gt;&amp;gt; and &amp;lt;&lt;strong&gt;slot&lt;/strong&gt;&amp;gt; elements) allow for defining reusable HTML fragments that are not rendered immediately but can be cloned and inserted into the DOM when needed, often within Custom Elements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key benefits of using Web Components:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reusability&lt;/strong&gt;: Components can be easily reused across different projects and frameworks, promoting consistency and reducing development time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Encapsulation&lt;/strong&gt;: Shadow DOM ensures that a component's internal structure and styles are isolated, preventing unintended interactions with other parts of the application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interoperability&lt;/strong&gt;: Being based on web standards, Web Components work natively in any modern browser without requiring external libraries or frameworks for their core functionality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Maintainability&lt;/strong&gt;: Updates to a component can be centralized, simplifying maintenance and reducing the risk of introducing bugs in other areas of the application.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While Web Components provide a low-level, browser-native way to build components, they can also be integrated with popular JavaScript frameworks like &lt;strong&gt;React&lt;/strong&gt; or &lt;strong&gt;Vue&lt;/strong&gt; to leverage their respective component models and development ecosystems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discuss &amp;amp; share web componentss&lt;/strong&gt;: (&lt;a href="https://www.webcomponents.org/" rel="noopener noreferrer"&gt;https://www.webcomponents.org/&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://developer.mozilla.org/en-US/docs/WebAssembly" rel="noopener noreferrer"&gt;WebAssembly&lt;/a&gt;
&lt;/h2&gt;

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

&lt;p&gt;WebAssembly (Wasm) is a portable binary-code format designed for executable programs, serving as a compilation target for high-level languages like C, C++, Rust, and Go. It aims to enable high-performance applications on the web and in other environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key characteristics of WebAssembly:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Binary Format&lt;/strong&gt;: Wasm modules are distributed in a compact binary format, allowing for efficient transmission and parsing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Near-Native Performance&lt;/strong&gt;: It runs within a stack-based virtual machine, providing execution speeds close to native code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Language Agnostic&lt;/strong&gt;: Wasm is a compilation target, meaning code written in various languages can be compiled into Wasm and run in compatible environments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sandboxed Execution&lt;/strong&gt;: Wasm operates within a secure, sandboxed environment, preventing direct access to the host system and enhancing security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interoperability with JavaScript&lt;/strong&gt;: Wasm modules can be loaded and interacted with using JavaScript APIs, allowing developers to leverage the strengths of both technologies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Beyond the Browser&lt;/strong&gt;: While initially designed for the web, Wasm's portability and security features make it suitable for use in server-side applications, blockchain, and other environments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open Standard&lt;/strong&gt;: Wasm is being developed as an open web standard by the W3C WebAssembly Working Group and Community Group, with support from major browser vendors.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Benefits of WebAssembly:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;: Enables demanding applications like games, image/video editing, and scientific simulations to run efficiently in web browsers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Reusability&lt;/strong&gt;: Allows existing codebases written in languages like C++ or Rust to be brought to the web.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;New Capabilities&lt;/strong&gt;: Facilitates the development of client-side applications that were previously not feasible in the browser due to performance limitations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Portability&lt;/strong&gt;: Wasm modules can run in various environments, including web browsers, serverless functions, and desktop applications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://aws.amazon.com/pt/what-is/headless-cms/" rel="noopener noreferrer"&gt;Headless CMS&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A headless CMS separates content management (the "body") from content delivery (the "head"), providing a backend-only system that stores content and delivers it via APIs to various front-end platforms like websites, mobile apps, and smart devices. This architectural choice allows developers to use any preferred technology to build the user-facing "head" and enables content to be published and reused across multiple channels, offering greater flexibility and scalability than traditional CMS platforms.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Content Hub (Backend)&lt;/strong&gt;: A headless CMS acts as a content repository, where content is created, managed, and stored in a raw, structured format.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;API Delivery&lt;/strong&gt;: Content is then exposed through APIs (like REST or GraphQL) to any desired channel or device.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Decoupled Frontends&lt;/strong&gt;: Developers can build any number of front-end "heads" or presentation layers using different technologies (such as web frameworks, mobile apps, or smart devices) to consume and display the content from the API.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Omnichannel Content Delivery&lt;/strong&gt;: Deliver the same content to diverse platforms, from websites to wearables, smart devices, and even AI assistants.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Developer Flexibility&lt;/strong&gt;: Developers are free to choose their preferred frameworks and technologies for building the front-end, without being tied to the CMS's built-in templating system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Future-Proofing&lt;/strong&gt;: The content is kept separate from its presentation, making it easier to adapt to new devices and technologies as they emerge.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Performance&lt;/strong&gt;: By decoupling the frontend, developers can optimize each part of the system for speed and efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Content Reusability&lt;/strong&gt;: Create content once and reuse it across multiple digital touchpoints, reducing duplication and streamlining workflows.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How it differs from a Traditional CMS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A traditional CMS tightly couples the content and its presentation. Content is often tied to specific website pages and templates, making it difficult to repurpose content for other channels. A headless CMS breaks this connection, focusing solely on providing content through APIs to be displayed wherever needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://wasmbyexample.dev/home.en-us.html" rel="noopener noreferrer"&gt;Wasm By Example&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.sanity.io/headless-cms" rel="noopener noreferrer"&gt;Headless CMS Explained&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>web3</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Context: The Magic Portal for Your App's Data ⛩️✨</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Thu, 02 Oct 2025 21:35:00 +0000</pubDate>
      <link>https://forem.com/martygo/react-context-the-magic-portal-for-your-apps-data-3pch</link>
      <guid>https://forem.com/martygo/react-context-the-magic-portal-for-your-apps-data-3pch</guid>
      <description>&lt;p&gt;React Context is a feature that &lt;em&gt;allows you to share data across your component tree without having to manually pass props down through every level&lt;/em&gt;. This helps solve a problem known as "prop &lt;strong&gt;drilling&lt;/strong&gt;", where a parent component passes data through many intermediate components that don't need it, just so a deeply nested child can receive it.&lt;/p&gt;

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

&lt;p&gt;This is particularly useful for "global" data, such as themes, authenticated user information, or preferred language, which might be needed by many components at different nesting levels.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Context works
&lt;/h2&gt;

&lt;p&gt;Using React Context involves three main steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create the context&lt;/strong&gt;: You create a context object using createContext() from React.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provide the context&lt;/strong&gt;: You use the Context.Provider component to wrap the section of your component tree where you want the data to be available. The provider accepts a value prop, which contains the data to be shared.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consume the context&lt;/strong&gt;: Any component nested within the provider can access the shared data. In modern React, this is done using the useContext hook&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Common use cases
&lt;/h2&gt;

&lt;p&gt;Context is ideal for data that is considered "global" to a component tree, such as: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Theming&lt;/strong&gt;: Storing the current theme (e.g., light or dark mode) and making it available to all components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User authentication&lt;/strong&gt;: Holding the current user's login status and information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Localization&lt;/strong&gt;: Providing the active language for the application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global state&lt;/strong&gt;: For managing a state that affects many different parts of the application, often combined with the useReducer hook.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example of React Context
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Create the context&lt;/strong&gt;&lt;br&gt;
Create a file, ThemeContext.js, to define the context.&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="c1"&gt;// src/contexts/ThemeContext.js&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;createContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useContext&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;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Create a new Context with a default value&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ThemeContext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createContext&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Create a Provider component that will manage the state&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;ThemeProvider&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="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setTheme&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;light&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;toggleTheme&lt;/span&gt; &lt;span class="o"&gt;=&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="nf"&gt;setTheme&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prevTheme&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;prevTheme&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;light&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="s1"&gt;dark&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="s1"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="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;ThemeContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Provider&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;toggleTheme&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="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;/ThemeContext.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;span class="c1"&gt;// Create a custom hook for easier access to the context&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;useTheme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;useContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ThemeContext&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="s2"&gt;`
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Provide the context&lt;/strong&gt;&lt;br&gt;
Wrap your application's components with the  in your main App.js file.&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="c1"&gt;// src/App.js&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&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;react&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;ThemeProvider&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;./contexts/ThemeContext&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="nx"&gt;Header&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;./components/Header&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="nx"&gt;Content&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;./components/Content&lt;/span&gt;&lt;span class="dl"&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;App&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;ThemeProvider&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;div&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;Header&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;Content&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;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ThemeProvider&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;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&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;3. Consume the context&lt;/strong&gt;&lt;br&gt;
Now, any component nested inside  can use the useTheme hook to access the current theme and toggle it.&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="c1"&gt;// src/components/Header.js&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&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;react&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;useTheme&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;../contexts/ThemeContext&lt;/span&gt;&lt;span class="dl"&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;Header&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="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;toggleTheme&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useTheme&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;header&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dark&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="s1"&gt;#333&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="s1"&gt;#eee&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;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;My&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;toggleTheme&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;Toggle&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dark&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="s1"&gt;Light&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="s1"&gt;Dark&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;Mode&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/header&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;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// src/components/Content.js&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&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;react&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;useTheme&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;../contexts/ThemeContext&lt;/span&gt;&lt;span class="dl"&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;Content&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="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useTheme&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;main&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dark&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="s1"&gt;white&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="s1"&gt;black&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;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;The&lt;/span&gt; &lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;theme&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;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/main&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;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  When to Use React Context:
&lt;/h2&gt;

&lt;p&gt;Context is suitable for data that is considered "global" or needed by many components at various depths in the component tree. For localized state or prop passing between directly related components, traditional prop passing is often a more straightforward and explicit solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Context vs. state management libraries
&lt;/h2&gt;

&lt;p&gt;Context is an effective solution for simple global state and avoiding prop drilling. However, for complex state management, larger applications, or if you need features like advanced debugging, performance-critical updates, or middleware, a dedicated state management library like Redux, Zustand, or MobX may be a better choice. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🔥Top 5 React Vibe Coding Tools</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Sat, 09 Aug 2025 16:26:35 +0000</pubDate>
      <link>https://forem.com/martygo/react-vibe-coding-tools-143g</link>
      <guid>https://forem.com/martygo/react-vibe-coding-tools-143g</guid>
      <description>&lt;p&gt;&lt;em&gt;This tutorial provides you with valuable information on a set of tools to use for vibe coding in React.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vibe coding&lt;/strong&gt; is a term coined by Andrej Karpathy in February 2025. He said, “Where you fully give in to the vibes, embrace exponentials, and forget that the code even exists … I just see stuff, say stuff, run stuff, and copy/paste stuff, and it mostly works.”&lt;/p&gt;

&lt;p&gt;AI tools are everywhere, and it seems like five new ones pop up every day. Let’s take a look at some of the more helpful tools to help you vibe code in React.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot is an AI assistant that lives inside your code editor. It reads your comments or code and suggests complete functions, snippets or tests. GitHub Copilot is especially useful when it comes to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing repetitive or boilerplate code.&lt;/li&gt;
&lt;li&gt;Getting suggestions for functions or snippets based on simple descriptions.&lt;/li&gt;
&lt;li&gt;Learning how to use new libraries or APIs.&lt;/li&gt;
&lt;li&gt;Prototyping ideas without starting from scratch.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://v0.dev/" rel="noopener noreferrer"&gt;v0.dev&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;v0 is a pair programmer that lets you describe your ideas in natural language and generates both the code and UI for your project. Anything you create with v0 can be deployed to Vercel.&lt;/p&gt;

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

&lt;p&gt;You can use v0 to build anything from a basic landing page to a full-stack app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Landing pages&lt;/li&gt;
&lt;li&gt;Full-stack apps&lt;/li&gt;
&lt;li&gt;Blogs&lt;/li&gt;
&lt;li&gt;Chatbots&lt;/li&gt;
&lt;li&gt;Data analysis&lt;/li&gt;
&lt;li&gt;Customer support&lt;/li&gt;
&lt;li&gt;Solve problems&lt;/li&gt;
&lt;li&gt;Generate ideas&lt;/li&gt;
&lt;li&gt;Research keywords&lt;/li&gt;
&lt;li&gt;Draft email campaigns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;v0 is free to use and you can get started with it by creating an account on v0.dev. v0 offers additional Premium and Ultra plans.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://bolt.new/" rel="noopener noreferrer"&gt;Bolt&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Bolt is an AI-powered builder for websites, web apps, and mobile apps.&lt;/p&gt;

&lt;p&gt;Simply type your idea into the chat, click the arrow icon, and Bolt will transform your idea into a working product in minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With a single prompt, you can build:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stunning websites like landing pages, personal and corporate websites, e-commerce shops, and more&lt;/li&gt;
&lt;li&gt;Powerful web apps such as project management tools, job boards, CRMs, SaaS platforms, booking platforms, and beyond&lt;/li&gt;
&lt;li&gt;Versatile mobile apps including games, productivity tools, social apps, workout planners, and whatever you imagine next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What can you build?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can use a wide range of JavaScript-based web frameworks and integrations with other tools to build your app. Bolt integrates with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Figma for design.&lt;/li&gt;
&lt;li&gt;Netlify for publishing and hosting.&lt;/li&gt;
&lt;li&gt;Supabase for databases, authentication, and file storage.&lt;/li&gt;
&lt;li&gt;GitHub for version control, backups, and collaboration.&lt;/li&gt;
&lt;li&gt;Expo for mobile application development.&lt;/li&gt;
&lt;li&gt;Stripe for payment handling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. &lt;a href="https://cursor.com/" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Cursor is a version of VS Code that comes with a built-in AI assistant. It can edit, refactor or explain your code whenever you ask. Since Cursor is a code editor, you can install it directly on your machine. Cursor is especially helpful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improving and cleaning up existing code.&lt;/li&gt;
&lt;li&gt;Adding features like async functions or error handling.&lt;/li&gt;
&lt;li&gt;Debugging tricky parts of larger projects.&lt;/li&gt;
&lt;li&gt;Keeping your code organized and easy to maintain.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. &lt;a href="https://marketplace.visualstudio.com/items?itemName=chrisdias.promptboost" rel="noopener noreferrer"&gt;Prompt Boost&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Transform simple prompts into powerful, context-rich instructions that help GitHub Copilot understand exactly what you need. This extension enhances your prompts by adding relevant technical context, best practices, and specific requirements that lead to better, more accurate responses.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Why Prompt Boost?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚀 Turn basic prompts into comprehensive instructions&lt;/li&gt;
&lt;li&gt;💡 Get more accurate and relevant responses from GitHub Copilot&lt;/li&gt;
&lt;li&gt;⏱️ Save time by automating prompt enhancement&lt;/li&gt;
&lt;li&gt;🎯 Improve consistency in AI-generated code&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Vibe coding helps you quickly turn ideas into working code without getting lost in syntax or boilerplate. It’s about collaborating with AI to speed up development and keep your focus on what matters most: building cool stuff.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>vibecoding</category>
      <category>javascript</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Wed, 12 Mar 2025 21:22:11 +0000</pubDate>
      <link>https://forem.com/martygo/-3hpn</link>
      <guid>https://forem.com/martygo/-3hpn</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/martygo" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F476589%2F050c2e21-bab0-40c6-9fe1-6a6f8b04ebf5.jpeg" alt="martygo"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/martygo/top-10-vercel-alternatives-in-2023-3mof" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;🚀 Top 10 Vercel Alternatives for 2025 🌐&lt;/h2&gt;
      &lt;h3&gt;Martins Gouveia ・ Aug 25 '23&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>😎 Top React Native ESSENTIALS Tech Stack for 2026 🫵⛳️</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Thu, 06 Mar 2025 07:13:57 +0000</pubDate>
      <link>https://forem.com/martygo/react-native-kit-updates-topics-you-must-know-57bi</link>
      <guid>https://forem.com/martygo/react-native-kit-updates-topics-you-must-know-57bi</guid>
      <description>&lt;h2&gt;
  
  
  Core
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://docs.expo.dev/" rel="noopener noreferrer"&gt;Expo&lt;/a&gt;: Create amazing apps that run everywhere
&lt;/h3&gt;

&lt;p&gt;Expo is an open-source platform for making universal native apps for Android, iOS, and the web with JavaScript and React.&lt;/p&gt;

&lt;p&gt;🚀 Quick Start:&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="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;expo&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;latest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://www.typescriptlang.org/" rel="noopener noreferrer"&gt;Typescript&lt;/a&gt;: JavaScript with syntax for types
&lt;/h3&gt;

&lt;p&gt;TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.&lt;/p&gt;

&lt;p&gt;Training in playground &lt;a href="https://www.typescriptlang.org/play" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Style
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://reactnativepaper.com/" rel="noopener noreferrer"&gt;Paper&lt;/a&gt;: Making your React Native apps look and feel native
&lt;/h3&gt;

&lt;p&gt;React Native Paper is a high-quality, standard-compliant Material Design library that has you covered in all major use-cases.&lt;/p&gt;

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

&lt;p&gt;Interactions, animations and accessibility.&lt;br&gt;
React-native-paper takes care of the details and your UI logic, so you can focus on your users.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;a href="https://www.nativewind.dev/" rel="noopener noreferrer"&gt;NativeWind&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;NativeWind allows you to use Tailwind CSS to style your components in React Native.&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;Text&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="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;MyText&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;italic&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;lineThrough&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;props&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;classNames&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;classNames&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;font-bold&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;italic&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;classNames&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;italic&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lineThrough&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;classNames&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;line-through&lt;/span&gt;&lt;span class="dl"&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;Text&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;classNames&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt; &lt;span class="p"&gt;{...&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&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;Simple setup with plugins for improved intellisense support and automatic TypeScript configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://rnr-docs.vercel.app/getting-started/introduction/" rel="noopener noreferrer"&gt;Shadcn&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Universal shadcn/ui for React Native featuring a focused collection of components - Crafted with NativeWind v4 and accessibility in mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Animation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://docs.swmansion.com/react-native-reanimated/" rel="noopener noreferrer"&gt;Reanimated&lt;/a&gt;: Create smooth animations with an excellent developer experience
&lt;/h3&gt;

&lt;p&gt;React Native Reanimated is a powerful animation library built by Software Mansion.&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;function&lt;/span&gt; &lt;span class="nf"&gt;App&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;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useSharedValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&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;handlePress&lt;/span&gt; &lt;span class="o"&gt;=&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="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;withSpring&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;50&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Animated&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;View&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Animate every React Native prop on iOS, Android and the Web up to 120 fps.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://moti.fyi/" rel="noopener noreferrer"&gt;Moti&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Moti is the universal animation package for React Native, made by Fernando Rojo.&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;MotiView&lt;/span&gt;
  &lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;
  &lt;span class="nx"&gt;animate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;opacity&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="nx"&gt;exit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;
&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Moti uses Reanimated 3 under the hood to drive high-performance animations on iOS, Android and Web.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="nx"&gt;moti&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;legacy&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;peer&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;deps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  State Managment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://zustand.docs.pmnd.rs/getting-started/introduction" rel="noopener noreferrer"&gt;Zustand&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;A small, fast, and scalable bearbones state management solution. Zustand has a comfy API based on hooks. It isn't boilerplatey or opinionated, but has enough convention to be explicit and flux-like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;zustand&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Or&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt; &lt;span class="kr"&gt;package&lt;/span&gt; &lt;span class="nx"&gt;manager&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;your&lt;/span&gt; &lt;span class="nx"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://tanstack.com/query" rel="noopener noreferrer"&gt;TanstackQuery&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;🤖 Powerful asynchronous state management, server-state utilities and data fetching for the web. TS/JS, React Query, Solid Query, Svelte Query and Vue Query.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;tanstack&lt;/span&gt;&lt;span class="sr"&gt;/react-quer&lt;/span&gt;&lt;span class="err"&gt;y
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Testing
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://callstack.github.io/react-native-testing-library/" rel="noopener noreferrer"&gt;RN Testing&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Installation&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;D&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;testing&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;library&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;react&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;native&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;The React Native Testing Library (RNTL) is a comprehensive solution for testing React Native components. It provides React Native runtime simulation on top of react-test-renderer, in a way that encourages better testing practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Must-have packages
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/mrousavy/react-native-mmkv" rel="noopener noreferrer"&gt;RN MMkv&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;⚡️ The fastest key/value storage for React Native. ~30x faster than AsyncStorage!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://react-hook-form.com/get-started" rel="noopener noreferrer"&gt;React Hook Form&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Installing React Hook Form only takes a single command and you're ready to roll.&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;react&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;hook&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://shopify.github.io/flash-list/" rel="noopener noreferrer"&gt;FlashList&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;FlashList is a React Native component that allow you to render large lists of data efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&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="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;expo&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;shopify&lt;/span&gt;&lt;span class="sr"&gt;/flash-list expo-dev-clien&lt;/span&gt;&lt;span class="err"&gt;t
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://zeego.dev/" rel="noopener noreferrer"&gt;Zeego&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Beautiful, native menus for React Native + Web, inspired by Radix UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://clerk.com/" rel="noopener noreferrer"&gt;Clerk&lt;/a&gt;: The most comprehensive User Management Platform
&lt;/h3&gt;

&lt;p&gt;Clerk is a complete suite of embeddable UIs, flexible APIs, and admin dashboards to authenticate and manage your users.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  &lt;a href="https://www.revenuecat.com/docs/" rel="noopener noreferrer"&gt;RevenueCat&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The world's best apps use RevenueCat to power in-app purchases, manage customer data, and grow revenue across iOS, Android, and the web.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://docs.swmansion.com/react-native-gesture-handler/docs/#installation" rel="noopener noreferrer"&gt;React Native Gesture Handler&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;React Native Gesture Handler provides native-driven gesture management APIs for building best possible touch-based experiences in React Native.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Mastering Web APIs: Device Memory API 💿</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Wed, 05 Feb 2025 18:05:31 +0000</pubDate>
      <link>https://forem.com/martygo/mastering-web-apis-device-memory-api-25ji</link>
      <guid>https://forem.com/martygo/mastering-web-apis-device-memory-api-25ji</guid>
      <description>&lt;p&gt;In the ever-evolving world of web development, optimizing user experience has become a critical priority. The Device Memory API is a powerful tool in the arsenal of web developers, enabling more efficient and targeted performance optimizations. But what exactly is the Device Memory API, and how can it be leveraged to create better web applications?&lt;/p&gt;

&lt;h4&gt;
  
  
  What is the Device Memory API?
&lt;/h4&gt;

&lt;p&gt;The Device Memory API provides an estimate of the amount of RAM available on a user's device. This information is invaluable for developers seeking to tailor their web applications to perform optimally on a wide range of devices, from high-end desktops to budget smartphones.&lt;/p&gt;

&lt;p&gt;Traditionally, developers had to rely on heuristics or user agent strings to infer device capabilities, which often resulted in less accurate estimations. The Device Memory API, however, offers a more direct approach by allowing developers to access the &lt;code&gt;Navigator.deviceMemory&lt;/code&gt; or &lt;code&gt;WorkerNavigator.deviceMemory&lt;/code&gt; properties. These properties return the approximate amount of device memory in gigabytes, providing a clearer picture of the device's capabilities.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to Use the Device Memory API
&lt;/h4&gt;

&lt;p&gt;Implementing the Device Memory API in your web application is straightforward. Here's a simple example in JavaScript:&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;deviceMemory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;deviceMemory&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="s2"&gt;`This device has approximately &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;deviceMemory&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; GB of RAM.`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;This snippet retrieves the approximate RAM capacity and logs it to the console. Armed with this information, developers can make informed decisions about resource allocation and performance optimization.&lt;/p&gt;

&lt;h4&gt;
  
  
  Client Hints for Device Memory
&lt;/h4&gt;

&lt;p&gt;Another approach to accessing device memory information is through Client Hints. By using the &lt;code&gt;Device-Memory&lt;/code&gt; HTTP header, developers can retrieve the same approximate RAM capacity. This method allows for more seamless integration with existing server-side logic.&lt;/p&gt;

&lt;p&gt;Here's an example of how to use the &lt;code&gt;Device-Memory&lt;/code&gt; directive in an HTTP request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET / HTTP/1.1
Host: example.com
Device-Memory: 8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Why It Matters
&lt;/h4&gt;

&lt;p&gt;Understanding the amount of RAM available on a user's device enables developers to create more responsive and efficient applications. For instance, on devices with limited memory, developers can reduce the number of concurrent processes or lower the resolution of images to prevent performance degradation. Conversely, on high-end devices, developers can offer richer, more resource-intensive experiences.&lt;/p&gt;

&lt;h4&gt;
  
  
  Browser Compatibility
&lt;/h4&gt;

&lt;p&gt;The Device Memory API is supported by most modern browsers, including Chrome, Edge, and Opera. However, it is important to note that not all browsers and devices may support this API, so developers should implement fallback strategies to ensure a consistent user experience.&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;The Device Memory API is a significant advancement in web development, offering a more accurate and efficient way to gauge device capabilities. By leveraging this API, developers can enhance the performance and user experience of their web applications, ensuring they run smoothly on a wide range of devices. As web technologies continue to evolve, tools like the Device Memory API will play an increasingly important role in creating high-performance, adaptive web applications.&lt;/p&gt;

&lt;p&gt;Explore more in the documentation: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Device_Memory_API" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/API/Device_Memory_API&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>🔥Top 3 Amazing Next.js Alternatives To Try 🫨</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Sat, 01 Feb 2025 13:00:02 +0000</pubDate>
      <link>https://forem.com/martygo/top-3-amazing-nextjs-alternatives-to-try-3l50</link>
      <guid>https://forem.com/martygo/top-3-amazing-nextjs-alternatives-to-try-3l50</guid>
      <description>&lt;p&gt;I recently had the idea of ​​creating my portfolio to serve as an online resume. And I had the idea of ​​using a different framework, simply to get out of my comfort zone. I use Next.js and React a lot both at work and on freelance projects. It would be faster to create my portfolio using React or Next.js, but as it's a personal project and I won't have anyone to hold me to deadlines, I decide to choose a different framework, for that, I decide to look for frameworks similar to Next.js as an alternative, and this one post is the result of my little research. I had a little taste of each one and at the end I will tell you which one I will use to build my repository.&lt;/p&gt;

&lt;p&gt;Choosing the right framework can make or break your project. Next.js has emerged as a popular choice for many developers, but it's not always the perfect fit for every scenario. This article dives into the world of Next.js alternatives, helping you navigate the options and find the best solution for your specific needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Next.js?
&lt;/h2&gt;

&lt;p&gt;Next.js is a powerful React framework that's taken the web development world by storm. Created by &lt;strong&gt;Vercel&lt;/strong&gt;, it's designed to make building fast, SEO-friendly web applications a breeze. But what exactly makes Next.js stand out?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;At its core, Next.js extends React's capabilities by offering server-side rendering (SSR), static site generation (SSG), and automatic code splitting out of the box. These features address common pain points in React development, such as SEO challenges and initial load times.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://astro.build/" rel="noopener noreferrer"&gt;&lt;strong&gt;1. Astro&lt;/strong&gt;&lt;/a&gt;: The web framework for content-driven websites
&lt;/h1&gt;

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

&lt;p&gt;Astro is a modern static site builder that allows you to use your favorite JavaScript framework (or vanilla JavaScript) to build faster websites with less client-side JavaScript. It's designed to deliver lightning-fast performance by default.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-Framework Support&lt;/strong&gt;: Astro allows the use of React, Vue, Svelte, or other frameworks — or mix and match them in the same project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Static Site Generation (SSG)&lt;/strong&gt;: Generates static HTML at build time for excellent performance and SEO. SSG in Astro allows for efficient caching and distribution of content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Markdown Support&lt;/strong&gt;: Built-in support for Markdown content, making it great for blogs and documentation sites. Astro's Markdown support includes syntax highlighting and the ability to integrate with various Markdown plugins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;File-based Routing&lt;/strong&gt;: Similar to Next.js and SvelteKit, Astro uses a file-based routing system. his system simplifies navigation setup, making it easier to manage and organize routes without complex configurations.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal for&lt;/strong&gt;: Content-focused websites that prioritize performance and minimal JavaScript, especially when working with multiple frameworks.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://remix.run/" rel="noopener noreferrer"&gt;&lt;strong&gt;2. Remix&lt;/strong&gt;&lt;/a&gt;: Focused on web standards and modern web app UX.
&lt;/h1&gt;

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

&lt;p&gt;Remix is a full-stack web framework that lets you focus on the user interface and work back through web fundamentals to deliver a fast, slick, and resilient user experience. Built by the creators of React Router, Remix is designed to leverage web standards and modern browser features.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nested Routing&lt;/strong&gt;: Leverages a powerful nested routing system, allowing for more intuitive and efficient code organization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Server-Side Rendering (SSR)&lt;/strong&gt;: Provides out-of-the-box SSR for improved performance and SEO. This ensures that pages are pre-rendered on the server, leading to faster initial loads and better search engine indexing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Loading&lt;/strong&gt;: Offers a unique approach to data loading, tying it directly to routes for efficient and predictable data fetching.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Error Handling&lt;/strong&gt;: Built-in error handling at the route level, making it easier to manage and display errors.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal for&lt;/strong&gt;: Complex web applications that require robust server-side rendering and data loading strategies.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://laravel.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;3. Laravel&lt;/strong&gt;&lt;/a&gt;: The PHP Framework for Web Artisans
&lt;/h1&gt;

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

&lt;p&gt;Laravel is a well-known open-source PHP web framework praised for its elegant syntax and developer-friendly features. It streamlines the creation of trustworthy and scalable web applications by providing various tools, libraries, and conventions. &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Routing&lt;/strong&gt;: A simple and expressive routing system. Developers can define routes for web and API endpoints, group routes, and apply middleware to routes for enhanced functionality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication and Authorization&lt;/strong&gt;: Easy to implement authentication (login, registration) and authorization (permissions, roles) with built-in features like guards, providers, and policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Localization&lt;/strong&gt;: Easy to build multilingual applications by providing tools for managing translations and language files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Templating Engine&lt;/strong&gt;: Blade templating engine is lightweight yet powerful. It allows developers to create dynamic views with features like template inheritance, sections, and components.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;After small tests with each framework on the list, the winner was Astro, as it fits best for what I want to build.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Remember, the best framework is the one that aligns with your project's needs and your team's skills. It's worth taking the time to evaluate these options carefully, considering factors like performance, scalability, learning curve, community support, and ecosystem.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🔁 Direct Call or Arrow Function? Making the Right Choice in React OnClick 👆</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Mon, 27 Jan 2025 09:22:41 +0000</pubDate>
      <link>https://forem.com/martygo/direct-call-or-arrow-function-making-the-right-choice-in-react-onclick-58k0</link>
      <guid>https://forem.com/martygo/direct-call-or-arrow-function-making-the-right-choice-in-react-onclick-58k0</guid>
      <description>&lt;p&gt;In React, handling onClick events can be done in two common ways: using a direct call or an arrow function. Understanding the differences between these approaches can help you write cleaner and more efficient code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approach 1: Direct Call
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Click&lt;/span&gt; &lt;span class="nx"&gt;Me&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Props and Con:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Execution&lt;/strong&gt;: The function is passed as a reference and is only called when the event occurs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;: More efficient as it does not create a new function on every render.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;: Ideal for simple event handlers that do not require additional arguments.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Approach 2: Arrow Function:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Click&lt;/span&gt; &lt;span class="nx"&gt;Me&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Execution&lt;/strong&gt;: Creates a new function on every render, which then calls the specified function.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;: Less efficient due to the creation of a new function each time the component re-renders.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;: Useful when you need to pass arguments to the event handler or bind the function to a specific context.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In summary, while direct calls are generally more performant, arrow functions offer flexibility in passing arguments and binding context. Choosing the right approach depends on the specific needs of your application&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why Every Developer Should Learn Vim 💻🫵</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Wed, 22 Jan 2025 15:29:10 +0000</pubDate>
      <link>https://forem.com/martygo/vim-commands-every-developer-must-know-4mm</link>
      <guid>https://forem.com/martygo/vim-commands-every-developer-must-know-4mm</guid>
      <description>&lt;p&gt;No matter if you are a sysadmin or a software developer, if you work in the Linux terminal, you would face the situation where you need to edit text files in the terminal&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Vim?
&lt;/h2&gt;

&lt;p&gt;Vim is a powerful text editor used in Unix/Linux systems, known for its efficiency and flexibility. It operates in different modes, each serving a specific purpose. Here are some essential Vim commands to help you get started:&lt;/p&gt;

&lt;h2&gt;
  
  
  Modes in Vim
&lt;/h2&gt;

&lt;p&gt;Vim has three primary modes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command Mode&lt;/strong&gt;: This is the default mode when you start Vim. You can navigate, delete, and copy text in this mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Insert Mode&lt;/strong&gt;: Used for inserting text into the file. Enter this mode by pressing i, a, I, A, o, or O.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual Mode&lt;/strong&gt;: Allows you to select text using the arrow keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Commands
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Entering Insert Mode&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;i&lt;/strong&gt;: Insert before the cursor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;a&lt;/strong&gt;: Insert after the cursor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I&lt;/strong&gt;: Insert at the beginning of the line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A&lt;/strong&gt;: Insert at the end of the line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;o&lt;/strong&gt;: Open a new line below the current line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;O&lt;/strong&gt;: Open a new line above the current line.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Navigating in Vim&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;h&lt;/strong&gt;: Move left.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;j&lt;/strong&gt;: Move down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;k&lt;/strong&gt;: Move up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;l&lt;/strong&gt;: Move right.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;gg&lt;/strong&gt;: Move to the beginning of the file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;G&lt;/strong&gt;: Move to the end of the file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;nG&lt;/strong&gt;: Move to line number n.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Editing Text&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;x&lt;/strong&gt;: Delete the character under the cursor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;X&lt;/strong&gt;: Delete the character before the cursor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dd&lt;/strong&gt;: Delete the current line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dw&lt;/strong&gt;: Delete from the cursor to the end of the word.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;d$&lt;/strong&gt;: Delete from the cursor to the end of the line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dG&lt;/strong&gt;: Delete from the cursor to the end of the file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Copying and Pasting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;yy&lt;/strong&gt;: Copy the current line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;yw&lt;/strong&gt;: Copy from the cursor to the end of the word.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;y$&lt;/strong&gt;: Copy from the cursor to the end of the line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;yG&lt;/strong&gt;: Copy from the cursor to the end of the file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;p&lt;/strong&gt;: Paste after the cursor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;P&lt;/strong&gt;: Paste before the cursor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Undo and Redo&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;u&lt;/strong&gt;: Undo the last change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ctrl + r&lt;/strong&gt;: Redo the undone change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Searching and Replacing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;/search_term&lt;/strong&gt;: Search for search_term.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;n&lt;/strong&gt;: Move to the next match.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;N&lt;/strong&gt;: Move to the previous match.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:%s/foo/bar/g&lt;/strong&gt;: Replace all occurrences of foo with bar in the entire file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:%s/foo/bar/gc&lt;/strong&gt;: Replace all occurrences with confirmation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Saving and Quitting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;:w&lt;/strong&gt;: Save the file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:wq&lt;/strong&gt;: Save and quit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:q&lt;/strong&gt;: Quit (if no changes have been made).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:q!&lt;/strong&gt;: Quit without saving changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These commands cover the basics of using Vim effectively. For more advanced usage, refer to the detailed guides and cheat sheets available online&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>vim</category>
    </item>
    <item>
      <title>Top 4 FREE 🎉 Certificates For 2025 👍</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Thu, 09 Jan 2025 11:35:26 +0000</pubDate>
      <link>https://forem.com/martygo/top-4-free-certificates-for-2025-1bb</link>
      <guid>https://forem.com/martygo/top-4-free-certificates-for-2025-1bb</guid>
      <description>&lt;h2&gt;
  
  
  1. Microsoft UX Design Professional Certificate
&lt;/h2&gt;

&lt;p&gt;Launch Your Career in UX/UI Design. Build job-ready UX design skills through hands-on projects and learn to use industry leading tools like Figma. No degree or experience required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'll learn&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Define the core principles of UX, Human-Centered Design, and design thinking frameworks, and identify UX team roles and user research methods.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adapt design ideas into interactive prototypes using wireframing, mockups, prototyping tools, and leverage design systems and style guides.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apply visual design principles and craft high-fidelity mockups that adhere to platform best practices and ensure accessibility for all.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Link for enroll&lt;/strong&gt;: &lt;a href="https://www.coursera.org/professional-certificates/ux-design" rel="noopener noreferrer"&gt;https://www.coursera.org/professional-certificates/ux-design&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. IBM Product Manager Professional Certificate
&lt;/h2&gt;

&lt;p&gt;Prepare for a career as a product manager. Gain the in-demand skills and hands-on experience to get job ready in less than 3 months. No prior experience required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'll learn&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Apply key product management skills, tools, and techniques to engage and manage key stakeholders and clients.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify product strategy development and implementation methods and best practices to ensure the right product is produced.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Develop a working knowledge of Agile and adaptive methodologies used to expedite product solutions to market.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Link for enroll&lt;/strong&gt;: &lt;a href="https://www.coursera.org/professional-certificates/ibm-product-manager" rel="noopener noreferrer"&gt;https://www.coursera.org/professional-certificates/ibm-product-manager&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Front End Development Libraries
&lt;/h2&gt;

&lt;p&gt;Now that you're familiar with HTML, CSS, and JavaScript, level up your skills by learning some of the most popular front end libraries in the industry.&lt;/p&gt;

&lt;p&gt;In the Front End Development Libraries Certification, you'll learn how to style your site quickly with Bootstrap. You'll also learn how to add logic to your CSS styles and extend them with Sass.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'll learn&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bootstrap&lt;/strong&gt;: Bootstrap is a front end framework used to design responsive web pages and applications. It takes a mobile-first approach to web development, and includes pre-built CSS styles and classes, plus some JavaScript functionality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;jQuery&lt;/strong&gt;: jQuery is one of the most widely used JavaScript libraries in the world.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;** React**: React is a popular JavaScript library for building reusable, component-driven user interfaces for web pages or applications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Link for enroll&lt;/strong&gt;: &lt;a href="https://www.freecodecamp.org/learn/front-end-development-libraries/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/learn/front-end-development-libraries/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. JavaScript Algorithms and Data Structures
&lt;/h2&gt;

&lt;p&gt;Developers use HTML and CSS to control the content and styling of a page. And they use JavaScript to make that page interactive.&lt;/p&gt;

&lt;p&gt;In this JavaScript Algorithm and Data Structures Certification, you'll learn the JavaScript fundamentals like variables, arrays, objects, loops, functions, the DOM and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'll learn&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You will learn the main Data Structures, like: Stack, LinkedList and etc...&lt;/p&gt;

&lt;p&gt;You'll also learn about Object Oriented Programming (OOP), Functional Programming, algorithmic thinking, how to work with local storage, and how to fetch data using an API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link for enroll&lt;/strong&gt;: &lt;a href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures-v8/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures-v8/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What do you plan to learn in 2025? Share our comments.
&lt;/h2&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>javascript</category>
    </item>
    <item>
      <title>✌🏽4 Graphics Libraries Tools for React Developers in 2025 💹📊</title>
      <dc:creator>Martins Gouveia</dc:creator>
      <pubDate>Sat, 28 Dec 2024 13:15:43 +0000</pubDate>
      <link>https://forem.com/martygo/4-graphics-libraries-tools-for-react-developers-in-2025-3kg7</link>
      <guid>https://forem.com/martygo/4-graphics-libraries-tools-for-react-developers-in-2025-3kg7</guid>
      <description>&lt;p&gt;Creating interactive and visually appealing charts is an essential skill for developers working on modern web applications.&lt;/p&gt;

&lt;p&gt;In this article I've compiled some of the most useful React Data Visualization and graphics libraries that you could use to speed up your development.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Chart.js
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Chart.js&lt;/strong&gt; provides a set of frequently used chart types, plugins, and customization options. In addition to a reasonable set of built-in chart types, you can use additional community-maintained chart types.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Why Chart.js?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Chart.js is highly customizable with custom plugins to create annotations, zoom, or drag-and-drop functionalities to name a few things.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chart.js is currently the most popular one according to GitHub stars (~60,000) and npm downloads (~2,400,000 weekly).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://www.chartjs.org/" rel="noopener noreferrer"&gt;https://www.chartjs.org/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;D3 (or D3.js) is a free, open-source JavaScript library for visualizing data.&lt;/p&gt;

&lt;p&gt;Its low-level approach built on web standards offers unparalleled flexibility in authoring dynamic, data-driven graphics. For more than a decade D3 has powered groundbreaking and award-winning visualizations, become a foundational building block of higher-level chart libraries, and fostered a vibrant community of data practitioners around the world.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Looking for a good D3 example?&lt;/strong&gt; : &lt;a href="https://observablehq.com/@d3/gallery?utm_source=d3js-org&amp;amp;utm_medium=hero&amp;amp;utm_campaign=try-observable" rel="noopener noreferrer"&gt;https://observablehq.com/@d3/gallery?utm_source=d3js-org&amp;amp;utm_medium=hero&amp;amp;utm_campaign=try-observable&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://d3js.org/" rel="noopener noreferrer"&gt;https://d3js.org/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Recharts
&lt;/h2&gt;

&lt;p&gt;Recharts is a composable, reliable and powerful charting library built on React components and D3 submodules. It allows you to customize your chart by tweaking component props and passing in custom components.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://recharts.org/en-US/" rel="noopener noreferrer"&gt;https://recharts.org/en-US/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Victory Charts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Victory Charts&lt;/strong&gt; are composable React components for building interactive data visualizations.&lt;/p&gt;

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

&lt;p&gt;Designed by Formidable, Victory provides an easy-to-use yet powerful interface for crafting sophisticated charts with React.&lt;/p&gt;

&lt;p&gt;Crafting Your First Victory Component&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;VictoryPie&lt;/span&gt;
  &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cats&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;35&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Dogs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Birds&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;]}&lt;/span&gt;
&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://www.npmjs.com/package/victory-chart" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/victory-chart&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
