<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: vidhya murali</title>
    <description>The latest articles on DEV Community by vidhya murali (@vidhya_murali_5aabe7784bd).</description>
    <link>https://dev.to/vidhya_murali_5aabe7784bd</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3924225%2Fe7e20af2-0747-45fc-aa5b-4858d0aacc25.png</url>
      <title>DEV Community: vidhya murali</title>
      <link>https://dev.to/vidhya_murali_5aabe7784bd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vidhya_murali_5aabe7784bd"/>
    <language>en</language>
    <item>
      <title>Props in React</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Thu, 16 Jul 2026 06:07:23 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/props-in-react-3ej7</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/props-in-react-3ej7</guid>
      <description>&lt;p&gt;&lt;strong&gt;React Props&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;props stands for properties.&lt;/li&gt;
&lt;li&gt;Props are arguments passed into React components.&lt;/li&gt;
&lt;li&gt;Props are passed to components via HTML attributes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: React Props are read-only! You will get an error if you try to change their value.&lt;/p&gt;

&lt;p&gt;To send props into a component, use the same syntax as HTML attributes:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fujg2czpoij9axw9t52lo.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fujg2czpoij9axw9t52lo.png" alt=" " width="561" height="219"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The component receives the argument as a props object:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4oi4lw5mf0ukor6zvfjq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4oi4lw5mf0ukor6zvfjq.png" alt=" " width="651" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;note : The name of the object is props, but you can call it anything you want.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a0slgidu4udisv9sk15.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a0slgidu4udisv9sk15.png" alt=" " width="545" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pass Multiple Properties&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can send as many properties as you want.&lt;/li&gt;
&lt;li&gt;Every attribute is sent to the Car component as object properties.&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm0fyxtn0l3oc8fb8tgdp.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm0fyxtn0l3oc8fb8tgdp.png" alt=" " width="523" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All properties are received in the Car component inside the props object:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgmrv84jiq60lqfnt6uku.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgmrv84jiq60lqfnt6uku.png" alt=" " width="659" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another Example;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2e5cuz6nl0y9outbsein.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2e5cuz6nl0y9outbsein.png" alt=" " width="512" height="489"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2x50p3nwqwwd34op4ow9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2x50p3nwqwwd34op4ow9.png" alt=" " width="695" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;output&lt;/strong&gt;:&lt;br&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foy000ighpjf8j0vaodwf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foy000ighpjf8j0vaodwf.png" alt=" " width="724" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Object Props&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The component treats objects like objects, and you can use the dot notation to access the properties.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ahhldz2yio4xgcfmvdt.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ahhldz2yio4xgcfmvdt.png" alt=" " width="726" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Array Props&lt;/strong&gt;&lt;br&gt;
Array props can be accessed using the indexes.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0kvqeyzlx5idwdgmxbme.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0kvqeyzlx5idwdgmxbme.png" alt=" " width="609" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pass Props from Component to Component&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Attributes are also how you pass data from one component to another, as parameters.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7bmec9d1mm3ddt6uorvc.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7bmec9d1mm3ddt6uorvc.png" alt=" " width="614" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;React Destructuring Props&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can limit the properties a component receives by using destructuring.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsr9htznhuyj4m82t8thc.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsr9htznhuyj4m82t8thc.png" alt=" " width="793" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: React uses curly brackets to destructure props: {color}.&lt;/p&gt;

&lt;p&gt;You can also destruct the properties you need inside the component.&lt;/p&gt;

&lt;p&gt;This way, the component receives all the properties, but the destructuring makes sure it only uses the ones it needs.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbcvo0ne6fxk7imwmztpa.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbcvo0ne6fxk7imwmztpa.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Destructuring ...rest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you don't know how many properties you will receive, you can use the ...rest operator.&lt;/p&gt;

&lt;p&gt;Meaning: you can specify the properties you need, and the rest will be stored in an object.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxeucf667y7jlxjmuw5ch.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxeucf667y7jlxjmuw5ch.png" alt=" " width="785" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Default Values&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With Destructuring, you can set default values for props.&lt;/p&gt;

&lt;p&gt;If a property has no value, the default value will be used.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb2bc9w96c9ys1fagq9kl.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb2bc9w96c9ys1fagq9kl.png" alt=" " width="599" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reference : &lt;a href="https://www.w3schools.com/react/react_props_destructuring.asp" rel="noopener noreferrer"&gt;https://www.w3schools.com/react/react_props_destructuring.asp&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>React Basics</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Tue, 14 Jul 2026 08:43:05 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/react-basics-3opj</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/react-basics-3opj</guid>
      <description>&lt;ol&gt;
&lt;li&gt;What is Node.js?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Node.js is a JavaScript runtime environment that allows JavaScript to run outside the browser.&lt;/p&gt;

&lt;p&gt;Before Node.js, JavaScript could only run inside browsers like Chrome or Firefox.&lt;/p&gt;

&lt;p&gt;Node.js is built on Google's V8 JavaScript Engine, the same engine used by Chrome.&lt;/p&gt;

&lt;p&gt;It allows developers to create&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend servers&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;File systems&lt;/li&gt;
&lt;li&gt;Command line tools&lt;/li&gt;
&lt;li&gt;Real-time applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;without learning another language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you type,&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      npm create vite@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Node.js executes this command.&lt;/p&gt;

&lt;p&gt;Without Node.js this command won't work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Node.js a programming language&lt;/strong&gt;?  No.&lt;/p&gt;

&lt;p&gt;Node.js is a runtime environment.&lt;/p&gt;

&lt;p&gt;JavaScript is the programming language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. What is npm?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;npm stands for &lt;strong&gt;Node Package Manager&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is the world's largest package manager.&lt;/p&gt;

&lt;p&gt;It installs libraries and dependencies.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fix6t4d4shbwn6gkibcsf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fix6t4d4shbwn6gkibcsf.png" alt=" " width="480" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why npm?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of writing everything yourself,you install ready-made libraries.&lt;/p&gt;

&lt;p&gt;Example&lt;/p&gt;

&lt;p&gt;Instead of writing an HTTP client,&lt;br&gt;
       npm install axios&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;package.json&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This file stores project information and dependencies.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx9joye8jq9g2fydckl04.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx9joye8jq9g2fydckl04.png" alt=" " width="340" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;package-lock.json&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stores exact versions ,dependency tree&lt;br&gt;
to make sure every developer installs the same versions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;node_modules&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contains all installed packages.&lt;/li&gt;
&lt;li&gt;Usually thousands of files.&lt;/li&gt;
&lt;li&gt;Never edit manually.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Difference between npm install and npm update&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;install-Installs dependencies.&lt;br&gt;
update-Updates installed packages&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What is Vite&lt;/strong&gt;?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Modern Build Tool&lt;/strong&gt;&lt;br&gt;
Vite is a modern frontend build tool used to create fast web applications with frameworks like React, Vue, and Svelte.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fast Development Server&lt;/strong&gt;&lt;br&gt;
It uses native ES Modules (ESM), so the development server starts almost instantly without bundling the entire project first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hot Module Replacement (HMR)&lt;/strong&gt;&lt;br&gt;
It updates only the changed module in the browser without refreshing the whole page, making development faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimized Production Build&lt;/strong&gt;&lt;br&gt;
Vite uses Rollup to generate optimized, smaller, and production-ready files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Easy to Use&lt;/strong&gt;&lt;br&gt;
It has a simple setup, minimal configuration, and is faster than older tools like Create React App (CRA).&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;CRA *&lt;/em&gt;- Create React App Problems&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;slow startup&lt;/li&gt;
&lt;li&gt;slow build&lt;/li&gt;
&lt;li&gt;slow refresh&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;HTML vs JSX&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTML -(HyperText Markup Language) is the standard markup language used to create and structure web pages. Browsers understand HTML directly.&lt;/p&gt;

&lt;p&gt;JSX- (JavaScript XML) is a syntax extension for JavaScript used in React. It looks like HTML but is not HTML. JSX is converted into JavaScript by Babel before the browser can understand 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3fsjcmc9tgpzzgkkbhnc.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3fsjcmc9tgpzzgkkbhnc.png" alt=" " width="765" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Babel is a JavaScript compiler (or transpiler) that converts modern JavaScript (ES6+) and JSX into JavaScript that browsers can understand.Because, Browsers do not understand JSX directly, and some older browsers do not support newer JavaScript features.&lt;/p&gt;

&lt;p&gt;In React, Babel is mainly used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Convert JSX into JavaScript.&lt;/li&gt;
&lt;li&gt;Convert modern JavaScript features into older JavaScript for better browser compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Babel is commonly called a JavaScript compiler, but more specifically, it is a transpiler because it converts one version of JavaScript into another version of JavaScript&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Setting up a React Environment</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Tue, 14 Jul 2026 08:04:43 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/setting-up-a-react-environment-9ga</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/setting-up-a-react-environment-9ga</guid>
      <description>&lt;p&gt;To use React in production, you need npm which is included with Node.js.&lt;/p&gt;

&lt;p&gt;Also, you need to set up a React Environment, and choose a build tool.&lt;/p&gt;

&lt;p&gt;First, make sure you have Node.js installed. You can check by running this in your terminal:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  node -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Install a Build Tool (Vite)&lt;br&gt;
When you have Node.js installed, you can start creating a React application by choosing a build tool.&lt;/p&gt;

&lt;p&gt;We will use the Vite build tool&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  npm install -g create-vite
  npm create vite@latest my-react-app -- --template react
  Need to install the following packages:
  create-vite@9.0.7
  Ok to proceed? (y)

  or

  npm create vite@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;A new browser window will pop up with your newly created React App! If not, open your browser and type &lt;strong&gt;localhost:5173&lt;/strong&gt; in the address bar.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzgst7nchmke8qbk8la3g.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzgst7nchmke8qbk8la3g.png" alt=" " width="713" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that your development environment is set up, let's try to modify the default app to display "Hello, World!"&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Example *&lt;/em&gt;:&lt;br&gt;
This is the default content of the App.jsx file in the src folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&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;useState&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;reactLogo&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;./assets/react.svg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;viteLogo&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;./assets/vite.svg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;heroImg&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;./assets/hero.png&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.css&lt;/span&gt;&lt;span class="dl"&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="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCount&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="mi"&gt;0&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="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"center"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"hero"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;heroImg&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"base"&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"170"&lt;/span&gt; &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"179"&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;reactLogo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"framework"&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"React logo"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viteLogo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"vite"&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Vite logo"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Get started&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            Edit &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;src/App.jsx&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; and save to test &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;HMR&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt;
          &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"counter"&lt;/span&gt;
          &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&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;setCount&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;count&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;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          Count is &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"ticks"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"next-steps"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"docs"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"icon"&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"presentation"&lt;/span&gt; &lt;span class="na"&gt;aria-hidden&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/icons.svg#documentation-icon"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Documentation&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Your questions, answered&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://vite.dev/"&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"logo"&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viteLogo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
                Explore Vite
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://react.dev/"&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"button-icon"&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;reactLogo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
                Learn more
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"social"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"icon"&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"presentation"&lt;/span&gt; &lt;span class="na"&gt;aria-hidden&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/icons.svg#social-icon"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Connect with us&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Join the Vite community&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://github.com/vitejs/vite"&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;
                  &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"button-icon"&lt;/span&gt;
                  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"presentation"&lt;/span&gt;
                  &lt;span class="na"&gt;aria-hidden&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
                &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/icons.svg#github-icon"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                GitHub
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://chat.vite.dev/"&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;
                  &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"button-icon"&lt;/span&gt;
                  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"presentation"&lt;/span&gt;
                  &lt;span class="na"&gt;aria-hidden&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
                &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/icons.svg#discord-icon"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                Discord
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://x.com/vite_js"&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;
                  &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"button-icon"&lt;/span&gt;
                  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"presentation"&lt;/span&gt;
                  &lt;span class="na"&gt;aria-hidden&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
                &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/icons.svg#x-icon"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                X.com
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://bsky.app/profile/vite.dev"&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;
                  &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"button-icon"&lt;/span&gt;
                  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"presentation"&lt;/span&gt;
                  &lt;span class="na"&gt;aria-hidden&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
                &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/icons.svg#bluesky-icon"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;use&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                Bluesky
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"ticks"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"spacer"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Replace all the content of the App.jsx file with the code below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&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="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"App"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello World!&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&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;Notice that the changes are visible immediately after you save the file, you do not have to reload the browser!&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc9yb2nhy0bo0xxh8njew.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc9yb2nhy0bo0xxh8njew.png" alt=" " width="774" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>React - Components</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Mon, 13 Jul 2026 19:16:03 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/react-components-c17</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/react-components-c17</guid>
      <description>&lt;p&gt;React is a JavaScript library for rendering user interfaces (UI). UI is built from small units like buttons, text, and images. React lets you combine them into reusable, nestable components. From web sites to phone apps, everything on the screen can be broken down into components. In this chapter, you’ll learn to create, customize, and conditionally display React components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your first component&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;React applications are built from isolated pieces of UI called components. A React component is a JavaScript function that you can sprinkle with markup. Components can be as small as a button, or as large as an entire page. Here is a Gallery component rendering three Profile 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkq5a47jgptbzyd8ldsyo.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkq5a47jgptbzyd8ldsyo.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Components are one of the core concepts of React. They are the foundation upon which you build user interfaces (UI), which makes them the perfect place to start your React journey!&lt;/p&gt;

&lt;p&gt;Components: UI building blocks&lt;/p&gt;

&lt;p&gt;On the Web, HTML lets us create rich structured documents with its built-in set of tags like&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; and&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
&lt;span class="nt"&gt;&amp;lt;article&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;My First Component&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ol&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Components: UI Building Blocks&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Defining a Component&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Using a Component&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ol&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This markup represents this article&lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, its heading &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, and an (abbreviated) table of contents as an ordered list &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;. Markup like this, combined with CSS for style, and JavaScript for interactivity, lies behind every sidebar, avatar, modal, dropdown—every piece of UI you see on the Web.&lt;/p&gt;

&lt;p&gt;React lets you combine your markup, CSS, and JavaScript into custom “components”, reusable UI elements for your app. The table of contents code you saw above could be turned into a &lt;code&gt;&amp;lt;TableOfContents /&amp;gt;&lt;/code&gt;component you could render on every page. Under the hood, it still uses the same HTML tags like &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;Just like with HTML tags, you can compose, order and nest components to design whole pages. For example, the documentation page you’re reading is made out of React components:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;PageLayout&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;NavigationHeader&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;SearchBar&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Link&lt;/span&gt; &lt;span class="na"&gt;to=&lt;/span&gt;&lt;span class="s"&gt;"/docs"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Docs&lt;span class="nt"&gt;&amp;lt;/Link&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/NavigationHeader&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;Sidebar&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;PageContent&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;TableOfContents&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;DocumentationText&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/PageContent&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/PageLayout&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As your project grows, you will notice that many of your designs can be composed by reusing components you already wrote, speeding up your development&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Defining a component&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Traditionally when creating web pages, web developers marked up their content and then added interaction by sprinkling on some JavaScript. This worked great when interaction was a nice-to-have on the web. Now it is expected for many sites and all apps. React puts interactivity first while still using the same technology: a React component is a JavaScript function that you can sprinkle with markup. Here’s what that looks like (you can edit the example below):&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqzho6qra70m0fvemj1pr.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqzho6qra70m0fvemj1pr.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 1: Export the component &lt;/p&gt;

&lt;p&gt;The export default prefix is a standard JavaScript syntax (not specific to React). It lets you mark the main function in a file so that you can later import it from other files. (More on importing in Importing and Exporting Components!)&lt;/p&gt;

&lt;p&gt;Step 2: Define the function &lt;/p&gt;

&lt;p&gt;With function Profile() { } you define a JavaScript function with the name Profile.&lt;/p&gt;

&lt;p&gt;Step 3: Add markup &lt;/p&gt;

&lt;p&gt;The component returns an &lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt; tag with src and alt attributes. &lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt; is written like HTML, but it is actually JavaScript under the hood! This syntax is called JSX, and it lets you embed markup inside JavaScript.&lt;/p&gt;

&lt;p&gt;Return statements can be written all on one line, as in this component:&lt;/p&gt;

&lt;p&gt;Using a component &lt;/p&gt;

&lt;p&gt;Now that you’ve defined your Profile component, you can nest it inside other components. For example, you can export a Gallery component that uses multiple Profile components:&lt;/p&gt;

&lt;p&gt;Reference : &lt;a href="https://react.dev/learn/your-first-component" rel="noopener noreferrer"&gt;https://react.dev/learn/your-first-component&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What I Learned at the Code on JVM Meetup: Engineering Concepts Beyond Java</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Mon, 13 Jul 2026 10:53:27 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/what-i-learned-at-the-code-on-jvm-meetup-engineering-concepts-beyond-java-3bpa</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/what-i-learned-at-the-code-on-jvm-meetup-engineering-concepts-beyond-java-3bpa</guid>
      <description>&lt;p&gt;Last Saturday (11-07-2026)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; I attended the &lt;strong&gt;Code on JVM Meetup&lt;/strong&gt;, and it was a great learning experience. Although I primarily work on frontend development and am currently exploring Java Full Stack, this meetup gave me a broader perspective on how large-scale systems are designed and how modern applications handle performance, scalability, and massive amounts of data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are some of my key takeaways from the event.&lt;/p&gt;

&lt;h2&gt;
  
  
  Session 1: Engineering Building Blocks
&lt;/h2&gt;

&lt;p&gt;The first session wasn't just about Java—it focused on the engineering concepts that power real-world applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Structures &amp;amp; Problem Solving
&lt;/h3&gt;

&lt;p&gt;The speaker emphasized the importance of strengthening Data Structures and Algorithms (DSA).&lt;/p&gt;

&lt;p&gt;Some recommended platforms for practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LeetCode&lt;/li&gt;
&lt;li&gt;HackerRank&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They also suggested exploring &lt;strong&gt;Abstract Syntax Trees (ASTs)&lt;/strong&gt; to understand how programming languages parse and analyze code.&lt;/p&gt;

&lt;p&gt;Another important concept discussed was &lt;strong&gt;Big O Notation&lt;/strong&gt;, which helps measure the time and space complexity of algorithms.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bloom Filter
&lt;/h2&gt;

&lt;p&gt;One concept that caught my attention was the &lt;strong&gt;Bloom Filter&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A Bloom Filter is a space-efficient probabilistic data structure used to quickly check whether an element may exist in a dataset.&lt;/p&gt;

&lt;p&gt;It is commonly used in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apache Cassandra&lt;/li&gt;
&lt;li&gt;Google Chrome&lt;/li&gt;
&lt;li&gt;Feed readers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I learned that Bloom Filters are designed to save memory while providing very fast lookups, although they may occasionally produce false positives.&lt;/p&gt;




&lt;h2&gt;
  
  
  HNSW Graph &amp;amp; RAG
&lt;/h2&gt;

&lt;p&gt;Another interesting topic was the &lt;strong&gt;HNSW (Hierarchical Navigable Small World) Graph&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is widely used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vector databases&lt;/li&gt;
&lt;li&gt;AI Search&lt;/li&gt;
&lt;li&gt;Recommendation systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The speaker also clarified something I hadn't thought about before:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;RAG (Retrieval-Augmented Generation) is not an AI model itself—it is an algorithmic approach that retrieves relevant information before an AI generates a response.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was an important distinction for me.&lt;/p&gt;




&lt;h2&gt;
  
  
  Skip List
&lt;/h2&gt;

&lt;p&gt;We also learned about &lt;strong&gt;Skip Lists&lt;/strong&gt;, which provide faster searching compared to traditional linked lists.&lt;/p&gt;

&lt;p&gt;Real-world use cases include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redis Sorted Sets&lt;/li&gt;
&lt;li&gt;Rate Limiting&lt;/li&gt;
&lt;li&gt;Storage Engines&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  LSM Trees
&lt;/h2&gt;

&lt;p&gt;The session then moved to &lt;strong&gt;Log-Structured Merge Trees (LSM Trees)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;LSM Trees are optimized for writing large amounts of data to disk and are commonly used in databases.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RocksDB&lt;/li&gt;
&lt;li&gt;CockroachDB&lt;/li&gt;
&lt;li&gt;Cassandra&lt;/li&gt;
&lt;li&gt;Instagram's backend systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helped me understand how databases efficiently handle high write workloads.&lt;/p&gt;




&lt;h2&gt;
  
  
  Consistent Hashing
&lt;/h2&gt;

&lt;p&gt;Another fascinating topic was &lt;strong&gt;Consistent Hashing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is used to distribute requests across multiple servers without causing major redistribution when servers are added or removed.&lt;/p&gt;

&lt;p&gt;Applications include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Load Balancing&lt;/li&gt;
&lt;li&gt;CDNs like Akamai&lt;/li&gt;
&lt;li&gt;Amazon DynamoDB&lt;/li&gt;
&lt;li&gt;Discord Routing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learning how requests are routed efficiently in distributed systems was particularly interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hexagonal Grid (H3 Index)
&lt;/h2&gt;

&lt;p&gt;I also discovered &lt;strong&gt;H3&lt;/strong&gt;, a hexagonal geospatial indexing system developed by Uber.&lt;/p&gt;

&lt;p&gt;It is used in location-based applications such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uber&lt;/li&gt;
&lt;li&gt;Swiggy&lt;/li&gt;
&lt;li&gt;Zomato&lt;/li&gt;
&lt;li&gt;Ola&lt;/li&gt;
&lt;li&gt;Other ride-sharing platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was one of the most practical concepts discussed because it directly connects to apps many of us use every day.&lt;/p&gt;




&lt;h2&gt;
  
  
  HyperLogLog
&lt;/h2&gt;

&lt;p&gt;One concept I had never heard of before was &lt;strong&gt;HyperLogLog&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is an algorithm used to estimate the number of unique elements in a huge dataset while consuming very little memory.&lt;/p&gt;

&lt;p&gt;Some interesting facts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uses only about &lt;strong&gt;12 KB&lt;/strong&gt; of memory.&lt;/li&gt;
&lt;li&gt;Has an approximate error rate of &lt;strong&gt;0.81%&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reddit analytics&lt;/li&gt;
&lt;li&gt;Google BigQuery&lt;/li&gt;
&lt;li&gt;Large-scale analytics dashboards&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  React Uses Trees Too
&lt;/h2&gt;

&lt;p&gt;One interesting point was that tree data structures are also used in &lt;strong&gt;React's reconciliation process&lt;/strong&gt;, where React compares the old Virtual DOM with the new Virtual DOM to efficiently update the UI.&lt;/p&gt;

&lt;p&gt;As someone interested in frontend development, this connection between DSA and React really stood out.&lt;/p&gt;




&lt;h1&gt;
  
  
  Session 2: Building a Micro SaaS
&lt;/h1&gt;

&lt;p&gt;The second session was presented by &lt;strong&gt;Angel John&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The discussion focused on building Micro SaaS products.&lt;/p&gt;

&lt;p&gt;Some advice that stayed with me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build products that solve real problems.&lt;/li&gt;
&lt;li&gt;Find people who are actually willing to pay for your solution.&lt;/li&gt;
&lt;li&gt;Validate your idea before investing too much time into development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This session reminded me that building software isn't only about writing code—it's about solving meaningful problems.&lt;/p&gt;




&lt;h1&gt;
  
  
  Session 3: Handling High Load Applications
&lt;/h1&gt;

&lt;p&gt;The final session focused on Java performance and handling high-load systems.&lt;/p&gt;

&lt;p&gt;Topics covered included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bytes&lt;/li&gt;
&lt;li&gt;Input Streams&lt;/li&gt;
&lt;li&gt;Streaming Response Body&lt;/li&gt;
&lt;li&gt;Virtual Threads (JDK 21)&lt;/li&gt;
&lt;li&gt;Reactive Pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One practical takeaway was choosing the right approach depending on file size:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Small files → Byte arrays&lt;/li&gt;
&lt;li&gt;Medium files → Input Streams&lt;/li&gt;
&lt;li&gt;Large files → Streaming Response Body&lt;/li&gt;
&lt;li&gt;High concurrency → Streaming Response Body + Virtual Threads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The speaker also introduced &lt;strong&gt;Virtual Threads&lt;/strong&gt; in JDK 21, explaining how they improve memory efficiency and make handling thousands of concurrent requests much easier.&lt;/p&gt;

&lt;p&gt;Another topic was &lt;strong&gt;Reactive Pipelines&lt;/strong&gt; using &lt;code&gt;Flux&amp;lt;DataBuffer&amp;gt;&lt;/code&gt; for efficient streaming.&lt;/p&gt;




&lt;h1&gt;
  
  
  My Overall Experience
&lt;/h1&gt;

&lt;p&gt;This meetup exposed me to many engineering concepts that I had only heard about briefly before.&lt;/p&gt;

&lt;p&gt;Some topics, like Bloom Filters, HyperLogLog, Consistent Hashing, and H3 indexing, were completely new to me, and I'm excited to explore them further.&lt;/p&gt;

&lt;p&gt;The biggest takeaway for me was that software engineering goes far beyond writing code. Understanding the data structures, algorithms, and system design principles behind modern applications helps us appreciate how products like Google Chrome, Uber, Discord, Instagram, and Amazon scale to millions of users.&lt;/p&gt;

&lt;p&gt;I'm looking forward to attending more tech meetups and continuing to learn from the developer community.&lt;/p&gt;

&lt;p&gt;If you've attended a meetup recently, I'd love to hear about your biggest takeaway in the comments!&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>computerscience</category>
      <category>java</category>
      <category>learning</category>
    </item>
    <item>
      <title>How Does Async / Await Work in JavaScript?</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Wed, 08 Jul 2026 17:10:50 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/how-does-async-await-work-in-javascript-d3i</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/how-does-async-await-work-in-javascript-d3i</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsrapj7h7ke6b7napun5v.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsrapj7h7ke6b7napun5v.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is supposed to be the better way to write promises and it helps us keep our code simple and clean.&lt;/p&gt;

&lt;p&gt;All you have to do is write the word async before any regular function and it becomes a promise.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc9rwk001zvi66stwl9v1.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc9rwk001zvi66stwl9v1.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Promises vs Async/Await in JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before async/await, to make a promise we wrote this:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn544ydh759ldzlst0lna.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn544ydh759ldzlst0lna.png" alt=" " width="369" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now using async/await, we write one like this:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzcirfrlzbyy8d4fed7ir.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzcirfrlzbyy8d4fed7ir.png" alt=" " width="294" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You need to understand -&amp;gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to use the try and catch keywords&lt;/li&gt;
&lt;li&gt;How to use the await keyword&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to use the Try and Catch keywords&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We use the try keyword to run our code while we use catch to catch our errors. It's the same concept we saw when we looked at promises.&lt;/p&gt;

&lt;p&gt;Let's see a comparison. We'll see a small demo of the format, then we'll start coding.&lt;/p&gt;

&lt;p&gt;Promises in JS -&amp;gt; resolve or reject&lt;br&gt;
We used resolve and reject in promises like this:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnq37kpx1cvppeqtyy5j0.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnq37kpx1cvppeqtyy5j0.png" alt=" " width="528" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Async / Await in JS -&amp;gt; try, catch&lt;br&gt;
When we're using async/await, we use this format&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwnzidnte3h9bo0qi40ud.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwnzidnte3h9bo0qi40ud.png" alt=" " width="430" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't panic, we'll discuss the await keyword next.&lt;/p&gt;

&lt;p&gt;Now hopefully you understand the difference between promises and Async / Await.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foouv2lb2coryrfxgexfq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foouv2lb2coryrfxgexfq.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The keyword await makes JavaScript wait until a promise settles and returns its result&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use the await keyword in JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's go back to our ice cream shop. We don't know which topping a customer might prefer, chocolate or peanuts. So we need to stop our machine and go and ask our customer what they'd like on their ice cream.&lt;/p&gt;

&lt;p&gt;Notice here that only our kitchen is stopped, but our staff outside the kitchen will still do things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;doing the dishes&lt;/li&gt;
&lt;li&gt;cleaning the tables&lt;/li&gt;
&lt;li&gt;taking orders, and so on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's create a small promise to ask which topping to use. The process takes three seconds.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwkc4eovjt1cqv56rdhhv.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwkc4eovjt1cqv56rdhhv.png" alt=" " width="673" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let's create our kitchen function with the async keyword first&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqvrx5nh5x6enlor30b7y.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqvrx5nh5x6enlor30b7y.png" alt=" " width="277" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's add other tasks below the kitchen() call.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frion0glj445cq6na6okr.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frion0glj445cq6na6okr.png" alt=" " width="516" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are literally going outside our kitchen to ask our customer, "what is your topping choice?" In the mean time, other things still get done.&lt;/p&gt;

&lt;p&gt;Once, we get their topping choice, we enter the kitchen and finish the job&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Small note&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When using Async/ Await, you can also use the .then, .catch, and .finally handlers as well which are a core part of promises.&lt;/p&gt;

&lt;p&gt;We're gonna create two functions -&amp;gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kitchen: to make ice cream&lt;/li&gt;
&lt;li&gt;time: to assign the amount of time each small task will take
.
Let's start! First, create the time function:&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4t6hlh15kqq0le9fir07.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4t6hlh15kqq0le9fir07.png" alt=" " width="497" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let's create our kitchen:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fok05bngjslz69uztixr8.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fok05bngjslz69uztixr8.png" alt=" " width="478" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's give small instructions and test if our kitchen function is working or not:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fikjff4h2hhnso9y1oyti.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fikjff4h2hhnso9y1oyti.png" alt=" " width="533" height="420"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flygwzg4k8qyxu91sfpqd.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flygwzg4k8qyxu91sfpqd.png" alt=" " width="546" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result looks like this when the shop is closed:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr3cl7fhgzrun0ufrii1v.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr3cl7fhgzrun0ufrii1v.png" alt=" " width="637" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's the list of our tasks again: &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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9a3v92qp5oaeo3qrgj4g.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9a3v92qp5oaeo3qrgj4g.png" alt=" " width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;async function kitchen(){&lt;br&gt;
    try{&lt;br&gt;
    await time(2000)&lt;br&gt;
    console.log(&lt;code&gt;${stocks.Fruits[0]} was selected&lt;/code&gt;)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;await time(0000)
console.log("production has started")

await time(2000)
console.log("fruit has been chopped")

await time(1000)
console.log(`${stocks.liquid[0]} and ${stocks.liquid[1]} added`)

await time(1000)
console.log("start the machine")

await time(2000)
console.log(`ice cream placed on ${stocks.holder[1]}`)

await time(3000)
console.log(`${stocks.toppings[0]} as toppings`)

await time(2000)
console.log("Serve Ice Cream")
}

catch(error){
 console.log("customer left")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;And here's the result: 👇&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyuzlgxjwggd7nwhf4w1z.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyuzlgxjwggd7nwhf4w1z.png" alt=" " width="546" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reference : &lt;a href="https://www.freecodecamp.org/news/javascript-async-await-tutorial-learn-callbacks-promises-async-await-by-making-icecream/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/javascript-async-await-tutorial-learn-callbacks-promises-async-await-by-making-icecream/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Promise in JavaScript</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Wed, 08 Jul 2026 17:07:40 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/promise-in-javascript-15ch</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/promise-in-javascript-15ch</guid>
      <description>&lt;p&gt;&lt;strong&gt;Promise&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Promises were invented to solve the problem of callback hell and to better handle our tasks.&lt;/p&gt;

&lt;p&gt;This is how a promise looks:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftd535h25robyhhp7s70p.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftd535h25robyhhp7s70p.png" alt=" " width="589" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;illustration of a promise format&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's dissect promises together.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4m910upf5i8eafcxv17p.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4m910upf5i8eafcxv17p.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An illustration of the life of a promise&lt;/p&gt;

&lt;p&gt;As the above charts show, a promise has three states:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pending&lt;/strong&gt;: This is the initial stage. Nothing happens here. Think of it like this, your customer is taking their time giving you an order. But they haven't ordered anything yet.&lt;br&gt;
&lt;strong&gt;Resolved&lt;/strong&gt;: This means that your customer has received their food and is happy.&lt;br&gt;
&lt;strong&gt;Rejected&lt;/strong&gt;: This means that your customer didn't receive their order and left the restaurant.&lt;/p&gt;

&lt;p&gt;We need to understand four more things first -&amp;gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Relationship between time and work&lt;/li&gt;
&lt;li&gt;Promise chaining&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;li&gt;The .finally handler&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's start our ice cream shop and understand each of these concepts one by one by taking baby steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship between time and work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you remember, these are our steps and the time each takes to make ice cream"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqfm0rwp2bpbsdvac75fq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqfm0rwp2bpbsdvac75fq.png" alt=" " width="603" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chart contains steps to make ice cream&lt;/p&gt;

&lt;p&gt;For this to happen, let's create a variable in JavaScript: &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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnn81vwz5uxgnz66xb98d.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnn81vwz5uxgnz66xb98d.png" alt=" " width="317" height="63"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now create a function named order and pass two arguments named time, work and we're gonna make a promise to our customer, "We will serve you ice-cream" Like this -&amp;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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F30pwno13f7xdhjjpizdr.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F30pwno13f7xdhjjpizdr.png" alt=" " width="459" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our promise has 2 parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resolved [ ice cream delivered ]&lt;/li&gt;
&lt;li&gt;Rejected [ customer didn't get ice cream ]&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fanygbq5mhc4vca14gd82.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fanygbq5mhc4vca14gd82.png" alt=" " width="470" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's add the time and work factors inside our promise using a setTimeout() function inside our if statement. Follow me 👇&lt;/p&gt;

&lt;p&gt;Note: In real life, you can avoid the time factor as well. This is completely dependent on the nature of your work.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdlguosfa7uhade9u23q8.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdlguosfa7uhade9u23q8.png" alt=" " width="518" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, we're gonna use our newly created function to start ice-cream production.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Folj9xmv25yw0kfmksyfu.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Folj9xmv25yw0kfmksyfu.png" alt=" " width="576" height="92"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fviu2hnz15iz75306if6t.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fviu2hnz15iz75306if6t.png" alt=" " width="581" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Promise chaining&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this method, we defining what we need to do when the first task is complete using the .then handler. It looks something like this 👇&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj0m3y7ulpfca2anzb7gw.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj0m3y7ulpfca2anzb7gw.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Illustration of promise chaining using .then handler&lt;/p&gt;

&lt;p&gt;The .then handler returns a promise when our original promise is resolved.&lt;/p&gt;

&lt;p&gt;Let me make it simpler: it's similar to giving instructions to someone. You tell someone to " First do this, then do that, then this other thing, then.., then.., then..." and so on.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The first task is our original promise.&lt;/li&gt;
&lt;li&gt;The rest of the tasks return our promise once one small bit of work is completed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: don't forget to write the return word inside your .then handler. Otherwise, it won't work properly. If you're curious, try removing the return once we finish the steps&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazuh9vrb2k6evu3phbse.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazuh9vrb2k6evu3phbse.png" alt=" " width="533" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the same system, let's finish our project:&lt;/p&gt;

&lt;p&gt;// step 1&lt;br&gt;
order(2000,()=&amp;gt;console.log(&lt;code&gt;${stocks.Fruits[0]} was selected&lt;/code&gt;))&lt;/p&gt;

&lt;p&gt;// step 2&lt;br&gt;
.then(()=&amp;gt;{&lt;br&gt;
  return order(0000,()=&amp;gt;console.log('production has started'))&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;// step 3&lt;br&gt;
.then(()=&amp;gt;{&lt;br&gt;
  return order(2000, ()=&amp;gt;console.log("Fruit has been chopped"))&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;// step 4&lt;br&gt;
.then(()=&amp;gt;{&lt;br&gt;
  return order(1000, ()=&amp;gt;console.log(&lt;code&gt;${stocks.liquid[0]} and ${stocks.liquid[1]} added&lt;/code&gt;))&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;// step 5&lt;br&gt;
.then(()=&amp;gt;{&lt;br&gt;
  return order(1000, ()=&amp;gt;console.log("start the machine"))&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;// step 6&lt;br&gt;
.then(()=&amp;gt;{&lt;br&gt;
  return order(2000, ()=&amp;gt;console.log(&lt;code&gt;ice cream placed on ${stocks.holder[1]}&lt;/code&gt;))&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;// step 7&lt;br&gt;
.then(()=&amp;gt;{&lt;br&gt;
  return order(3000, ()=&amp;gt;console.log(&lt;code&gt;${stocks.toppings[0]} as toppings&lt;/code&gt;))&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;// Step 8&lt;br&gt;
.then(()=&amp;gt;{&lt;br&gt;
  return order(2000, ()=&amp;gt;console.log("Serve Ice Cream"))&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;Result :&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdecaxt86r2wh1ys22rjx.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdecaxt86r2wh1ys22rjx.png" alt=" " width="585" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error handling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We need a way to handle errors when something goes wrong. But first, we need to understand the promise cycle:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1mm2gwpompo9mofi4at0.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1mm2gwpompo9mofi4at0.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An illustration of the life of a promise&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To catch our errors, let's change our variable to false.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fknzn0zekge9tsh38vpbh.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fknzn0zekge9tsh38vpbh.png" alt=" " width="391" height="55"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which means our shop is closed. We're not selling ice cream to our customers anymore.&lt;/p&gt;

&lt;p&gt;To handle this, we use the .catch handler. Just like .then, it also returns a promise, but only when our original promise is rejected.&lt;/p&gt;

&lt;p&gt;A small reminder here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;.then works when a promise is resolved&lt;/li&gt;
&lt;li&gt;.catch works when a promise is rejected
Go down to the very bottom and write the following code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just remember that there should be nothing between your previous .then handler and the .catch handler.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fufq5ily4dcv3c7fx0vc4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fufq5ily4dcv3c7fx0vc4.png" alt=" " width="479" height="80"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7tlj8epgcmgoyhtdj1p8.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7tlj8epgcmgoyhtdj1p8.png" alt=" " width="599" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A couple things to note about this code:&lt;/p&gt;

&lt;p&gt;The 1st message is coming from the reject() part of our promise&lt;br&gt;
The 2nd message is coming from the .catch handler&lt;/p&gt;

&lt;p&gt;How to use the .finally() handler&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9rfxtt1ej9clbqv51ila.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9rfxtt1ej9clbqv51ila.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's something called the finally handler which works regardless of whether our promise was resolved or rejected.&lt;/p&gt;

&lt;p&gt;For example: whether we serve no customers or 100 customers, our shop will close at the end of the day&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8vgeqn7cx1mfpvdda78s.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8vgeqn7cx1mfpvdda78s.png" alt=" " width="507" height="119"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj3y0qcbzwilvkjrnzq5q.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj3y0qcbzwilvkjrnzq5q.png" alt=" " width="569" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Break Time!&lt;/p&gt;

&lt;p&gt;Reference  : &lt;a href="https://www.freecodecamp.org/news/javascript-async-await-tutorial-learn-callbacks-promises-async-await-by-making-icecream/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/javascript-async-await-tutorial-learn-callbacks-promises-async-await-by-making-icecream/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>api</category>
    </item>
    <item>
      <title>Introduction to React</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Fri, 03 Jul 2026 15:55:29 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/introduction-to-react-7eb</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/introduction-to-react-7eb</guid>
      <description>&lt;p&gt;&lt;strong&gt;React&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;React is a Frond-End JavaScript Library. It is used to create UI(User Interface). UI means Everything that user sees and Interact with webpages or Applications.&lt;/p&gt;

&lt;p&gt;It includes,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buttons&lt;/li&gt;
&lt;li&gt;Color&lt;/li&gt;
&lt;li&gt;Layout&lt;/li&gt;
&lt;li&gt;Text&lt;/li&gt;
&lt;li&gt;Images  ....&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;React is Espeacilly used to create SPA (Single Page Application).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single Page Application&lt;/strong&gt; :&lt;/p&gt;

&lt;p&gt;SPA is Web Application that loades on only on HTML Page initially, When user try to navigate different Sections,it does not reload. Instead,it changes only nessary Contents on UI.&lt;/p&gt;

&lt;p&gt;Example : &lt;strong&gt;Gmail&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you click:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inbox&lt;/li&gt;
&lt;li&gt;Sent&lt;/li&gt;
&lt;li&gt;Drafts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The page does not reload. Only the content changes.&lt;/p&gt;

&lt;p&gt;SPA behavior: One page is loaded initially, and JavaScript updates the content.&lt;/p&gt;

&lt;p&gt;(Other Examples : Netflix, Facebook,Google Maps)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benifits&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster Navigation&lt;/li&gt;
&lt;li&gt;Better User Experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DisAdvantage&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Initial Content Loading may be Slower.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is the initial loading of an SPA slowe&lt;/strong&gt;r?&lt;/p&gt;

&lt;p&gt;When you first open a Single Page Application (SPA), the browser has to download most of the JavaScript needed to run the application before it can display the interactive UI.&lt;/p&gt;

&lt;p&gt;After that first load, moving between pages is very fast because the app is already running in the browser&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component Based Architecture&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;React is Component-Based Architecture.UI breaking into small Parts. those are called "Components" which is Reusable.Each Component has its own Logic ,Strcture and Styling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Virtual DOM in React&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;React uses a Virtual DOM to improve the performance of UI updates.&lt;/p&gt;

&lt;p&gt;The Virtual DOM is a lightweight, in-memory representation (copy) of the Real DOM.&lt;/p&gt;

&lt;p&gt;When a React application is first rendered, React creates a Virtual DOM that represents the UI and then renders it to the Real DOM.&lt;/p&gt;

&lt;p&gt;Whenever the application's state or props change, React creates a new Virtual DOM. It then compares the new Virtual DOM with the previous Virtual DOM using a process called the Diffing Algorithm.&lt;/p&gt;

&lt;p&gt;The Diffing Algorithm identifies the differences between the two Virtual DOM trees. Based on these differences, React updates only the necessary parts of the Real DOM instead of re-rendering the entire page.&lt;/p&gt;

&lt;p&gt;This entire process of comparing the Virtual DOMs and efficiently updating the Real DOM is called Reconciliation.&lt;/p&gt;

&lt;p&gt;Because React updates only the changed elements, applications become faster and more efficient.&lt;/p&gt;

&lt;p&gt;React was developed by FaceBook .&lt;/p&gt;

&lt;p&gt;Current React Version is React 19.2.7&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>JavaScript Async/Await Tutorial – Learn Callbacks, Promises, and Async/Await in JS by Making Ice Cream 🍧🍨🍦</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Fri, 03 Jul 2026 11:56:15 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/javascript-asyncawait-tutorial-learn-callbacks-promises-and-asyncawait-in-js-by-making-ice-3fj2</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/javascript-asyncawait-tutorial-learn-callbacks-promises-and-asyncawait-in-js-by-making-ice-3fj2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Part-2&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flnmx6ucuukeujskbopai.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flnmx6ucuukeujskbopai.png" alt=" " width="629" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are Callbacks in JavaScript&lt;/strong&gt;?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you nest a function inside another function as an argument, that's called a callback.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's an illustration of a callback:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Futxxkcywblg2ze2bz4vs.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Futxxkcywblg2ze2bz4vs.png" alt=" " width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why do we use callbacks&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;When doing a complex task, we break that task down into smaller steps. To help us establish a relationship between these steps according to time (optional) and order, we use callbacks.&lt;/p&gt;

&lt;p&gt;Take a look at this example:👇&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff7sl4jakrvisi0yly2js.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff7sl4jakrvisi0yly2js.png" alt=" " width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The shop will have two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The storeroom will have all the ingredients [Our Backend]&lt;/li&gt;
&lt;li&gt;We'll produce ice cream in our kitchen [The frontend]&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6k5jsd1syz7imx0s40v6.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6k5jsd1syz7imx0s40v6.png" alt=" " width="651" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's store our data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, we're gonna store our ingredients inside an object. Let's start!&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F66gqpqvp9eolwssjwnen.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F66gqpqvp9eolwssjwnen.png" alt=" " width="680" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  let stocks = {
  Fruits : ["strawberry", "grapes", "banana", "apple"]
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You can store these other ingredients in JavaScript objects like this🍦🍦🍧🍨,&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9vas7fssb4uyrxgtpnaq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9vas7fssb4uyrxgtpnaq.png" alt=" " width="513" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The entire business depends on what a customer orders. Once we have an order, we start production and then we serve ice cream. So, we'll create two functions -&amp;gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;order&lt;/li&gt;
&lt;li&gt;production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;let's establish a relationship between these two functions using a callback, like this: 👇&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgzxraw4z1jv8u85fvgcr.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgzxraw4z1jv8u85fvgcr.png" alt=" " width="549" height="463"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdl8cjlgmhzpt7zawsqoa.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdl8cjlgmhzpt7zawsqoa.png" alt=" " width="512" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're wondering how we picked strawberry from our stock variable, here's the code with the format 👇&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs37uq3syqcnpfstxcs8t.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs37uq3syqcnpfstxcs8t.png" alt=" " width="773" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; let production = () =&amp;gt;{

     setTimeout(()=&amp;gt;{
     console.log("production has started")
      },0000)

   };
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzg5auic647nl6m4iif5l.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzg5auic647nl6m4iif5l.png" alt=" " width="526" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We'll nest another setTimeout function in our existing setTimeout function to chop the fruit. Like this: 👇&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5n6weufh3arlkmfodteo.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5n6weufh3arlkmfodteo.png" alt=" " width="478" height="280"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4xzrfjkafmtuy0pigs8l.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4xzrfjkafmtuy0pigs8l.png" alt=" " width="478" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;result  :&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2kal4snc1vktqqm52mun.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2kal4snc1vktqqm52mun.png" alt=" " width="559" height="218"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7efoky4fsgin2pkbd13p.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7efoky4fsgin2pkbd13p.png" alt=" " width="601" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;let production = () =&amp;gt;{&lt;/p&gt;

&lt;p&gt;setTimeout(()=&amp;gt;{&lt;br&gt;
    console.log("production has started")&lt;br&gt;
    setTimeout(()=&amp;gt;{&lt;br&gt;
      console.log("The fruit has been chopped")&lt;br&gt;
      setTimeout(()=&amp;gt;{&lt;br&gt;
        console.log(&lt;code&gt;${stocks.liquid[0]} and ${stocks.liquid[1]} Added&lt;/code&gt;)&lt;br&gt;
        setTimeout(()=&amp;gt;{&lt;br&gt;
          console.log("start the machine")&lt;br&gt;
          setTimeout(()=&amp;gt;{&lt;br&gt;
            console.log(&lt;code&gt;Ice cream placed on ${stocks.holder[1]}&lt;/code&gt;)&lt;br&gt;
            setTimeout(()=&amp;gt;{&lt;br&gt;
              console.log(&lt;code&gt;${stocks.toppings[0]} as toppings&lt;/code&gt;)&lt;br&gt;
              setTimeout(()=&amp;gt;{&lt;br&gt;
                console.log("serve Ice cream")&lt;br&gt;
              },2000)&lt;br&gt;
            },3000)&lt;br&gt;
          },2000)&lt;br&gt;
        },1000)&lt;br&gt;
      },1000)&lt;br&gt;
    },2000)&lt;br&gt;
  },0000)&lt;br&gt;
};&lt;/p&gt;

&lt;p&gt;Result :&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj37dfo5cvehx40y913im.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj37dfo5cvehx40y913im.png" alt=" " width="472" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feeling confused&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;This is called callback hell. It looks something like this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Take a break&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;we will learn about CallBack Hell in next Post.....&lt;/p&gt;

&lt;p&gt;Happy Learning.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>callback</category>
    </item>
    <item>
      <title>JavaScript Async/Await Tutorial – Learn Callbacks, Promises, and Async/Await in JS by Making Ice Cream 🍧🍨🍦</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Fri, 03 Jul 2026 11:01:57 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/javascript-asyncawait-tutorial-learn-callbacks-promises-and-asyncawait-in-js-by-making-ice-258o</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/javascript-asyncawait-tutorial-learn-callbacks-promises-and-asyncawait-in-js-by-making-ice-258o</guid>
      <description>&lt;p&gt;&lt;strong&gt;Part-1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today, I learned about &lt;strong&gt;Callbacks in JavaScript&lt;/strong&gt; from FreeCodeCamp using a fun ice cream making example.&lt;/p&gt;

&lt;p&gt;Before learning callbacks, I first understood the difference between Synchronous and Asynchronous operations with simple examples.&lt;/p&gt;

&lt;p&gt;Synchronous Operations: Tasks are executed one after another. The next task waits until the current task is completed.&lt;br&gt;
Asynchronous Operations: Some tasks take time to complete, so JavaScript doesn't wait for them. Instead, it continues executing the remaining code while the long-running task is processed in the background.&lt;/p&gt;

&lt;p&gt;These concepts helped me understand why callbacks are needed in JavaScript. Below, I have included the examples I used to explain synchronous and asynchronous operations, followed by the ice cream example that demonstrates how callbacks work.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd7wucovvdhvi1un2zm0t.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd7wucovvdhvi1un2zm0t.png" alt=" " width="799" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synchronous vs Asynchronous JavaScript&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa26cfswusvajq268moco.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa26cfswusvajq268moco.png" alt=" " width="708" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a Synchronous System&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;In a  synchronous system, tasks are completed one after another.&lt;/p&gt;

&lt;p&gt;Think of this as if you have just one hand to accomplish 10 tasks. So, you have to complete one task at a time.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxufbgrsr285fwks5bnrx.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxufbgrsr285fwks5bnrx.png" alt=" " width="366" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine people standing in a queue at a restaurant.&lt;/p&gt;

&lt;p&gt;The first customer places their order. Only after the restaurant staff finishes taking the first customer's order does the next customer get a chance to order. Everyone else in the queue has to wait for their turn.&lt;/p&gt;

&lt;p&gt;Each customer is served one by one, and the next person's order cannot be taken until the previous person's order is completed.&lt;/p&gt;

&lt;p&gt;This is exactly how synchronous operations work in JavaScript: tasks are executed sequentially, and each task waits for the previous one to finish before starting&lt;/p&gt;

&lt;p&gt;Well, &lt;strong&gt;JavaScript is by default Synchronous [single threaded]&lt;/strong&gt;. Think about it like this – one thread means one hand with which to do stuff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is an Asynchronous System?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this system, tasks are completed independently.&lt;/p&gt;

&lt;p&gt;Here, imagine that for 10 tasks, you have 10 hands. So, each hand can do each task independently and at the same time.&lt;/p&gt;

&lt;p&gt;Example:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdw8cjm9dojrrh00i55jh.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdw8cjm9dojrrh00i55jh.png" alt=" " width="799" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine you put your clothes into a washing machine and start it.&lt;/p&gt;

&lt;p&gt;The washing machine takes about 30 minutes to finish washing. Instead of standing there and waiting, you use that time to clean your room, watch TV, or cook.&lt;/p&gt;

&lt;p&gt;When the washing machine finishes, it beeps, and you go back to take out your clothes.&lt;/p&gt;

&lt;p&gt;Similarly, in JavaScript, some tasks take time to complete. Instead of waiting, JavaScript continues executing other tasks. Once the long-running task is finished, it notifies the program through a callback, Promise, or async/await.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To Summarize Synchronous vs Asynchronous JS&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;When three images are on a marathon, in a:&lt;/p&gt;

&lt;p&gt;Synchronous system, three images are in the same lane. One can't overtake the other. The race is finished one by one. If image number 2 stops, the following image stops.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0cj5jj9mnfur53skad23.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0cj5jj9mnfur53skad23.png" alt=" " width="554" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asynchronous system&lt;/strong&gt;, the three images are in different lanes. They'll finish the race on their own pace. Nobody stops for anybody:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F56q9903ztgthcn7gm22o.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F56q9903ztgthcn7gm22o.png" alt=" " width="660" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synchronous and Asynchronous Code Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To test a synchronous system, write this code in JavaScript:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffyik6xeryu2rzguw72db.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffyik6xeryu2rzguw72db.png" alt=" " width="513" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;result :&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsh3clinn4dsq3293jk5f.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsh3clinn4dsq3293jk5f.png" alt=" " width="555" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asynchronous code example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's say it takes two seconds to eat some ice cream. Now, let's test out an asynchronous system. Write the below code in JavaScript.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpj0s258vaozi0vd1ntha.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpj0s258vaozi0vd1ntha.png" alt=" " width="532" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Result :&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70tw605zk17d9vlfdong.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70tw605zk17d9vlfdong.png" alt=" " width="527" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you know the difference between synchronous and async operations, let's build our ice cream shop.&lt;/p&gt;

</description>
      <category>callback</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>HTML DOM API</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Thu, 02 Jul 2026 07:31:56 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/html-dom-api-17c7</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/html-dom-api-17c7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Application Programming Interface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The DOM API (Application Programming Interface) is a set of Methods and Properties that allow JavaScript to change the content, structure, and style of any HTML elements.&lt;/p&gt;

&lt;p&gt;An API Method is an Action that you can do on an HTML element.&lt;/p&gt;

&lt;p&gt;An API Property is a Value that you can access on an HTML element&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg2b0g6iff75v3jzxkf0m.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg2b0g6iff75v3jzxkf0m.png" alt=" " width="543" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;document is the HTML document.&lt;/li&gt;
&lt;li&gt;getElementById() is a document method.&lt;/li&gt;
&lt;li&gt;myPara = getElementById("demo") retrieves the "demo" element.&lt;/li&gt;
&lt;li&gt;innerHTML is an element property.&lt;/li&gt;
&lt;li&gt;myPara.innerHTML = "Hello World!" changes the property.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;HTML DOM API Abilities&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The DOM API provides us with the ability to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find and select elements&lt;/li&gt;
&lt;li&gt;Change element content and attributes&lt;/li&gt;
&lt;li&gt;Add, remove, or modify elements&lt;/li&gt;
&lt;li&gt;Change CSS styles&lt;/li&gt;
&lt;li&gt;Add event listeners to react to user input&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JavaScript is the Language&lt;/p&gt;

&lt;p&gt;The DOM API is a standard for how to get, change, add, or delete HTML DOM elements.&lt;/p&gt;

&lt;p&gt;JavaScript is the language used in browsers to access the DOM through the API.&lt;/p&gt;

&lt;p&gt;API Methods and Properties&lt;br&gt;
Developers use global objects like document and window as entry points to any API.&lt;/p&gt;

&lt;p&gt;If you want to access any element in an HTML page, you always start with accessing the document object. The document object represents your web page.&lt;/p&gt;

&lt;p&gt;To manipulate HTML with JavaScript, you first need to select an element.&lt;/p&gt;

&lt;p&gt;Below are some examples of how you can use the document object to access HTML:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fei7bkafgupnr0gwoiy6e.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fei7bkafgupnr0gwoiy6e.png" alt=" " width="799" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessing Element Content&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjmj9y023atpq3yzmu61x.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjmj9y023atpq3yzmu61x.png" alt=" " width="657" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessing Element Attributes&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6twr9pxuc86efp0wpfl1.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6twr9pxuc86efp0wpfl1.png" alt=" " width="694" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Changing Element Attributes&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd73dndtlt1acwbdjznem.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd73dndtlt1acwbdjznem.png" alt=" " width="800" height="383"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fogkzm6g766g8ykcsfoa9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fogkzm6g766g8ykcsfoa9.png" alt=" " width="798" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>The HTML DOM</title>
      <dc:creator>vidhya murali</dc:creator>
      <pubDate>Thu, 02 Jul 2026 03:46:04 +0000</pubDate>
      <link>https://dev.to/vidhya_murali_5aabe7784bd/the-html-dom-2fe</link>
      <guid>https://dev.to/vidhya_murali_5aabe7784bd/the-html-dom-2fe</guid>
      <description>&lt;p&gt;&lt;strong&gt;HTML Document Object Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The HTML DOM (HTML Document Object Model) is an Object Model for HTML Documents.&lt;/p&gt;

&lt;p&gt;The HTML DOM is a tree of Nodes that represents an HTML Page&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftk0mkd676d5xni4occv3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftk0mkd676d5xni4occv3.png" alt=" " width="600" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The DOM Tree&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a web page loads, the browser creates a tree-like representation of the HTML document.&lt;br&gt;
Accessing HTML Elements&lt;br&gt;
The HTML DOM can be used to access HTML elements.&lt;/p&gt;

&lt;p&gt;The most common way to access an HTML element is to use the id of the element:&lt;/p&gt;

&lt;p&gt;Each part of the document are nodes in the tree:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F980tyi4iwrowjjk912v1.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F980tyi4iwrowjjk912v1.png" alt=" " width="625" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessing HTML Elements&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The HTML DOM can be used to access HTML elements.&lt;/p&gt;

&lt;p&gt;The most common way to access an HTML element is to use the id of the element:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg10huhqin64kima8bjkt.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg10huhqin64kima8bjkt.png" alt=" " width="435" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the example above, the getElementById method used id="demo" to find the element.&lt;/p&gt;

&lt;p&gt;id="demo" is an HTML property&lt;br&gt;
getElementById() is a DOM Method&lt;br&gt;
innerHTML is a DOM Property&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The World Wide Web Consortium&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The DOM is a W3C Standard (World Wide Web Consortium):&lt;/p&gt;

&lt;p&gt;"The W3C Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document."&lt;/p&gt;

&lt;p&gt;The W3C DOM standard is separated into 3 different parts:&lt;/p&gt;

&lt;p&gt;Core DOM - standard model for all document types&lt;br&gt;
XML DOM - standard model for XML documents&lt;br&gt;
HTML DOM - standard model for HTML documents&lt;/p&gt;

</description>
      <category>html</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
