<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Syed Muhammad Ali Raza</title>
    <description>The latest articles on Forem by Syed Muhammad Ali Raza (@syedmuhammadaliraza).</description>
    <link>https://forem.com/syedmuhammadaliraza</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F210677%2Fb1f0580c-cc32-459d-8078-0439930ee86b.png</url>
      <title>Forem: Syed Muhammad Ali Raza</title>
      <link>https://forem.com/syedmuhammadaliraza</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/syedmuhammadaliraza"/>
    <language>en</language>
    <item>
      <title>React Interview Prep: 50+ Problems Every Frontend Dev Should Know</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Fri, 31 Oct 2025 09:48:49 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/react-interview-prep-50-problems-every-frontend-dev-should-know-4je9</link>
      <guid>https://forem.com/syedmuhammadaliraza/react-interview-prep-50-problems-every-frontend-dev-should-know-4je9</guid>
      <description>&lt;p&gt;If I’m testing your React knowledge in a Frontend interview, I’m definitely going to ask 1–2 questions out of these 50+ problems (collected over my 12+ years of exp.)&lt;/p&gt;

&lt;p&gt;These cover everything :&lt;br&gt;
→ Component design and reusability&lt;br&gt;
→ State management and hooks&lt;br&gt;
→ Handling user interactions and events&lt;br&gt;
→ Accessibility and ARIA roles&lt;br&gt;
→ Optimizing rendering and performance&lt;br&gt;
→ Working with external data and APIs&lt;/p&gt;

&lt;p&gt;➥UI/Component Building&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memory Game&lt;/li&gt;
&lt;li&gt;Image Carousel&lt;/li&gt;
&lt;li&gt;Image Carousel II (smooth transitions)&lt;/li&gt;
&lt;li&gt;Digital Clock&lt;/li&gt;
&lt;li&gt;Analog Clock&lt;/li&gt;
&lt;li&gt;Whack-A-Mole&lt;/li&gt;
&lt;li&gt;Tic-tac-toe&lt;/li&gt;
&lt;li&gt;Tic-tac-toe II (N x N, variable win condition)&lt;/li&gt;
&lt;li&gt;Connect Four&lt;/li&gt;
&lt;li&gt;Modal Dialog&lt;/li&gt;
&lt;li&gt;Modal Dialog II (ARIA roles, semi-accessible)&lt;/li&gt;
&lt;li&gt;Modal Dialog III (common close methods, moderately accessible)&lt;/li&gt;
&lt;li&gt;Accordion II (accessible, ARIA support)&lt;/li&gt;
&lt;li&gt;Accordion III (full keyboard support, ARIA)&lt;/li&gt;
&lt;li&gt;Tabs&lt;/li&gt;
&lt;li&gt;Tabs II (semi-accessible)&lt;/li&gt;
&lt;li&gt;Tabs III (keyboard/ARIA spec)&lt;/li&gt;
&lt;li&gt;Star Rating&lt;/li&gt;
&lt;li&gt;Like Button&lt;/li&gt;
&lt;li&gt;Progress Bars III (multiple concurrent, pause/resume)&lt;/li&gt;
&lt;li&gt;Progress Bars II (sequential fill, one at a time)&lt;/li&gt;
&lt;li&gt;Grid Lights&lt;/li&gt;
&lt;li&gt;Traffic Light&lt;/li&gt;
&lt;li&gt;Data Table&lt;/li&gt;
&lt;li&gt;Data Table II (sorting)&lt;/li&gt;
&lt;li&gt;Data Table III (pagination, sorting)&lt;/li&gt;
&lt;li&gt;Data Table IV (pagination, sorting, filtering)&lt;/li&gt;
&lt;li&gt;Nested Checkboxes (parent-child selection logic)&lt;/li&gt;
&lt;li&gt;File Explorer&lt;/li&gt;
&lt;li&gt;File Explorer II (ARIA roles, semi-accessible)&lt;/li&gt;
&lt;li&gt;File Explorer III (flat DOM)&lt;/li&gt;
&lt;li&gt;Table of Contents (HTML parsing, tree)&lt;/li&gt;
&lt;li&gt;Selectable Cells (drag-select grid)&lt;/li&gt;
&lt;li&gt;Auth Code Input (6-digit entry)&lt;/li&gt;
&lt;li&gt;Modal Dialog IV (fully accessible, keyboard support)&lt;/li&gt;
&lt;li&gt;Undoable Counter (undo/redo)&lt;/li&gt;
&lt;li&gt;Pixel Art (drawing grid)&lt;/li&gt;
&lt;li&gt;Todo List&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;➥Logic/Algorithmic &amp;amp; Data Handling&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Birth Year Histogram (API + plotting)&lt;/li&gt;
&lt;li&gt;Job Board (API data + rendering)&lt;/li&gt;
&lt;li&gt;Transfer List&lt;/li&gt;
&lt;li&gt;Transfer List II (bulk select, add, transfer)&lt;/li&gt;
&lt;li&gt;Users Database (CRUD)&lt;/li&gt;
&lt;li&gt;Dice Roller&lt;/li&gt;
&lt;li&gt;Backbone Model (custom object store)&lt;/li&gt;
&lt;li&gt;Data Selection (filtering)&lt;/li&gt;
&lt;li&gt;getElementsByTagNameHierarchy (DOM queries)&lt;/li&gt;
&lt;li&gt;Curry III (JS currying logic)&lt;/li&gt;
&lt;li&gt;Classnames II (join/dedupe classnames)&lt;/li&gt;
&lt;li&gt;Heap (implement data structure)&lt;/li&gt;
&lt;li&gt;Heap Operations&lt;/li&gt;
&lt;li&gt;End of Array Reachable (jump game)&lt;/li&gt;
&lt;li&gt;Find the Longest Palindromic Substring&lt;/li&gt;
&lt;li&gt;Find Words in Grid&lt;/li&gt;
&lt;li&gt;Find Word in Grid (existence check)&lt;/li&gt;
&lt;li&gt;Shortest Substring Containing Characters&lt;/li&gt;
&lt;li&gt;Disjoint Intervals (remove overlaps)&lt;/li&gt;
&lt;li&gt;Minimum Meeting Rooms Needed&lt;/li&gt;
&lt;li&gt;Graph Clone (deep copy graph)&lt;/li&gt;
&lt;li&gt;Binary Tree Serialization and Deserialization&lt;/li&gt;
&lt;li&gt;Binary Tree Maximum Total Path&lt;/li&gt;
&lt;li&gt;Binary Tree Rebuilding from Preorder/Inorder&lt;/li&gt;
&lt;li&gt;Graph Count Connected Components&lt;/li&gt;
&lt;li&gt;Number Stream Median&lt;/li&gt;
&lt;li&gt;Linked Lists Combine K Sorted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;➥Custom Hooks&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;useDebounce&lt;/li&gt;
&lt;li&gt;useEventListener&lt;/li&gt;
&lt;li&gt;useHover&lt;/li&gt;
&lt;li&gt;useInterval&lt;/li&gt;
&lt;li&gt;useKeyPress&lt;/li&gt;
&lt;li&gt;useMap&lt;/li&gt;
&lt;li&gt;useObject&lt;/li&gt;
&lt;li&gt;useSet&lt;/li&gt;
&lt;li&gt;useStep&lt;/li&gt;
&lt;li&gt;useThrottle&lt;/li&gt;
&lt;li&gt;useTimeout&lt;/li&gt;
&lt;li&gt;useWindowSize&lt;/li&gt;
&lt;li&gt;useIdle&lt;/li&gt;
&lt;li&gt;useInputControl&lt;/li&gt;
&lt;li&gt;useMediaQuery&lt;/li&gt;
&lt;li&gt;useMediatedState&lt;/li&gt;
&lt;li&gt;useQuery&lt;/li&gt;
&lt;li&gt;useArray&lt;/li&gt;
&lt;li&gt;useBreakpoint&lt;/li&gt;
&lt;li&gt;useClickOutside&lt;/li&gt;
&lt;li&gt;useCountdown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can build, debug, and explain at least half of these, you’re already ahead of 90% of candidates.&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Frontend Challenge - Halloween Edition</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Fri, 31 Oct 2025 06:55:40 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/frontend-challenge-halloween-edition-1m74</link>
      <guid>https://forem.com/syedmuhammadaliraza/frontend-challenge-halloween-edition-1m74</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2025-10-15"&gt;Frontend Challenge - Halloween Edition, Perfect Landing&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built the Spooky Heritage Museum landing page—an interactive experience that takes visitors through Halloween’s history. The page includes:&lt;br&gt;
Animated Hero Section: Full-screen intro with a glowing moon, twinkling stars, floating ghosts, and bats flying across. Typography uses the "Creepster" font.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Interactive Timeline: A vertical timeline showing Halloween’s evolution from ancient Celtic Samhain to modern trick-or-treating. Timeline items animate into view on scroll and alternate left/right.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exhibit Showcase: Four featured exhibits with hover lift/glow effects. Clicking opens modal dialogs (replacing alerts).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Events Section: Calendar-style event cards for upcoming activities like  midnight ghost tours and pumpkin carving workshops.&lt;br&gt;
Reservation System: A validated form with real-time email, date, and guest limit checks, plus clear error messages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The design uses a purple-to-orange gradient with dark backgrounds that make orange accents pop, plus yellow highlights for a warm, candlelit feel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Demo Link&lt;br&gt;
&lt;a href="https://github.com/Syed-Muhammad-Ali-Raza/Halloween-Landing-Challenge-" rel="noopener noreferrer"&gt;https://github.com/Syed-Muhammad-Ali-Raza/Halloween-Landing-Challenge-&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwutuqwdztpnqskaprybs.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwutuqwdztpnqskaprybs.PNG" alt=" " width="800" height="384"&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.amazonaws.com%2Fuploads%2Farticles%2Fqmrzewvryfns0hqq9rmm.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqmrzewvryfns0hqq9rmm.PNG" alt=" " width="800" height="385"&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.amazonaws.com%2Fuploads%2Farticles%2Fahht2kwsrma00niw01sx.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahht2kwsrma00niw01sx.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.amazonaws.com%2Fuploads%2Farticles%2F2kbhqyd2jorhg2b1407i.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2kbhqyd2jorhg2b1407i.PNG" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;h4&gt;
  
  
  The Concept
&lt;/h4&gt;

&lt;p&gt;I started with the museum theme because museums are about discovery, and Halloween has a rich, often untold history. I wanted storytelling and education, not just scares.&lt;/p&gt;

&lt;h4&gt;
  
  
  Challenges &amp;amp; Solutions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Smooth animations&lt;/strong&gt;: The floating ghosts and bats needed randomness. I varied animation durations and delays per element and used transforms for organic arcs instead of straight lines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Timeline layout&lt;/strong&gt;: Alternating left/right on desktop, stacking on mobile took careful positioning. CSS Grid and Flexbox handled it, but getting margins right required multiple iterations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Form validation&lt;/strong&gt;: HTML5 validation wasn’t enough. I added real-time validation with inline error messages, ARIA attributes, and visual states (green for valid, red for errors). The date picker sets today as the minimum automatically.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What I'm Proud Of
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility&lt;/strong&gt;: Skip links, ARIA labels, keyboard navigation, focus indicators, and prefers-reduced-motion support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile menu&lt;/strong&gt;: Hamburger-to-X transition with staggered menu item animations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modals&lt;/strong&gt;: Replaced alerts with accessible modals that fade in, trap focus, and close on Escape or outside click.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: Vanilla JavaScript with IntersectionObserver for scroll animations—fast and smooth.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Tech Stack
&lt;/h4&gt;

&lt;p&gt;Pure HTML, CSS, and vanilla JavaScript—no build process. CSS Custom Properties make theme tweaks easy, and Grid/Flexbox handle layouts. backdrop-filter adds frosted glass effects with graceful degradation.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>frontendchallenge</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Frontend Challenge - Halloween Edition</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Fri, 31 Oct 2025 06:08:03 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/frontend-challenge-halloween-edition-4f79</link>
      <guid>https://forem.com/syedmuhammadaliraza/frontend-challenge-halloween-edition-4f79</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2025-10-15"&gt;Frontend Challenge - Halloween Edition, CSS Art&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;Classic Halloween imagery inspired this scene:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Haunted Victorian houses with flickering candlelit windows&lt;/li&gt;
&lt;li&gt;Jack-o-lanterns with glowing faces&lt;/li&gt;
&lt;li&gt;Bats in the night sky&lt;/li&gt;
&lt;li&gt;Floating ghosts&lt;/li&gt;
&lt;li&gt;Graveyards with tombstones&lt;/li&gt;
&lt;li&gt;Moonlit nights&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://codepen.io/Syed-Muhammad-Ali-Raza/pen/YPwOMbP" rel="noopener noreferrer"&gt;https://codepen.io/Syed-Muhammad-Ali-Raza/pen/YPwOMbP&lt;/a&gt;&lt;br&gt;
For complete code you can check out this Github repo &lt;br&gt;
&lt;a href="https://github.com/Syed-Muhammad-Ali-Raza/Halloween-Challenge" rel="noopener noreferrer"&gt;https://github.com/Syed-Muhammad-Ali-Raza/Halloween-Challenge&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;Started with a layout plan, then built elements from back to front:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sky &lt;/li&gt;
&lt;li&gt;house
&lt;/li&gt;
&lt;li&gt;pumpkin&lt;/li&gt;
&lt;li&gt;ghost &lt;/li&gt;
&lt;li&gt;bats&lt;/li&gt;
&lt;li&gt;tombstones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using &lt;strong&gt;clip-path&lt;/strong&gt; for complex shapes (pumpkin face features)&lt;br&gt;
Layering gradients and radial gradients for lighting&lt;br&gt;
Coordinating multiple animations with different delays&lt;br&gt;
and durations  Pseudo-elements (::before, ::after) &lt;br&gt;
for details Transform and animation keyframes for movement&lt;/p&gt;

</description>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
      <category>css</category>
    </item>
    <item>
      <title>GitHub repos that will make you a 10x software engineer:
1 Vision agent
 https://lnkd.in/e-ZHJTqc

2 System design
 https://lnkd.in/e7SUQ3ei

3 Public APIs
 https://lnkd.in/epWSyzqs

4 Tech interview handbook
 https://lnkd.in/e7EjsJNF</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Thu, 23 Oct 2025 13:38:04 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/github-repos-that-will-make-you-a-10x-software-engineer-1-vision-agent--3hkh</link>
      <guid>https://forem.com/syedmuhammadaliraza/github-repos-that-will-make-you-a-10x-software-engineer-1-vision-agent--3hkh</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://lnkd.in/e-ZHJTqc" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fopengraph.githubassets.com%2Fdca785517fb0c3d2344d41c7090d343a9b7644de77ebc031dbba05ae1532cea3%2FGetStream%2FVision-Agents" height="600" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://lnkd.in/e-ZHJTqc" rel="noopener noreferrer" class="c-link"&gt;
            GitHub - GetStream/Vision-Agents: Open Vision Agents by Stream. Build Vision Agents quickly with any model or video provider. Uses Stream's edge network for ultra-low latency.
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Open Vision Agents by Stream. Build Vision Agents quickly with any model or video provider. Uses Stream's edge network for ultra-low latency. - GetStream/Vision-Agents
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg" width="32" height="32"&gt;
          lnkd.in
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://lnkd.in/e7SUQ3ei" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.licdn.com%2Fscds%2Fcommon%2Fu%2Fimages%2Flogos%2Ffavicons%2Fv1%2Ffavicon.ico" height="64" class="m-0" width="64"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://lnkd.in/e7SUQ3ei" rel="noopener noreferrer" class="c-link"&gt;
            LinkedIn
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            This link will take you to a page that’s not on LinkedIn
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.licdn.com%2Faero-v1%2Fsc%2Fh%2Fal2o9zrvru7aqj8e1x2rzsrca" width="64" height="64"&gt;
          lnkd.in
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://lnkd.in/epWSyzqs" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.licdn.com%2Fscds%2Fcommon%2Fu%2Fimages%2Flogos%2Ffavicons%2Fv1%2Ffavicon.ico" height="64" class="m-0" width="64"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://lnkd.in/epWSyzqs" rel="noopener noreferrer" class="c-link"&gt;
            LinkedIn
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            This link will take you to a page that’s not on LinkedIn
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.licdn.com%2Faero-v1%2Fsc%2Fh%2Fal2o9zrvru7aqj8e1x2rzsrca" width="64" height="64"&gt;
          lnkd.in
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://lnkd.in/e7EjsJNF" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.licdn.com%2Fscds%2Fcommon%2Fu%2Fimages%2Flogos%2Ffavicons%2Fv1%2Ffavicon.ico" height="64" class="m-0" width="64"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://lnkd.in/e7EjsJNF" rel="noopener noreferrer" class="c-link"&gt;
            LinkedIn
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            This link will take you to a page that’s not on LinkedIn
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.licdn.com%2Faero-v1%2Fsc%2Fh%2Fal2o9zrvru7aqj8e1x2rzsrca" width="64" height="64"&gt;
          lnkd.in
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>JavaScript feels tricky until you master its language. Once you truly understand these core words, the rest becomes 10x easier. Strong concepts = Clean code = Confident developer. What was the one JavaScript term that finally clicked for you?</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Thu, 18 Sep 2025 13:08:33 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/javascript-feels-tricky-until-you-master-its-language-once-you-truly-understand-these-core-words-374k</link>
      <guid>https://forem.com/syedmuhammadaliraza/javascript-feels-tricky-until-you-master-its-language-once-you-truly-understand-these-core-words-374k</guid>
      <description></description>
    </item>
    <item>
      <title>Frontend Developer Roadmap for Junior &amp; Senior Developer's</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Mon, 16 Dec 2024 17:04:29 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/frontend-developer-roadmap-for-junior-senior-developers-hei</link>
      <guid>https://forem.com/syedmuhammadaliraza/frontend-developer-roadmap-for-junior-senior-developers-hei</guid>
      <description>&lt;h2&gt;
  
  
  ♣ Frontend Developer Roadmap For Junior Developers:
&lt;/h2&gt;

&lt;p&gt;🧩 Phase 1: Foundations of Frontend Development  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;HTML, CSS, JavaScript  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Semantic HTML
&lt;/li&gt;
&lt;li&gt;Modern CSS (Flexbox, Grid, Variables)
&lt;/li&gt;
&lt;li&gt;JavaScript ES6+ features (let/const, classes, async/await)
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;DOM Manipulation  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event handling and propagation
&lt;/li&gt;
&lt;li&gt;Working with the DOM API
&lt;/li&gt;
&lt;li&gt;Basic performance considerations
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Version Control  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git basics (branching, merging, pull requests)
&lt;/li&gt;
&lt;li&gt;Working with GitHub/GitLab/Bitbucket
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩 Phase 2: UI Development and Design  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CSS Frameworks &amp;amp; Preprocessors  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TailwindCSS, Bootstrap, SASS/SCSS
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Responsive Design  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Media queries
&lt;/li&gt;
&lt;li&gt;Mobile-first vs Desktop-first design
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

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

&lt;ul&gt;
&lt;li&gt;Introduction to React, Vue, or Angular
&lt;/li&gt;
&lt;li&gt;Building reusable components
&lt;/li&gt;
&lt;li&gt;State and props management
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩 Phase 3: Data Fetching and APIs  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;HTTP Basics  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST APIs, GraphQL basics
&lt;/li&gt;
&lt;li&gt;Fetch API and Axios for API requests
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;State Management  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local state (useState, Vue's &lt;code&gt;data&lt;/code&gt;)
&lt;/li&gt;
&lt;li&gt;Context API for global state
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Error Handling  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic error handling and retries
&lt;/li&gt;
&lt;li&gt;Loading and error states in the UI
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩Phase 4: Performance Optimization  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Web Performance Metrics  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Core Web Vitals (LCP, FID, CLS)
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Asset Optimization  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Image compression and lazy loading
&lt;/li&gt;
&lt;li&gt;Minification of CSS/JS
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Rendering Basics  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Client-Side Rendering (CSR)
&lt;/li&gt;
&lt;li&gt;Understanding rendering lifecycle in React/Vue
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩Phase 5: Security Basics  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Common Vulnerabilities  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;XSS (Cross-Site Scripting)
&lt;/li&gt;
&lt;li&gt;CSRF (Cross-Site Request Forgery)
&lt;/li&gt;
&lt;li&gt;CORS (Cross-Origin Resource Sharing)
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

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

&lt;ul&gt;
&lt;li&gt;Secure cookies and basic HTTP headers
&lt;/li&gt;
&lt;li&gt;Sanitizing user input
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩Phase 6: Testing and Debugging  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Debugging Tools  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome DevTools basics
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Unit Testing  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction to Jest, Mocha, or Jasmine
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Basic Monitoring  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser console logs
&lt;/li&gt;
&lt;li&gt;Simple crash/error reports
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩 Phase 7: Build Tools and Deployment  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Tooling  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NPM/Yarn package managers
&lt;/li&gt;
&lt;li&gt;Introduction to bundlers like Webpack, Vite, or Parcel
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Deployment  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hosting with Vercel, Netlify, or GitHub Pages
&lt;/li&gt;
&lt;li&gt;CI/CD basics
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Junior Engineers: Focus on mastering the basics, frameworks, and deployments. Build confidence in delivering small to medium features.  &lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Senior Engineers: Dive deep into architecture, testing, performance optimization, and scalability while mentoring others.  &lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔥 Roadmap For Senior Frontend Engineers
&lt;/h2&gt;

&lt;p&gt;🧩 Phase 1: Advanced JavaScript and Frameworks  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Deep Dive into JavaScript  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Closures, hoisting, event loop, and prototypes
&lt;/li&gt;
&lt;li&gt;Performance optimization (Debouncing, Throttling)
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Advanced Framework Knowledge  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React: Advanced hooks, memoization, error boundaries
&lt;/li&gt;
&lt;li&gt;Vue: Vuex/Pinia state management
&lt;/li&gt;
&lt;li&gt;Angular: Dependency Injection and RxJS
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Server-Side Rendering (SSR)  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js for React
&lt;/li&gt;
&lt;li&gt;Nuxt.js for Vue
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩 Phase 2: Architecture and State Management  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;State Management at Scale  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redux, Zustand, Recoil (React)
&lt;/li&gt;
&lt;li&gt;Pinia/Vuex (Vue)
&lt;/li&gt;
&lt;li&gt;Understanding global vs local state
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

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

&lt;ul&gt;
&lt;li&gt;Container vs Presentational components
&lt;/li&gt;
&lt;li&gt;Design Systems and reusable libraries
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;API Handling  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GraphQL basics and Apollo Client
&lt;/li&gt;
&lt;li&gt;Error boundaries, retries, and fallbacks
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩 Phase 3: Performance Optimization  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Core Web Vitals  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LCP, FID, CLS
&lt;/li&gt;
&lt;li&gt;Code splitting and lazy loading
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Optimization Techniques  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bundle analysis and tree shaking
&lt;/li&gt;
&lt;li&gt;Server-Side Rendering and pre-rendering
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Advanced Rendering Concepts  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Virtual DOM, reconciliation
&lt;/li&gt;
&lt;li&gt;Concurrent rendering in React
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩Phase 4: Testing and Debugging  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Advanced Testing  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unit testing: Jest, Mocha
&lt;/li&gt;
&lt;li&gt;Integration testing with React Testing Library or Cypress
&lt;/li&gt;
&lt;li&gt;Snapshot testing
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Error Monitoring and Debugging  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tools: Sentry, LogRocket, or Datadog
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩 Phase 5: Security and Best Practices  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Web Security  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;XSS, CSRF, CORS
&lt;/li&gt;
&lt;li&gt;Content Security Policies (CSP)
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Secure Cookies and Storage  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HttpOnly, Secure flags
&lt;/li&gt;
&lt;li&gt;Handling tokens (JWTs) safely
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩Phase 6: Advanced Tooling and CI/CD  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Tooling  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Webpack, Rollup, or Vite for advanced bundling
&lt;/li&gt;
&lt;li&gt;ESLint, Prettier for code consistency
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;CI/CD  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrate pipelines for automated builds and deployments
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Code Review and Collaboration  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PR best practices and design discussions
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧩Phase 7: Scalability and Architecture  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Micro-Frontend Architecture  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Breaking apps into smaller parts for maintainability
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Monorepos  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Managing large-scale codebases with tools like Turborepo or Nx
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Progressive Web Apps (PWA)  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service workers, offline caching
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>roadmap</category>
    </item>
    <item>
      <title>Advanced JavaScript Concepts | Revised Version for Jr Dev's</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Sun, 29 Sep 2024 14:22:28 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/advanced-javascript-concepts-revised-version-for-jr-devs-36n2</link>
      <guid>https://forem.com/syedmuhammadaliraza/advanced-javascript-concepts-revised-version-for-jr-devs-36n2</guid>
      <description>&lt;h3&gt;
  
  
  JavaScript Revised Version
&lt;/h3&gt;

&lt;h2&gt;
  
  
  1. let, var, and const
&lt;/h2&gt;

&lt;h3&gt;
  
  
  var
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  let
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  const
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Works&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;p&gt;A &lt;strong&gt;closure&lt;/strong&gt; is created while a function "remembers" the variables from its outer scope, even after that scope has exited. Closures are important while managing features internal different features, where the internal function keeps access to the variables of the outer function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;outer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&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;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;inner&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;outer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nf"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// 1&lt;/span&gt;
&lt;span class="nf"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// 2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;p&gt;&lt;strong&gt;Currying&lt;/strong&gt; is a way wherein a function takes a couple of arguments one after the other, returning a new function for each argument. It transforms a feature that takes all arguments right now into one that takes them sequentially.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;multiply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&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="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&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="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;double&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;multiply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// 10&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;h2&gt;
  
  
  4. Promises
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Promises&lt;/strong&gt; are used to handle asynchronous operations. A promise represents an operation that hasn't completed but but is anticipated to inside the future. It can be in one in all 3 states:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pending&lt;/strong&gt;: Initial country, neither fulfilled nor rejected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fulfilled&lt;/strong&gt;: Operation finished successfully.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rejected&lt;/strong&gt;: Operation failed.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myPromise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Success!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;myPromise&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;value&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;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;// "Success!"&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&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;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Promises are extensively utilized in present day JavaScript to address async code in a cleanser way in comparison to callbacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Hoisting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hoisting&lt;/strong&gt; is JavaScript's default conduct of moving declarations to the top of their scope earlier than code execution. Only the declarations are hoisted, now not the initializations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// undefined&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the case of &lt;code&gt;var&lt;/code&gt;, the assertion is hoisted, but the fee venture takes place later. In evaluation, &lt;code&gt;permit&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt; are not initialized till the code executes them, leading to a "temporal lifeless quarter" where they can't be accessed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. IIFE (Immediately Invoked Function Expression)
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;IIFE&lt;/strong&gt; is a function that is finished straight away after it is described. IIFEs are useful for growing a private scope to avoid polluting the global scope, which was specifically essential before the arrival of modules.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I am an IIFE&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The feature is wrapped interior parentheses and is invoked at once after the remaining parentheses.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  7. First-Class Functions (Citizen Functions)
&lt;/h2&gt;

&lt;p&gt;In JavaScript, functions are &lt;strong&gt;great residents&lt;/strong&gt;. This method that they can be assigned to variables, passed as arguments to other functions, and returned from other features.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;greet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Hello, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;sayHello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;greetFunction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;greetFunction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;sayHello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Hello, John&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  8. Variable Functions (Function Expressions)
&lt;/h2&gt;

&lt;p&gt;In JavaScript, you may outline functions in two ways: the usage of &lt;strong&gt;function declarations&lt;/strong&gt; and &lt;strong&gt;function expressions&lt;/strong&gt;. A function expression is while you assign a feature to a variable, permitting it to behave like every other variable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&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="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// 5&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Function expressions allow for extra dynamic conduct in comparison to feature declarations.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Callbacks
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;callback&lt;/strong&gt; is a feature this is surpassed as a controversy to any other function and is achieved after a few operation is whole. Callbacks are closely utilized in JavaScript for asynchronous operations, which include dealing with user occasions or fetching information from a server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;fetchData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Data loaded&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;fetchData&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// "Data loaded"&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>System Design Frontend Development</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Wed, 31 Jul 2024 11:14:09 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/system-design-frontend-development-2hgh</link>
      <guid>https://forem.com/syedmuhammadaliraza/system-design-frontend-development-2hgh</guid>
      <description>&lt;p&gt;System Design Overview for Low and High Level &lt;/p&gt;

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

&lt;/div&gt;
&lt;h2&gt;
  
  
  Functional
&lt;/h2&gt;

&lt;p&gt;-Demand/supply&lt;br&gt;
-modules&lt;br&gt;
-user manangemnt &lt;br&gt;
-support nd help&lt;br&gt;
-paymant gateway &lt;br&gt;
-account managment&lt;br&gt;
-cart page &lt;br&gt;
-product listing&lt;br&gt;
-pricing and subscription&lt;/p&gt;
&lt;h2&gt;
  
  
  Non-functional
&lt;/h2&gt;

&lt;p&gt;-mobile responice &lt;br&gt;
-inernet &lt;br&gt;
-caching&lt;br&gt;
-security &lt;br&gt;
-customer side rendering &lt;br&gt;
-server side rendering&lt;br&gt;
-CI/CD&lt;br&gt;
-Internationlication&lt;br&gt;
-offline support &lt;br&gt;
-authentication &lt;br&gt;
-authorization&lt;br&gt;
-performance web vitals&lt;br&gt;
-image optimization assets webp , png , jpeg , svg etc &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            Scoping
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Functional
&lt;/h2&gt;

&lt;p&gt;-Demand &lt;br&gt;
-Module &lt;br&gt;
   Product Listing , Cart Page &lt;br&gt;
-Features&lt;br&gt;
    -Search&lt;br&gt;
    -Filter&lt;br&gt;
    -Product Details&lt;br&gt;
    -Reviews&lt;br&gt;
    -add item to cart&lt;br&gt;
    -add item to whishlist&lt;br&gt;
    -price breakups&lt;br&gt;
    -add product&lt;br&gt;
    -remove product&lt;/p&gt;

&lt;p&gt;---Non Functional&lt;/p&gt;

&lt;p&gt;-Desktop&lt;br&gt;
-Responsiveness&lt;br&gt;
-Accescililbity like disable person etc &lt;br&gt;
-Asset Optimization &lt;br&gt;
-Caching &lt;br&gt;
-Server Side Rendering &lt;br&gt;
-Client Side Rendering&lt;/p&gt;

&lt;p&gt;Tech Choices&lt;/p&gt;

&lt;p&gt;-Libraary / Framework&lt;br&gt;
-State Managment &lt;br&gt;
-Folder Structure &lt;br&gt;
-Packages &lt;br&gt;
-Dependencies like canvas ,webRTC&lt;br&gt;
-Build Tool &lt;br&gt;
   Webpack , Rollup ,Parcel&lt;/p&gt;

&lt;p&gt;Componnet &lt;/p&gt;

&lt;p&gt;-Routing &lt;br&gt;
-Data Sharing &lt;br&gt;
-Component Hierachy&lt;/p&gt;

&lt;p&gt;Data API &amp;amp; Protocols &amp;amp; Implementation&lt;/p&gt;

&lt;p&gt;---Protocol&lt;br&gt;
    -Rest/ GraphQL / SSE /rPF&lt;br&gt;
    -JSON/ Protocol Buffers&lt;/p&gt;

&lt;p&gt;--Implementation &lt;br&gt;
    -Pagination / Infinte Scroll&lt;br&gt;
    -Throatling /Debouncing &lt;/p&gt;

&lt;p&gt;---APIs&lt;br&gt;
    -getProductList()&lt;br&gt;
    -getProductDetails()&lt;br&gt;
    -addProduct()&lt;br&gt;
    -removeProduct()&lt;/p&gt;

&lt;p&gt;---Data Modeling &lt;br&gt;
    -URL&lt;br&gt;
    -Method&lt;br&gt;
    -Request (query , body)&lt;br&gt;
    -Response (Data , Error)&lt;br&gt;
    -Status Code &lt;/p&gt;

&lt;p&gt;---Component&lt;/p&gt;

&lt;p&gt;-State /Props&lt;br&gt;
-Event Handling&lt;br&gt;
-Customization Support&lt;br&gt;
-Theming &lt;br&gt;
-Resuable &lt;br&gt;
-Data Source &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        Overview OF System Design 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;System Design&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;-Requirments &lt;br&gt;
-Scoping &lt;br&gt;
-Component Architecture&lt;br&gt;
-Data API and Implementation&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product Sense&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;-Requirments &lt;br&gt;
-Scoping &lt;br&gt;
-Data API and Implementation&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;UI Architecture *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;-Requirments &lt;br&gt;
-Scoping &lt;br&gt;
-Tech Choices&lt;br&gt;
-Componnet Architecture&lt;br&gt;
-Data API and Implementation&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Machine Coding /component Design *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;-Component Architecture&lt;br&gt;
-Data API &amp;amp; Implementation&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>frontend</category>
    </item>
    <item>
      <title>5 Layer of Softwares</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Wed, 03 Jul 2024 04:40:03 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/5-layer-of-softwares-2lc6</link>
      <guid>https://forem.com/syedmuhammadaliraza/5-layer-of-softwares-2lc6</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.amazonaws.com%2Fuploads%2Farticles%2F2yjsensv6v7l6hdij7b7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yjsensv6v7l6hdij7b7.png" alt=" " width="569" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devto</category>
      <category>codenewbie</category>
      <category>software</category>
    </item>
    <item>
      <title>Profile Card UI using Html &amp; Css - flexbox</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Sat, 29 Jun 2024 15:49:24 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/pro-file-card-ui-using-html-css-flexbox-518f</link>
      <guid>https://forem.com/syedmuhammadaliraza/pro-file-card-ui-using-html-css-flexbox-518f</guid>
      <description>&lt;h2&gt;
  
  
  Profile CARD UI
&lt;/h2&gt;

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

&lt;h3&gt;
  
  
  HTML
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8" /&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&amp;gt;
    &amp;lt;link rel="stylesheet" href="style.css" /&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"&amp;gt;
    &amp;lt;title&amp;gt;Profile Card&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div class="parent"&amp;gt;
      &amp;lt;div class="card"&amp;gt;
        &amp;lt;div class="card-header"&amp;gt;
            &amp;lt;img class="pro-image"  src="image.jpg" alt="Profile Image"&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class="card-body"&amp;gt;
          &amp;lt;div class="profile "&amp;gt;
            &amp;lt;h2&amp;gt;Syed Muhammad ALi Raza&amp;lt;/h2&amp;gt;
            &amp;lt;h6&amp;gt;@syed-muhammad-ali-raza&amp;lt;/h6&amp;gt;
          &amp;lt;/div&amp;gt;
          &amp;lt;div class="social-link"&amp;gt;
            &amp;lt;a href="#" class="fa fa-facebook"&amp;gt;&amp;lt;/a&amp;gt;
            &amp;lt;a href="#" class="fa fa-twitter"&amp;gt;&amp;lt;/a&amp;gt;
            &amp;lt;a href="#" class="fa fa-google"&amp;gt;&amp;lt;/a&amp;gt;
            &amp;lt;a href="#" class="fa fa-linkedin"&amp;gt;&amp;lt;/a&amp;gt;
            &amp;lt;a href="#" class="fa fa-pinterest"&amp;gt;&amp;lt;/a&amp;gt;
          &amp;lt;/div&amp;gt;
          &amp;lt;div class="description"&amp;gt;
            JavaScript | React js | Next.js Frontend Engineer | Software Engineer | Software Developer | Web3.0 | API Integration | T-Shaped Engineer | MUI | Tailwind | SDE | Microfrontend
          &amp;lt;/div&amp;gt;
          &amp;lt;div class="buttons"&amp;gt;
            &amp;lt;button&amp;gt;Follow&amp;lt;/button&amp;gt;
            &amp;lt;button&amp;gt;Message&amp;lt;/button&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  CSS
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.fa {
    padding: 10px;
    font-size: 20px;
    width: 20px;
    text-align: center;
    text-decoration: none;
    margin: 5px 1px;
    border-radius: 50%;
    color: white;
  }

  .fa-facebook { background: #3B5998; }
  .fa-twitter { background: #55ACEE; }
  .fa-google { background: #dd4b39; }
  .fa-linkedin { background: #007bb5; }
  .fa-pinterest { background: #cb2027; }

  .card-header {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 20px;
  }

  .card {
    background-color: black;
    color: white;
    border-radius: 10px;
    overflow: hidden;
    width: 25%;
    margin: auto;
  }

  .pro-image {
    width: 130px;
    height: 130px;
    border-radius: 50%;
  }

  .parent {
    background-color: white;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
  }

  .buttons {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 20px;

  }

  button {
    color: black;
    background-color: white;
    padding: 10px;
    border-radius: 20px;
    border: none;
    cursor: pointer;
    font-size: 16px;
    margin-left: 20px;
  }

  .card-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 20px;
  }

  .description {
    margin-top: 20px;
    text-align: center;
  }

  .profile h2,
  .profile h6 {
    margin: 5px 0;
  }

  .social-link {
    display: flex;
    justify-content: center;
    margin-top: 20px;
  }
  .profile{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is the github Repo Link &lt;a href="https://github.com/Syed-Muhammad-Ali-Raza/frontend-100/tree/main/1" rel="noopener noreferrer"&gt;Github Repo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>wixstudiochallenge</category>
      <category>html</category>
    </item>
    <item>
      <title>Conflict-Free Replicated Data Types (CRDTs) in Frontend Development</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Tue, 18 Jun 2024 21:09:24 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/conflict-free-replicated-data-types-crdts-in-frontend-development-4nh3</link>
      <guid>https://forem.com/syedmuhammadaliraza/conflict-free-replicated-data-types-crdts-in-frontend-development-4nh3</guid>
      <description>&lt;p&gt;Data consistency in distributed systems is a challenging task in today's advanced development environment. As web applications increasingly adopt real-time collaboration characteristics, the need for reliable data synchronization mechanisms is critical. The conflict-free replica data type (CRDT) appears as a promising solution, enabling seamless and conflict-free data replication between multiple clients. This article explores the nature, types, and applications of CRDT in external development.&lt;/p&gt;

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

&lt;h4&gt;
  
  
  What is CRDT?
&lt;/h4&gt;

&lt;p&gt;CRDTs, or contention-free replication data types, are data structures designed to manage the complexity of distributed systems by providing end-to-end consistency without requiring coordination between nodes. Unlike traditional approaches that rely on centralized servers or complex conflict resolution protocols, CRDT allows each replica to apply updates independently and resolve conflicts automatically based on predefined rules.&lt;/p&gt;

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

&lt;p&gt;The main principles of CRDT are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Idempotence&lt;/strong&gt;: The procedure can be used several times without changing the result other than the initial program.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commutativity&lt;/strong&gt;: The operation can be used in any order and still produce the same result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Associativity&lt;/strong&gt;: The operation group does not affect the final result.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This principle allows maintaining consistency between distributed nodes, even in the case of system fragments or asynchronous updates.&lt;/p&gt;

&lt;h4&gt;
  
  
  Types of CRDTs
&lt;/h4&gt;

&lt;p&gt;CRDT can be broadly divided into two types: condition-based (convergent) and application-based (commutative).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;State-based CRDTs (CvRDTs)&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In state-based CRDTs, each replica maintains a local state that can be combined with the states of other replicas. Fusion is designed to be practical, cohesive, and seamless. An example of a state-based CRDT is a Grow-Only Counter, where counters from different copies are merged.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;""Operation-based CRDTs (CmRDTs)"":&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each step is designed to ensure that the workflow does not affect the final state. A common example is a set of Additions, where additions and deletions are resolved by assigning values ​​to the additions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Use of CRDTs in front-end development
&lt;/h4&gt;

&lt;p&gt;CRDTs have found important applications in future development, especially in real-time collaborative applications, offline-first applications, and decentralized applications.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Real-time collaboration apps&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Apps like Google Docs and Figma rely on real-time collaboration, where multiple users can edit the same document at the same time. By using CRDTs, this application ensures seamless deployment and integration between all users, even when offline.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Offline-first application&lt;/strong&gt;: &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In scenarios where users may experience remote communication, offline-first application becomes crucial. CRDTs allow these applications to continue to run offline, allowing users to make local changes and automatically sync those changes once connectivity is restored.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Decentralized Applications&lt;/strong&gt;: 
With the proliferation of decentralized web (Web3) and peer-to-peer applications, it is difficult to maintain data consistency without a centralized authority. CRDT provides a way to achieve consensus and data consistency across distributed nodes, making it ideal for decentralized applications.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Implementation of CRDTs in front-end development
&lt;/h4&gt;

&lt;p&gt;Applying CRDTs in front-end development includes choosing the appropriate CRDT type based on application requirements and integrating it with the front-end. Libraries and frameworks such as Automerge, Yjs, and Logotip provide a ready-to-use CRDT process, simplifying the development process.&lt;/p&gt;

&lt;p&gt;For example, enabling Automerge in React to edit text together includes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initialization&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Automatically set the status of the initial document.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Updates and Sync&lt;/strong&gt;: &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Apply changes and sync with other clients using the Automerge API.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rendering&lt;/strong&gt;: &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Rendering the state of the document in the meta component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Automerge&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;automerge&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;WebSocketProvider&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;y-websocket&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;CollaborativeEditor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setDoc&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;Automerge&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&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;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setText&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;wsProvider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;WebSocketProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;wss://your-websocket-server&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;wsProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;document-update&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;update&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setDoc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Automerge&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;applyChanges&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;update&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;wsProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleChange&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newDoc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Automerge&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;change&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newText&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="nf"&gt;setDoc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newDoc&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nf"&gt;setText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newText&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;textarea&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;onChange&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChange&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;CollaborativeEditor&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>frontend</category>
      <category>devto</category>
      <category>community</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Custom Browser Engines Frontend Development</title>
      <dc:creator>Syed Muhammad Ali Raza</dc:creator>
      <pubDate>Mon, 17 Jun 2024 07:30:02 +0000</pubDate>
      <link>https://forem.com/syedmuhammadaliraza/custom-browser-engines-frontend-development-2e0o</link>
      <guid>https://forem.com/syedmuhammadaliraza/custom-browser-engines-frontend-development-2e0o</guid>
      <description>&lt;p&gt;Innovation is a constant in the dynamic realm of advanced development, driving industry forward in extraordinary ways. One of the more interesting developments in recent years has been the emergence of dedicated browser engines. Designed to meet specific needs that mainstream browsers can't answer, this engine takes a unique approach to web presentation and performance.&lt;/p&gt;

&lt;h4&gt;
  
  
  Understand the Core Browser Engine
&lt;/h4&gt;

&lt;p&gt;A browser engine, also known as a rendering engine, is the core software of a web browser that interprets HTML, CSS, JavaScript, and other web technologies to display web pages. Popular examples include Blink (used by Google Chrome), Gecko (used by Mozilla Firefox), and WebKit (used by Safari).&lt;/p&gt;

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

&lt;p&gt;Custom browser  engines are special options designed for specific use cases, often different from general purpose engines to improve engine performance, security, or performance in general areas. These engines can be built from scratch or as forks of existing engines that fit specific requirements.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Custom Browser Engines?
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Optimization&lt;/strong&gt;:&lt;br&gt;
Custom browser engines can be customized in ways that general purpose engines cannot. By removing unnecessary features and focusing on specific functions, this engine can result in faster load times and better performance for target applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advanced Security&lt;/strong&gt;:&lt;br&gt;
In security-sensitive environments, such as financial institutions or government agencies, specific browser engines may implement stricter security protocols. It can include advanced security features to minimize attack points and ensure strict compliance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Event Specialization&lt;/strong&gt;:&lt;br&gt;
Applications that require special display methods, such as augmented reality (AR) or virtual reality (VR), benefit greatly from custom engines. This engine can be optimized to handle complex graphics and high-speed instructions, providing a superior user experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feature Test&lt;/strong&gt;:&lt;br&gt;
Developers and researchers can use dedicated engines to experiment with new web technologies and features without waiting for mainstream browsers to adopt them. This can accelerate innovation and provide valuable insight into future web standards.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Challenges of Custom Browser Engines
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Development and Maintenance&lt;/strong&gt;:&lt;br&gt;
Creating and maintaining a custom browser engine is resource intensive. It requires a team of skilled professionals with deep knowledge of web technologies, display processes and security practices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Compatibility Problem&lt;/strong&gt;:&lt;br&gt;
Ensuring compliance with large amounts of web content is difficult. Custom engines need to be updated regularly to handle new web standards and ensure consistent performance across different websites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limited Adoption&lt;/strong&gt;:&lt;br&gt;
Custom search engines may face limited adoption due to their nature. It can be difficult to get users and developers to adopt a newer engine over an established one, especially if the benefits aren't immediately obvious.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security Risk&lt;/strong&gt;:&lt;br&gt;
While dedicated machines can improve security, they can also introduce new vulnerabilities if not properly managed. Regular security checks and updates are required to mitigate this risk.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Case studies and applications
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Company Solutions&lt;/strong&gt;:&lt;br&gt;
Some companies develop custom browser engines for their internal applications. For example, financial institutions can build machines with enhanced encryption and secure processing capabilities to ensure their sensitive operations are protected from cyber threats.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Games with VR/AR&lt;/strong&gt;:&lt;br&gt;
Animation plays an important role in the gaming industry and AR/VR applications. An engine optimized for 3D rendering and low latency can deliver an immersive experience that general-purpose browsers have to contend with.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Research and Development&lt;/strong&gt;:
Research organizations and technology companies often experiment with specialized engines to test new web standards and technologies. It helps shape the future of web development by providing insight and real-world data on the effectiveness of proposed changes.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h4&gt;
  
  
  The Future of Custom Browser Engines
&lt;/h4&gt;

&lt;p&gt;The future of specialized search engines in advanced development seems promising due to the continuous need for optimal performance, enhanced security and innovative features. As the web evolves, so does the demand for specialized machines that can meet the basic requirements.&lt;/p&gt;

&lt;h4&gt;
  
  
  Setting Up the Project
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initialize the Project&lt;/strong&gt;:
First, create a new directory
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;mkdir &lt;/span&gt;custom-browser-engine
   &lt;span class="nb"&gt;cd &lt;/span&gt;custom-browser-engine
   npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install Puppeteer&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install &lt;/span&gt;puppeteer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Implementing the Custom Browser Engine
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create the Custom Engine Script&lt;/strong&gt;:
Create a file named &lt;code&gt;customEngine.js&lt;/code&gt; and add the following code:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;puppeteer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;puppeteer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

   &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="c1"&gt;// Launch a new browser instance&lt;/span&gt;
     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;puppeteer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;newPage&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

     &lt;span class="c1"&gt;// Set the URL you want to visit&lt;/span&gt;
     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://example.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

     &lt;span class="c1"&gt;// Navigate to the URL&lt;/span&gt;
     &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;goto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;waitUntil&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;networkidle2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

     &lt;span class="c1"&gt;// Manipulate the page content&lt;/span&gt;
     &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;evaluate&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;backgroundColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lightblue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
       &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;h1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
       &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="nx"&gt;header&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Custom Browser Engine Demo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
       &lt;span class="p"&gt;}&lt;/span&gt;
     &lt;span class="p"&gt;});&lt;/span&gt;


     &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;screenshot&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;screenshot.png&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;fullPage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

     &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Screenshot taken and saved as screenshot.png&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


     &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
   &lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the Custom Engine Script&lt;/strong&gt;:
Run the script using Node.js.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   node customEngine.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Explanation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Launching the Browser&lt;/strong&gt;:&lt;br&gt;
The &lt;code&gt;puppeteer.launch()&lt;/code&gt; function starts a new instance of Chromium, which Puppeteer will control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Navigating to a URL&lt;/strong&gt;:&lt;br&gt;
The &lt;code&gt;page.goto(url, { waitUntil: 'networkidle2' })&lt;/code&gt; command navigates to the specified URL and waits until the network is idle (i.e., no more than 2 network connections are active).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Manipulating Page Content&lt;/strong&gt;:&lt;br&gt;
The &lt;code&gt;page.evaluate()&lt;/code&gt; function allows you to execute JavaScript code in the context of the webpage. In this example, it changes the background color of the page and modifies the text of the first &lt;code&gt;h1&lt;/code&gt; element.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Taking a Screenshot&lt;/strong&gt;:&lt;br&gt;
The &lt;code&gt;page.screenshot()&lt;/code&gt; function captures a screenshot of the page and saves it to the specified file path.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Closing the Browser&lt;/strong&gt;:&lt;br&gt;
Finally, the script closes the browser using &lt;code&gt;browser.close()&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Customizing Further
&lt;/h3&gt;

&lt;p&gt;You can customize this script further to implement more complex features, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extracting Data&lt;/strong&gt;:&lt;br&gt;
Use Puppeteer to extract data from web pages and save it in various formats (e.g., JSON, CSV).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simulating User Interactions&lt;/strong&gt;:&lt;br&gt;
Automate user interactions like clicking buttons, filling forms, and navigating through pages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Testing&lt;/strong&gt;:&lt;br&gt;
Measure and analyze the performance of web pages under different conditions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Custom browser engines represent a fascinating frontier in frontend development. They offer tailored solutions that push the boundaries of what is possible on the web, addressing specific needs that mainstream browsers may not fully meet.&lt;/p&gt;

&lt;p&gt;If you have any query than DM me on LinkedIn &lt;a href="https://www.linkedin.com/in/syed-muhammad-ali-raza/" rel="noopener noreferrer"&gt;Syed Muhammad Ali Raza&lt;/a&gt; &lt;/p&gt;

</description>
      <category>frontend</category>
      <category>javascript</category>
      <category>devto</category>
    </item>
  </channel>
</rss>
