<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abhishek Sachan</title>
    <description>The latest articles on DEV Community by Abhishek Sachan (@abhishek-sachan).</description>
    <link>https://dev.to/abhishek-sachan</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%2F1444056%2F39286a5f-08b6-4449-b52b-7a86815f1e2d.png</url>
      <title>DEV Community: Abhishek Sachan</title>
      <link>https://dev.to/abhishek-sachan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhishek-sachan"/>
    <language>en</language>
    <item>
      <title>How Not to Use AI in Software Development</title>
      <dc:creator>Abhishek Sachan</dc:creator>
      <pubDate>Mon, 30 Dec 2024 12:15:19 +0000</pubDate>
      <link>https://dev.to/abhishek-sachan/how-not-to-use-ai-in-software-development-1l69</link>
      <guid>https://dev.to/abhishek-sachan/how-not-to-use-ai-in-software-development-1l69</guid>
      <description>&lt;p&gt;AI in software development offers incredible potential for productivity gains, yet its improper use often leads to poor outcomes. This article explores common pitfalls in AI-assisted coding and provides a practical guide on using AI effectively to enhance, rather than hinder, software quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Status Quo of Development with AI
&lt;/h2&gt;

&lt;p&gt;AI tools are increasingly becoming essential in software development, yet the approaches to their use vary widely between junior and senior developers, resulting in contrasting outcomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Senior Developers&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Approach AI as a productivity enhancer that complements their understanding of software engineering principles.&lt;/li&gt;
&lt;li&gt;Employ AI tools for tasks like generating prototypes, automating repetitive coding tasks, and exploring multiple solutions to complex problems.&lt;/li&gt;
&lt;li&gt;Critically assess and refine AI-generated code by:

&lt;ul&gt;
&lt;li&gt;Ensuring modularity for better reusability and easier integration.&lt;/li&gt;
&lt;li&gt;Documenting and structuring the code to maintain clarity and future adaptability.&lt;/li&gt;
&lt;li&gt;Strengthening scalability to meet evolving demands.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Integrate their expertise to address gaps left by AI, such as managing edge cases, refining logic, and ensuring compliance with project-specific standards.&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Junior Developers&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Often overly depend on AI, mistakenly treating its outputs as ready-to-deploy solutions without sufficient validation.&lt;/li&gt;
&lt;li&gt;Tend to bypass essential critical review steps, resulting in code that:

&lt;ul&gt;
&lt;li&gt;Lacks resilience and may break down when encountering unexpected conditions (commonly referred to as “House of cards” code).&lt;/li&gt;
&lt;li&gt;Ignores essential elements like edge cases, performance tuning, and sound architecture.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Face difficulties understanding or debugging AI-generated solutions due to gaps in foundational programming knowledge.&lt;/li&gt;

&lt;li&gt;Rely heavily on AI for decision-making, missing opportunities to develop problem-solving skills and practical coding intuition.&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Cost of AI Development
&lt;/h2&gt;

&lt;p&gt;While AI offers remarkable speed and efficiency, its use in development comes with significant hidden costs and challenges that can impact both productivity and code quality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Knowledge Paradox&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI accelerates the coding process but often skips over the foundational learning developers need to fully understand their work.&lt;/li&gt;
&lt;li&gt;Developers relying heavily on AI might produce functioning code without grasping its underlying principles, creating a shallow knowledge base.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Low-Quality Code&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI tools may generate code that lacks essential qualities such as modularity, clarity, and scalability.&lt;/li&gt;
&lt;li&gt;Such code often results in technical debt, requiring more resources for future updates or integration.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Missed Edge Cases&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI tends to overlook uncommon or complex edge cases, leading to vulnerabilities that might go unnoticed during development but surface in production.&lt;/li&gt;
&lt;li&gt;These oversights can result in crashes, bugs, or poor user experiences.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Poor Performance&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Efficiency is inconsistent in AI-generated code, with solutions often failing to meet performance benchmarks.&lt;/li&gt;
&lt;li&gt;Suboptimal code can lead to slower application response times or higher resource consumption, reducing scalability.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Overengineering&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI tools sometimes overcomplicate solutions, introducing unnecessary features or layers of logic that make maintenance and debugging harder.&lt;/li&gt;
&lt;li&gt;This complexity can overwhelm teams, especially those with less experience.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Debugging and Maintenance Challenges&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI-generated solutions often require extensive debugging, as the logic behind them may be opaque or counterintuitive.&lt;/li&gt;
&lt;li&gt;Developers may spend more time deciphering AI-generated logic than they would crafting their own solutions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Security Risks&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Without proper oversight, AI tools can introduce vulnerabilities through incomplete or unsafe implementations.&lt;/li&gt;
&lt;li&gt;These risks can range from insecure coding practices to the omission of critical security checks.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;False Confidence&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI-generated outputs can create a deceptive sense of reliability.&lt;/li&gt;
&lt;li&gt;Developers might deploy seemingly functional code without rigorous testing, leading to long-term issues that undermine software stability and usability.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why the Problem Exists
&lt;/h2&gt;

&lt;p&gt;The challenges of AI in development arise from several systemic issues, each contributing to its limitations in producing reliable and high-quality software.&lt;/p&gt;

&lt;p&gt;As Garry Tan aptly observed in &lt;a href=""&gt;a recent tweet&lt;/a&gt;:&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1863604594515091786-672" src="https://platform.twitter.com/embed/Tweet.html?id=1863604594515091786"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1863604594515091786-672');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1863604594515091786&amp;amp;theme=dark"
  }



 &lt;/p&gt;

&lt;p&gt;This highlights a broader challenge with AI-assisted coding: it often prioritizes speed over depth and polish. Here are the key issues:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The 70% Problem&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI tools often deliver solutions that are only partially complete, typically reaching about 70% functionality.&lt;/li&gt;
&lt;li&gt;Completing the remaining 30% for production readiness often requires nuanced expertise, which junior developers or non-engineers may lack.&lt;/li&gt;
&lt;li&gt;This creates a bottleneck where the apparent progress is stymied by the need for human intervention.
&lt;iframe class="tweet-embed" id="tweet-1863058206752379255-831" src="https://platform.twitter.com/embed/Tweet.html?id=1863058206752379255"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1863058206752379255-831');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1863058206752379255&amp;amp;theme=dark"
  }



&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Two Steps Back Problem&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Fixing AI-generated bugs frequently results in new, unforeseen issues.&lt;/li&gt;
&lt;li&gt;This leads to a frustrating cycle of regression where attempts to address one problem inadvertently create others, slowing down overall progress.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucinations&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI tools sometimes generate plausible-looking solutions that are fundamentally flawed or incorrect.&lt;/li&gt;
&lt;li&gt;Developers may waste significant time validating or debugging these fabricated results, further eroding efficiency.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lack of Context Awareness&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI lacks deep contextual understanding of project-specific needs, often resulting in generic or misaligned solutions.&lt;/li&gt;
&lt;li&gt;This can lead to architectural mismatches or inefficiencies that require substantial rework.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency on Training Data&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;AI outputs are heavily influenced by the data they’ve been trained on, which might not include the latest practices or niche domain-specific knowledge.&lt;/li&gt;
&lt;li&gt;This limitation can propagate outdated patterns or suboptimal practices into the code.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inefficient Debugging Workflow&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Debugging AI-generated code can be harder because the logic isn’t always transparent or intuitive.&lt;/li&gt;
&lt;li&gt;Developers must decipher the reasoning behind AI decisions, which can slow down issue resolution.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;To effectively harness AI in software development while minimizing its pitfalls, consider adopting these comprehensive best practices:&lt;/p&gt;

&lt;h3&gt;
  
  
  Automate Repetitive Tasks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Streamline Workflows&lt;/strong&gt;: Use AI to handle mundane, repetitive tasks such as generating boilerplate code, refactoring existing code, or writing unit tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus on Creativity&lt;/strong&gt;: Delegate routine operations to AI, freeing developers to focus on strategic and innovative aspects of the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Maintain Vigilant Oversight
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trust but Verify&lt;/strong&gt;: Always approach AI outputs with a critical mindset. Validate its suggestions against your expertise to ensure they align with project requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refine Generated Code&lt;/strong&gt;: Treat AI as a junior developer that requires mentorship and guidance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conduct Thorough Code Reviews
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Assess Critical Elements&lt;/strong&gt;: Never deploy AI-generated code without examining its logical correctness, adherence to project standards, and handling of edge cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize Performance&lt;/strong&gt;: Ensure the code meets performance benchmarks and does not introduce inefficiencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prioritize Security&lt;/strong&gt;: Evaluate the AI output for potential vulnerabilities or unsafe implementations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Encourage Modularity and Scalability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Focus on Modularity&lt;/strong&gt;: Structure AI-generated code into small, reusable components with clear interfaces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhance Maintenance&lt;/strong&gt;: Modular code simplifies debugging, updates, and integration into larger systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Regularly Audit Security
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Preempt Vulnerabilities&lt;/strong&gt;: Perform security audits to identify risks introduced by AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update Safeguards&lt;/strong&gt;: Implement necessary patches or improvements to maintain robust application security.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Set Clear Boundaries for AI Usage
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Define Roles&lt;/strong&gt;: Use AI for specific, well-understood tasks where it excels, avoiding reliance on it for complex or critical decisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leverage for Prototyping&lt;/strong&gt;: Utilize AI tools for rapid prototyping or exploring alternative solutions, but ensure the final implementation adheres to engineering standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Invest in Training and Knowledge Sharing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Educate Teams&lt;/strong&gt;: Train developers to use AI tools effectively, emphasizing critical thinking and validation techniques.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foster Collaboration&lt;/strong&gt;: Encourage teams to share learnings and strategies for optimizing AI integration into workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxo1zjd2wrqd5lzwmi8rq.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%2Fxo1zjd2wrqd5lzwmi8rq.png" alt="Requestly banner showing how it makes it easy to mock edge cases." width="800" height="320"&gt;&lt;/a&gt;&lt;br&gt;
Learn more at &lt;a href="https://requestly.com/" rel="noopener noreferrer"&gt;https://requestly.com/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;AI is a powerful tool in software development, but its improper use can lead to significant setbacks. By understanding its limitations and adopting disciplined practices, developers can leverage AI to enhance productivity without compromising quality. Remember, the ultimate goal is not just faster development but better software that serves users effectively.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codequality</category>
      <category>development</category>
    </item>
    <item>
      <title>Understanding Angular Interceptors : Beyond HTTP</title>
      <dc:creator>Abhishek Sachan</dc:creator>
      <pubDate>Mon, 12 Aug 2024 11:51:10 +0000</pubDate>
      <link>https://dev.to/abhishek-sachan/understanding-angular-interceptors-beyond-http-11fe</link>
      <guid>https://dev.to/abhishek-sachan/understanding-angular-interceptors-beyond-http-11fe</guid>
      <description>&lt;p&gt;Angular interceptors are very powerful tools that developers can use to manage how their applications handle HTTP requests and responses. They play a crucial role in implementing features like logging, authentication, error handling, and more, which leads to clearer and easier-to-maintain code.&lt;/p&gt;

&lt;p&gt;Angular Interceptors act like a middleware between your Angular application and the server. They intercept requests before they are sent to the server and responses before they reach our application components. This allows developers to modify requests by adding headers, modifing request/response bodies, and changing status codes.&lt;/p&gt;

&lt;h1&gt;
  
  
  Setting Up Your Angular Project
&lt;/h1&gt;

&lt;p&gt;First, make sure you have Angular CLI installed. If not, you can install it with npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g @angular/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, create a new Angular project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ng new Project_Name
cd Project_Name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, Generate a new HTTP Interceptor with Angular CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ng generate interceptor interceptors/interceptorName
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will create two files: &lt;code&gt;interceptorName.interceptor.ts&lt;/code&gt; and &lt;code&gt;interceptorName.interceptor.spec.ts&lt;/code&gt; in the &lt;code&gt;src/app/interceptors&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;Now , Open &lt;code&gt;interceptorName.interceptor.ts&lt;/code&gt; and add the logic for your interceptor. Here’s an example that logs a message.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { HttpInterceptorFn } from '@angular/common/http';

export const interceptorName: HttpInterceptorFn = (req, next) =&amp;gt; {
  console.log('HTTP Request:', req);
  return next(req);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, To use the interceptor, open &lt;code&gt;app.config.ts&lt;/code&gt; and add it to the providers array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
import { provideHttpClient,withInterceptors } from '@angular/common/http';
import { interceptorName } from './interceptors/interceptorName.interceptor';


export const appConfig: ApplicationConfig = {
  providers: [
    ....
    provideHttpClient(
      withInterceptors([interceptorName])
    ),
  ],
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Advanced Use cases of Angular Interceptors
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Custom Transformation of Requests and Responses
&lt;/h2&gt;

&lt;p&gt;Interceptors can tailor data transformation for requests and responses, such as modifying request bodies, headers, or response data formats before they are processed by the application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { HttpInterceptorFn, HttpResponse } from '@angular/common/http';

export const apiInterceptor: HttpInterceptorFn = (req, next) =&amp;gt; {
  const modifiedReq = req.clone({
    body: { title:"Modified Request Body",id: 1 },
  });
  return next(modifiedReq);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Mocking for Testing Scenarios
&lt;/h2&gt;

&lt;p&gt;Developers can simulate different server situations without depending on live backend services by using interceptors to mock HTTP responses during testing. This method makes it possible to properly evaluate various scenarios.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { HttpInterceptorFn } from '@angular/common/http';
import { of } from 'rxjs';

export const eventLoggingInterceptor: HttpInterceptorFn = (req, next) =&amp;gt; {
    // Mock response for testing
    if (req.url.endsWith('/test')) {
    const mockResponse = { id: 1, title: 'Test Data' };
    return of(new HttpResponse({ status: 200, body: mockResponse }));
  }
    // Pass through to actual HTTP request
    return next(req);
}
&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%2Ff6ixn4ea9hxpq3463e78.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%2Ff6ixn4ea9hxpq3463e78.png" alt="angular interceptors dummy data" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Error Handling and Retry Mechanisms
&lt;/h2&gt;

&lt;p&gt;Angular Interceptors enhance applications by implementing error-handling strategies, like automatically retrying failed requests and transforming error responses to improve user experience.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { HttpInterceptorFn } from '@angular/common/http';
import { catchError,retry, throwError } from 'rxjs';

export const apiInterceptor: HttpInterceptorFn = (req, next) =&amp;gt; {
  return next(req).pipe(
    retry(3), // Retry failed requests up to 3 times
    catchError((error) =&amp;gt; {
      console.error('HTTP Error:', error);
      return throwError(error);
    })
  );
};
&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%2Fzexxgq75sfmcz85ob79f.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%2Fzexxgq75sfmcz85ob79f.png" alt="angular interceptors retry" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Here, the interceptor retries the failed request up to three times before handling the error, ensuring multiple attempts to successfully complete the request.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Chaining Interceptors and Controlling Execution Order
&lt;/h2&gt;

&lt;p&gt;In Angular, developers can link multiple interceptors, each managing different aspects of request processing like authentication, logging, or error handling. They run in the order they are registered, allowing precise modification of requests and responses, ensuring flexible management of workflows for enhanced application functionality.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { HttpInterceptorFn, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';

// First Interceptor: Authentication
export const authInterceptor: HttpInterceptorFn = (req, next) =&amp;gt; {
  const authReq = req.clone({
    setHeaders: {
      Authorization: `Bearer YOUR_TOKEN`
    }
  });
  return next(authReq);
};

// Second Interceptor: Logging
export const loggingInterceptor: HttpInterceptorFn = (req, next) =&amp;gt; {
  console.log('Request URL:', req.url);
  return next(req).pipe(
    tap(event =&amp;gt; {
      if (event instanceof HttpResponse) {
        console.log('Response Status:', event.status);
      }
    })
  );
};

// Third Interceptor: Error Handling
export const errorHandlingInterceptor: HttpInterceptorFn = (req, next) =&amp;gt; {
  return next(req).pipe(
    retry(3),
    catchError((error) =&amp;gt; {
      console.error('HTTP Error:', error);
      return throwError(error);
    })
  );
};

// Registering Interceptors in Angular Module

export const appConfig: ApplicationConfig = {
  providers: [
    ...
    provideHttpClient(
      withInterceptors([apiInterceptor,loggingInterceptor,errorHandlingInterceptor])
    ),
  ],
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Event Handling and DOM Interaction
&lt;/h2&gt;

&lt;p&gt;Angular interceptors have the capability to intercept DOM events and interactions before Angular processes them. This functionality enables tasks like logging user interactions, enforcing application-wide event handling policies, or conducting additional validations prior to event propagation within the application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { HttpInterceptorFn } from '@angular/common/http';

export const eventLoggingInterceptor: HttpInterceptorFn = (req, next) =&amp;gt; {
  document.addEventListener('click', (event) =&amp;gt; {
    console.log('Click event intercepted:', event);
    // Additional custom event handling logic
  });
  return next(req);
};
&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%2F59e45b8q9cwzrl8w97rw.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%2F59e45b8q9cwzrl8w97rw.png" alt="angular interceptors dom handling" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Interception using External Tool
&lt;/h2&gt;

&lt;p&gt;External HTTP interception tools can be incredibly useful in various scenarios, especially when you need more control over your HTTP requests and responses beyond what is available in built-in interceptors. They are particularly beneficial for testing and debugging APIs, simulating different server conditions, and ensuring your application handles various edge cases effectively.&lt;/p&gt;

&lt;p&gt;Requestly is one such powerful tool that enhances your development workflow. For example, suppose you’re developing an application and need to test how it handles a slow network response. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Installation and Configuration&lt;/strong&gt;: Easily &lt;a href="https://requestly.com/downloads/" rel="noopener noreferrer"&gt;install Requestly&lt;/a&gt; as a browser extension and set up rules to intercept and modify HTTP requests and responses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rule Management&lt;/strong&gt;: Define and manage rulesets based on URLs, &lt;a href="https://requestly.com/products/web-debugger/modify-http-headers/" rel="noopener noreferrer"&gt;headers&lt;/a&gt;, or query parameters to intercept requests according to specific criteria.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request Modification&lt;/strong&gt;: Modify requests by adding headers, rewriting URLs, or &lt;a href="https://requestly.com/products/web-debugger/redirect-rule/" rel="noopener noreferrer"&gt;redirecting requests&lt;/a&gt; based on predefined rules, facilitating dynamic testing and debugging scenarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Use Cases&lt;/strong&gt;: Utilize Requestly to &lt;a href="https://requestly.com/blog/how-to-simulate-http-status-code/" rel="noopener noreferrer"&gt;simulate different server responses&lt;/a&gt;, &lt;a href="https://requestly.com/products/mock-server/" rel="noopener noreferrer"&gt;mock endpoints&lt;/a&gt; for testing purposes, or enforce specific network conditions during development.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Angular interceptors are indispensable tools for managing HTTP communication and enhancing the robustness of Angular applications. By mastering the methods and exploring external solutions like Requestly, developers can streamline API integrations, improve security practices, and optimize performance effectively. Embrace interceptors to elevate the reliability and scalability of your Angular applications in handling diverse backend interactions with confidence and efficiency.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to implement Axios Request Interceptors in Next.js</title>
      <dc:creator>Abhishek Sachan</dc:creator>
      <pubDate>Mon, 12 Aug 2024 11:34:43 +0000</pubDate>
      <link>https://dev.to/abhishek-sachan/how-to-implement-axios-request-interceptors-in-nextjs-1n1i</link>
      <guid>https://dev.to/abhishek-sachan/how-to-implement-axios-request-interceptors-in-nextjs-1n1i</guid>
      <description>&lt;p&gt;Axios is a widely used JavaScript library that makes it easier to send HTTP requests to servers. One of its standout features is the interceptor, which allows our app to catch requests and responses. Axios interceptors let us set up functions that run for each request or response before they reach the application. This is helpful for tasks like adding authentication tokens, logging, and handling errors globally, making our code cleaner and easier to manage.&lt;/p&gt;

&lt;p&gt;In this blog post, we’ll learn how to implement Axios request interceptors in a Next.js application. We’ll start by setting up Axios, and then we’ll see how to create and use request and response interceptors. By the end, you’ll know how to use interceptors to improve your application and keep your code organized.&lt;/p&gt;

&lt;h1&gt;
  
  
  Setup the Project
&lt;/h1&gt;

&lt;p&gt;Before diving into how to implement Axios request interceptors in a Next.js application, make sure you have the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Node.js and npm/yarn Installed&lt;/strong&gt;: Ensure you have Node.js and npm (or yarn) installed on your machine. You can download Node.js from &lt;a href="https://nodejs.org/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A Next.js Project Setup&lt;/strong&gt;: You should have a Next.js project setup. If you don’t have one, you can create a new Next.js project using Create Next App:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-next-app my-axios-app
cd my-axios-app
npm install axios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add axios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Implementing Request Interceptors
&lt;/h2&gt;

&lt;p&gt;Request interceptors in Axios let you modify requests before they reach the server. They’re useful for adding authentication tokens, setting custom headers, or logging requests. Here’s how to implement Axios request interceptors in a Next.js application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create an Axios Instance
&lt;/h3&gt;

&lt;p&gt;Create a new file &lt;code&gt;axiosInstance.js&lt;/code&gt; in the &lt;code&gt;lib&lt;/code&gt; folder (or any preferred location in your project). You can add a request interceptor to the Axios instance you created earlier. This interceptor will be executed before every request is sent out.&lt;/p&gt;

&lt;p&gt;Creating an Axios instance allows you to set default configurations, such as the base URL and headers, that will be applied to all requests made with that instance. This helps in keeping your code DRY (Don’t Repeat Yourself).&lt;/p&gt;

&lt;p&gt;Create a new file named &lt;code&gt;axiosInstance.js&lt;/code&gt; in your &lt;code&gt;lib&lt;/code&gt; folder and set up your Axios instance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// lib/axiosInstance.js
import axios from 'axios';

const axiosInstance = axios.create({
  baseURL: 'https://dummyjson.com', // Replace with your API base URL
  timeout: 1000,
  headers: { 'Content-Type': 'application/json' }
});

// Add a request interceptor
axiosInstance.interceptors.request.use(
  function (config) {
    // Do something before the request is sent
    // For example, add an authentication token to the headers
    const token = localStorage.getItem('authToken'); // Retrieve auth token from localStorage
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  function (error) {
    // Handle the error
    return Promise.reject(error);
  }
);

export default axiosInstance;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s a summary of what we’ve done:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created an Axios instance using &lt;strong&gt;axios.create()&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Set the &lt;code&gt;baseURL&lt;/code&gt; to the base URL of your API. You can adjust this to match your API’s configuration.&lt;/li&gt;
&lt;li&gt;Used &lt;strong&gt;interceptors.request.use()&lt;/strong&gt; to intercept and modify outgoing requests. This allows us to add headers, authentication tokens, or make other changes to the request configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Use the Axios Instance in Next.js Pages or Components
&lt;/h3&gt;

&lt;p&gt;With the request interceptor set up, you can use the Axios instance in your Next.js pages or components as usual. The interceptor will automatically add the token (or perform any other configured actions) before each request is sent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// pages/index.js
import React, { useEffect, useState } from 'react';
import axiosInstance from '../lib/axiosInstance';

export default function Home() {
  const [data, setData] = useState(null);

  useEffect(() =&amp;gt; {
    axiosInstance.get('/products/1') // Replace with your API endpoint
      .then(response =&amp;gt; {
        setData(response.data);
      })
      .catch(error =&amp;gt; {
        console.error('Error fetching data:', error);
      });
  }, []);

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h1&amp;gt;Data from API&amp;lt;/h1&amp;gt;
      {data ? (
        &amp;lt;pre&amp;gt;{JSON.stringify(data, null, 2)}&amp;lt;/pre&amp;gt;) : (&amp;lt;p&amp;gt;Loading...&amp;lt;/p&amp;gt; )}&amp;lt;/div&amp;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%2Fbam3z3fltmbsdmakc59w.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%2Fbam3z3fltmbsdmakc59w.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Customizing the Interceptor
&lt;/h3&gt;

&lt;p&gt;You can customize the request interceptor to perform other actions as needed. For example, you might want to log the details of each request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;axiosInstance.interceptors.request.use(
  function (config) {
    // Log the request details
    console.log('Request:', config);
    return config;
  },
  function (error) {
    // Handle the error
    return Promise.reject(error);
  }
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This setup will log the details of each request to the console, which can be helpful for debugging purposes.&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%2F9yewtiqcqyhgqk0mx3xf.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%2F9yewtiqcqyhgqk0mx3xf.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By implementing request interceptors in your Next.js application, you can ensure that all requests are consistently modified or enhanced before they are sent, improving the maintainability and functionality of your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing Response Interceptors
&lt;/h2&gt;

&lt;p&gt;Similar to how request interceptors allow you to modify outgoing requests, response interceptors in Axios enable you to manage responses globally before they reach your application code. This is especially helpful for tasks such as error handling, response transformation, and logging. Let’s explore how to implement response interceptors in a Next.js application using Axios.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create the Response Interceptor
&lt;/h3&gt;

&lt;p&gt;In your &lt;code&gt;axiosInstance.js&lt;/code&gt; file, you can add a response interceptor to the Axios instance you created. This interceptor will be executed after every response is received.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// lib/axiosInstance.js
import axios from 'axios';

const axiosInstance = axios.create({
  baseURL: 'https://dummyjson.com', // Replace with your API base URL
  timeout: 1000,
  headers: { 'Content-Type': 'application/json' }
});

// Add a request interceptor
axiosInstance.interceptors.request.use(
  function (config) {
    // Do something before the request is sent
    const token = localStorage.getItem('authToken'); // Retrieve auth token from localStorage
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  function (error) {
    // Handle the error
    return Promise.reject(error);
  }
);

// Add a response interceptor
axiosInstance.interceptors.response.use(
  function (response) {
    // Do something with the response data
    console.log('Response:', response);
    return response;
  },
  function (error) {
    // Handle the response error
    if (error.response &amp;amp;&amp;amp; error.response.status === 401) {
      // Handle unauthorized error
      console.error('Unauthorized, logging out...');
      // Perform any logout actions or redirect to login page
    }
    return Promise.reject(error);
  }
);

export default axiosInstance;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Use the Axios Instance in Next.js Pages or Components
&lt;/h3&gt;

&lt;p&gt;With the response interceptor set up, you can use the Axios instance in your Next.js pages or components as usual. The interceptor will automatically handle responses and errors based on your configuration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// pages/index.js
import { useEffect, useState } from 'react';
import axiosInstance from '../lib/axiosInstance';

export default function Home() {
  const [data, setData] = useState(null);

  useEffect(() =&amp;gt; {
    axiosInstance.get('/products/1') // Replace with your API endpoint
      .then(response =&amp;gt; {
        setData(response.data);
      })
      .catch(error =&amp;gt; {
        console.error('Error fetching data:', error);
      });
  }, []);

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h1&amp;gt;Data from API&amp;lt;/h1&amp;gt;
      {data ? (
        &amp;lt;pre&amp;gt;{JSON.stringify(data, null, 2)}&amp;lt;/pre&amp;gt;) : (&amp;lt;p&amp;gt;Loading...&amp;lt;/p&amp;gt; )}&amp;lt;/div&amp;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%2F31jfdz61ttjyo6svupnw.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%2F31jfdz61ttjyo6svupnw.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By implementing response interceptors in your Next.js application, you can centralize response handling, improving code maintainability and application robustness. Whether it’s logging, transforming data, or managing errors, response interceptors provide a powerful way to manage HTTP responses efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Framework-Independent Alternative: Using Requestly
&lt;/h2&gt;

&lt;p&gt;While Axios has powerful tools for processing HTTP requests within applications, integrating and managing interceptors directly within your codebase can be difficult and demand changes to your application’s architecture. Instead of depending on framework-specific solutions such as Axios interceptors, developers can use Requestly, a browser extension that modifies network requests and responses without requiring any changes to the application’s code. This method has various advantages over standard interceptors:&lt;/p&gt;

&lt;h3&gt;
  
  
  Simplifying Modifications with Requestly
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No Code Changes Required&lt;/strong&gt;: Unlike implementing interceptors in your application code, which requires understanding and modifying the codebase, Requestly operates entirely from the browser. This means developers can modify requests and responses dynamically without touching the application’s source code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility Across Technologies&lt;/strong&gt;: Requestly’s framework-independent nature allows it to work seamlessly across different projects and technologies. Whether you’re working with React, Angular, Vue.js, or any other framework, Requestly provides a consistent interface for managing network traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advantages of Using Requestly
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use&lt;/strong&gt;: Requestly simplifies the process of modifying network requests and responses through an intuitive browser extension interface. This accessibility makes it ideal for developers of all skill levels, from beginners to advanced users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immediate Testing and Debugging&lt;/strong&gt;: With Requestly, developers can instantly test and debug different scenarios by altering headers, URLs, or response content. This capability speeds up development cycles and enhances troubleshooting efficiency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Privacy and Security&lt;/strong&gt;: Requestly empowers developers to block or modify requests to enhance privacy, security, and compliance with data protection regulations. For instance, blocking tracking scripts or adding secure headers can be done effortlessly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://requestly.com/blog/academy-understanding-modify-api-response-rule/" rel="noopener noreferrer"&gt;Modify Server Response&lt;/a&gt;: Modify response content to simulate various server behaviors without backend changes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://requestly.com/blog/academy-understanding-modify-request-body-rule/" rel="noopener noreferrer"&gt;Testing Different API Requests&lt;/a&gt;: Dynamically alter request to test different API endpoints or data payloads.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://requestly.com/blog/how-to-block-web-domains-using-requestly/" rel="noopener noreferrer"&gt;Blocking Network Request&lt;/a&gt;: Test your website under scenarios where certain external resources are unavailable&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://requestly.com/blog/how-to-modify-http-headers-in-chrome-firefox-edge-safari-browsers/" rel="noopener noreferrer"&gt;Adding Custom Headers&lt;/a&gt;: Add authentication tokens or custom CORS headers for testing APIs that require specific headers.
### How to use Requestly Interceptor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Modify API Response&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Requestly allows you to &lt;a href="https://requestly.com/blog/academy-understanding-modify-api-response-rule/" rel="noopener noreferrer"&gt;modify API responses&lt;/a&gt;. It provides a user-friendly interface for overriding the response body of API requests, allowing you to mimic different data scenarios that your frontend might encounter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Insert/Inject Script&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://requestly.com/products/web-debugger/easily-insert-custom-scripts-into-any-webpage/" rel="noopener noreferrer"&gt;Insert/Inject Script Rule&lt;/a&gt; allows you to inject JavaScript and CSS into web pages as they load. This means you can modify the DOM, change styles, or even add new functionality without altering the source code directly. It’s important for testing hypotheses or debugging during the development and quality assurance process. Learn more about it &lt;a href="https://requestly.com/blog/academy-understanding-insert-inject-script-rule/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Replace Rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://requestly.com/products/web-debugger/replace-rule-switch-hosts/" rel="noopener noreferrer"&gt;Replace Rule&lt;/a&gt; enables you to replace a String in URL with another String. This feature is particularly useful for developers to swap the API endpoints from one environment to another or change something specific in the URL. Requests are matched with source condition, and &lt;code&gt;find and replace&lt;/code&gt; are performed on those requests by redirecting to the resulting URL. Learn more about this rule &lt;a href="https://requestly.com/blog/academy-understanding-replace-rule/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;In this blog post, we’ve explored the powerful concept of intercepting requests with Axios in a Next.js application. This allows developers to have more control over HTTP requests and responses within their applications. Whether it’s adding authentication tokens, logging requests for debugging purposes, or handling errors globally, Axios interceptors provide a flexible solution to meet diverse development needs.&lt;/p&gt;

&lt;p&gt;If you like this blog check out our other blog on &lt;a href="https://requestly.com/blog/how-to-implement-axios-interceptor-in-react/" rel="noopener noreferrer"&gt;How to implement Axios interceptor in React&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Popular Chrome Extensions for HTTP Request Interception without Proxy</title>
      <dc:creator>Abhishek Sachan</dc:creator>
      <pubDate>Wed, 07 Aug 2024 12:50:45 +0000</pubDate>
      <link>https://dev.to/abhishek-sachan/popular-chrome-extensions-for-http-request-interception-without-proxy-47a2</link>
      <guid>https://dev.to/abhishek-sachan/popular-chrome-extensions-for-http-request-interception-without-proxy-47a2</guid>
      <description>&lt;h2&gt;
  
  
  What is HTTP Interception?
&lt;/h2&gt;

&lt;p&gt;HTTP Request interception in web development offers several significant benefits that enhance both the development process and the performance of applications.&lt;/p&gt;

&lt;p&gt;HTTP interceptors operate as intermediaries between your application and the server, playing a pivotal role in the lifecycle of HTTP requests and responses.&lt;/p&gt;

&lt;p&gt;When an application makes an HTTP call, the request first passes through the interceptor, where it can be examined, modified, or logged before being sent to the server. Similarly, when the server responds, the response can be intercepted, processed, or transformed before it reaches the application.&lt;/p&gt;

&lt;p&gt;To understand the HTTP Request Interception in detail read → &lt;a href="https://dev.to/asachanfbd/what-is-http-interceptor-why-should-you-use-one-2d6k"&gt;What is an HTTP Request Interceptor and Why Should You Use One?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below is the list of HTTP Request Interceptor Chrome extensions that enable you to intercept &amp;amp; modify HTTP Requests. I’ll compare each extension based on the capabilities they have use-cases they solve. At the end of this article, you can find the best Chrome extensions for HTTP request interception.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top 5 Chrome Extensions for HTTP Request Interception
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Requestly
&lt;/h3&gt;

&lt;p&gt;Requestly is a powerful HTTP request interception tool, offering a wide range of features that cater to various development and testing scenarios.&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%2Fmjwxcv7aoasimoxnfu2n.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%2Fmjwxcv7aoasimoxnfu2n.png" alt="Requestly" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Modify headers and query parameters&lt;/li&gt;
&lt;li&gt;Redirect requests to different URLs or local resources&lt;/li&gt;
&lt;li&gt;Insert, modify, or remove content from request/response bodies&lt;/li&gt;
&lt;li&gt;Delay or throttle requests to simulate network conditions&lt;/li&gt;
&lt;li&gt;Mock API responses with custom status codes and bodies&lt;/li&gt;
&lt;li&gt;Create complex rules with advanced conditions (URL patterns, request methods, response types)&lt;/li&gt;
&lt;li&gt;Shared team rules for collaborative workflows&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://requestly.com/downloads/" rel="noopener noreferrer"&gt;Cross-browser support&lt;/a&gt; (Chrome, Firefox, Edge, and Safari)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://requestly.com/downloads/desktop/" rel="noopener noreferrer"&gt;Desktop app&lt;/a&gt; for system-wide request modification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffs2xjheebdgeffz0zoqe.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%2Ffs2xjheebdgeffz0zoqe.png" alt="Flow diagram explaining how Requestly helps in HTTP Request Interception" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use cases&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;API development and testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mock API responses for frontend development before the backend is ready&lt;/li&gt;
&lt;li&gt;Test error scenarios by modifying API responses&lt;/li&gt;
&lt;li&gt;Simulate different API versions or endpoints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Debugging and troubleshooting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inject debug scripts into production sites without modifying the codebase&lt;/li&gt;
&lt;li&gt;Modify CORS headers to bypass restrictions during local development&lt;/li&gt;
&lt;li&gt;Analyze and modify third-party API integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Performance testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simulate slow network conditions for specific requests&lt;/li&gt;
&lt;li&gt;Test app behavior under various latency scenarios&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Security testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modify headers to test for security vulnerabilities&lt;/li&gt;
&lt;li&gt;Intercept and analyze requests to identify potential security issues&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Local development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redirect API calls from production to the local development server&lt;/li&gt;
&lt;li&gt;Override specific resources (JS, CSS) with local versions for testing&lt;/li&gt;
&lt;li&gt;Modifying CORS headers for development&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A/B testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modify content or behavior of live websites for quick A/B testing&lt;/li&gt;
&lt;li&gt;Test different configurations without changing server-side code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Advanced features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GraphQL support: Intercept and modify GraphQL queries and mutations&lt;/li&gt;
&lt;li&gt;Regex pattern matching for creating sophisticated rules&lt;/li&gt;
&lt;li&gt;Request/response body search and replace&lt;/li&gt;
&lt;li&gt;Record and replay HTTP sessions&lt;/li&gt;
&lt;li&gt;Export and import rules for easy sharing and backup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ideal for Full-stack developers, frontend developers, QA engineers, and API developers who need a comprehensive tool for HTTP manipulation across various stages of development and testing.&lt;/p&gt;

&lt;p&gt;Requestly’s combination of powerful features, user-friendly interface, and broad use case support makes it an excellent choice for developers looking for a versatile HTTP interception tool. Its ability to handle complex scenarios while remaining accessible to less experienced users sets it apart from many other options.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Tamper Chrome
&lt;/h3&gt;

&lt;p&gt;A Chrome extension for intercepting, modifying, and debugging HTTP/HTTPS requests and responses in real time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftsikuw7ixzmh5lf42kpt.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%2Ftsikuw7ixzmh5lf42kpt.png" alt="Tamper Chrome" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Real-time interception and modification of HTTP/HTTPS requests and responses&lt;/li&gt;
&lt;li&gt;Edit headers, cookies, and request/response bodies&lt;/li&gt;
&lt;li&gt;Block specific requests&lt;/li&gt;
&lt;li&gt;WebSocket interception&lt;/li&gt;
&lt;li&gt;Chrome DevTools integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web application security testing&lt;/li&gt;
&lt;li&gt;Debugging complex AJAX interactions&lt;/li&gt;
&lt;li&gt;Testing application behavior under various response scenarios&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Less user-friendly interface for non-security experts&lt;/li&gt;
&lt;li&gt;Less options for creating complex, reusable rules&lt;/li&gt;
&lt;li&gt;Limited collaboration features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal for&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Security researchers and penetration testers&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to the Chrome web store, search for &lt;strong&gt;Tamper Chrome&lt;/strong&gt;, and click &lt;strong&gt;Add to Chrome&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Postman Interceptor
&lt;/h3&gt;

&lt;p&gt;A browser extension that allows you to capture and send HTTP/HTTPS requests from your browser directly to the Postman app.&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%2F6lj7iv2zr2sv17xiu2oj.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%2F6lj7iv2zr2sv17xiu2oj.png" alt="Postman Interceptor" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Captures and sends HTTP/HTTPS requests from your browser to Postman&lt;/li&gt;
&lt;li&gt;Edit and resend requests captured from your browser&lt;/li&gt;
&lt;li&gt;Sync cookies and headers with Postman native app&lt;/li&gt;
&lt;li&gt;Supports multiple environments and configurations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing APIs directly from the web browser&lt;/li&gt;
&lt;li&gt;Debugging API interactions connected to front-end applications&lt;/li&gt;
&lt;li&gt;Importing requests directly into Postman for detailed analysis and modification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited functionality for users seeking browser-only solutions&lt;/li&gt;
&lt;li&gt;Requires an additional app for full functionality, increasing complexity&lt;/li&gt;
&lt;li&gt;Resource-intensive during extensive testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal for&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers and QA engineers focused on API testing and development&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to the Chrome web store, search for &lt;strong&gt;Postman Interceptor&lt;/strong&gt;, and click &lt;strong&gt;Add to Chrome&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Request Interceptor
&lt;/h3&gt;

&lt;p&gt;A browser extension designed to intercept and modify HTTP/HTTPS requests and responses in real-time for web developers and testers.&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%2Fbzebczlukcfhruszwol6.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%2Fbzebczlukcfhruszwol6.png" alt="Request Interceptor" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Intercepts and modifies HTTP/HTTPS requests and responses in real-time&lt;/li&gt;
&lt;li&gt;Edit request headers, parameters, and payloads directly in the browser&lt;/li&gt;
&lt;li&gt;Rules-based filtering to target specific requests&lt;/li&gt;
&lt;li&gt;Logging and exporting of intercepted traffic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing and debugging HTTP requests directly in the browser&lt;/li&gt;
&lt;li&gt;Simulating different request scenarios to test server responses&lt;/li&gt;
&lt;li&gt;Capturing and analyzing web traffic for performance tuning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited collaborative features compared to some other tools&lt;/li&gt;
&lt;li&gt;Learning curve for creating advanced rules and filters&lt;/li&gt;
&lt;li&gt;Less intuitive interface for creating and managing rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal for&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Web developers and network administrators working on web performance and diagnostics&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to the Chrome web store, search for Request Interceptor, and click Add to Chrome.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. ModHeader
&lt;/h3&gt;

&lt;p&gt;ModHeader is a popular Request Interception tool, it helps you modify headers of a request without the need of a proxy.&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%2F1nc7fxlgr13bvq2ak2z2.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%2F1nc7fxlgr13bvq2ak2z2.png" alt="ModHeader" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Add, modify, or remove HTTP request headers&lt;/li&gt;
&lt;li&gt;Create and manage multiple header profiles&lt;/li&gt;
&lt;li&gt;Apply headers based on URL patterns&lt;/li&gt;
&lt;li&gt;Export and import configurations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing different user agents&lt;/li&gt;
&lt;li&gt;Adding authentication headers for API testing&lt;/li&gt;
&lt;li&gt;Modifying CORS headers for development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited to header modifications only&lt;/li&gt;
&lt;li&gt;Lacks advanced features like request redirection, body modification, or response mocking&lt;/li&gt;
&lt;li&gt;No collaborative features&lt;/li&gt;
&lt;li&gt;Supported by Ads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal for&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers primarily focused on header manipulation, front-end developers dealing with CORS issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to the Chrome web store, search for ModHeader, and click Add to Chrome.&lt;/p&gt;

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

&lt;p&gt;In summary, while Requestly offers a broad range of features with a user-friendly interface, each of these tools has its strengths for specific use cases. The choice depends on factors such as the complexity of your needs, and your team’s expertise..&lt;/p&gt;

&lt;p&gt;Requestly stands out for its balance of power and ease of use, making it suitable for a wide range of developers. Its open-source, offers team collaboration and SOC-2 compliance makes it a good choice even for large corporates like Verizon, indeed, wix.com, salesforce, AT&amp;amp;T etc.&lt;/p&gt;

&lt;p&gt;Checkout the user reviews on chrome store → &lt;a href="https://chromewebstore.google.com/detail/mdnleldcmiljblolnjhpnblkcekpdkpa?hl=en" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/mdnleldcmiljblolnjhpnblkcekpdkpa?hl=en&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is HTTP Interceptor &amp; Why Should You Use One?</title>
      <dc:creator>Abhishek Sachan</dc:creator>
      <pubDate>Wed, 07 Aug 2024 12:33:41 +0000</pubDate>
      <link>https://dev.to/abhishek-sachan/what-is-http-interceptor-why-should-you-use-one-2d6k</link>
      <guid>https://dev.to/abhishek-sachan/what-is-http-interceptor-why-should-you-use-one-2d6k</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When building web applications, ensuring smooth communication between the client and the server is important. HTTP interceptor help streamline this communication. Using HTTP interceptors, you can catch and modify HTTP requests and responses before they reach your application. You can control your requests by adding authentication tokens, logging, dealing with errors, and changing data all in one place. In this blog, we’ll look at what HTTP interceptors are, how they work, and how they can make your web development life simpler and more efficient. Whether you’re developing with Angular, React, Android, iOS, Axios, or another HTTP library, understanding interceptors will give you more control over your app’s communication with the server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding HTTP Interceptor
&lt;/h2&gt;

&lt;p&gt;HTTP interceptors operate as intermediaries between your application and the server, playing a pivotal role in the lifecycle of HTTP requests and responses. When an application makes an HTTP call, the request first passes through the interceptor, where it can be examined, modified, or logged before being sent to the server. Similarly, when the server responds, the response can be intercepted, processed, or transformed before it reaches the application.&lt;/p&gt;

&lt;p&gt;The true power of HTTP interceptors lies in their ability to centralize and simplify HTTP handling within your app. Instead of duplicating code across various components to handle tasks like authentication, error handling, or logging, you can define these behaviors in one place. This global handling approach not only reduces redundancy but also makes the application easier to maintain and scale.&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%2Fgjsou4yf76eo55g6v872.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%2Fgjsou4yf76eo55g6v872.png" alt="HTTP Interceptor Working" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For instance, consider a scenario where you need to automatically attach a language preference header to every HTTP request based on the user’s settings. Instead of adding this header manually in every service or component that makes HTTP calls, you can configure an interceptor to append the language header to all outgoing requests. This ensures a consistent implementation and significantly reduces the potential for errors or omissions.&lt;/p&gt;

&lt;p&gt;Additionally, interceptors can be used for performance monitoring, request caching, and transforming response data, making them indispensable tools in modern web development.&lt;/p&gt;

&lt;p&gt;By understanding how to effectively implement and utilize HTTP interceptors, developers can enhance the efficiency, security, and reliability of their applications, leading to a smoother and more streamlined development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Using HTTP Interceptors
&lt;/h2&gt;

&lt;p&gt;Using HTTP interceptors in web development offers several significant benefits that enhance both the development process and the performance of applications:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Centralized Logic&lt;/strong&gt;: HTTP interceptors allow developers to centralize common functionalities such as authentication, error handling, logging, and header management. Instead of implementing these features across multiple endpoints or services, interceptors enable you to handle them in a single location. This approach reduces redundancy, improves code maintainability, and ensures consistency across your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Reusability&lt;/strong&gt;: By encapsulating HTTP logic within interceptors, developers can reuse these interceptors across different parts of the application. This reusability not only saves development time but also minimizes the risk of introducing bugs or inconsistencies when implementing similar functionalities in multiple places.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Global Effect&lt;/strong&gt;: Interceptors operate globally within an application, intercepting every HTTP request and response. This global scope allows you to enforce application-wide policies and behaviors uniformly. For instance, you can enforce authorization checks or add headers to outgoing requests without modifying individual components, thereby promoting a more systematic approach to application development.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Optimization&lt;/strong&gt;: HTTP interceptors can be used to optimize performance by implementing caching mechanisms, compressing request payloads, or handling response caching. These optimizations help reduce network overhead and improve application responsiveness, leading to a better user experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security Enhancements&lt;/strong&gt;: Implementing security measures such as CSRF token validation, CORS handling, or SSL configuration can be efficiently managed through HTTP interceptors. By integrating these security checks at the interceptor level, you ensure consistent and robust security practices across your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Debugging and Logging&lt;/strong&gt;: Interceptors are invaluable for debugging purposes as they allow developers to log HTTP requests and responses, monitor network traffic, and inspect data transformations. This visibility aids in diagnosing issues, tracking performance metrics, and ensuring the reliability of your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability and Flexibility&lt;/strong&gt;: As applications evolve, interceptors provide flexibility to adapt and extend functionality without extensive refactoring. Whether you need to introduce new features, update existing policies, or integrate with external services, interceptors offer a flexible mechanism to accommodate these changes seamlessly.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Use Cases for HTTP Interceptors
&lt;/h2&gt;

&lt;p&gt;HTTP interceptors offer versatile solutions to various common challenges in web development, providing developers with powerful tools to enhance functionality, security, and performance across applications. Here are several compelling use cases where HTTP interceptors prove invaluable:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Authentication and Authorization&lt;/strong&gt;: Implementing authentication mechanisms like adding tokens, validating user sessions, or enforcing access controls can be efficiently managed through HTTP interceptors. By intercepting outgoing requests, developers can automatically append authentication headers or verify user credentials without modifying individual API calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Toggling staging environment&lt;/strong&gt;: Switching between staging, local and production environments using HTTP interceptors allows developers to dynamically adjust URLs and request parameters. This flexibility allows for easy testing across different environments without altering core application code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request and Response Transformation&lt;/strong&gt;: Interceptors enable developers to preprocess request payloads or manipulate response data before they reach the application. This capability is particularly useful for converting data formats, compressing responses, or transforming API responses into a standardized format that aligns with application requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance Optimization&lt;/strong&gt;: By leveraging interceptors, developers can implement caching strategies to store frequently accessed data locally or handle response caching to reduce server load and enhance application responsiveness. Interceptors can also optimize network traffic by compressing request payloads or managing resource-intensive operations efficiently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring and Analytics&lt;/strong&gt;: Integrating monitoring and analytics capabilities within HTTP interceptors allows developers to capture metrics such as response times, request frequencies, or API usage patterns. This data can be instrumental in identifying performance bottlenecks, optimizing resource allocation, and making informed decisions to enhance application performance.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tools and Libraries for HTTP Interception
&lt;/h2&gt;

&lt;p&gt;Several tools and libraries support HTTP interception, each offering unique features and capabilities suited to different frameworks and use cases. Here are some popular options:&lt;/p&gt;

&lt;h3&gt;
  
  
  Axios
&lt;/h3&gt;

&lt;p&gt;Axios is a popular JavaScript library used to make HTTP requests from the browser or Node.js. It provides a simple API for sending asynchronous HTTP requests to REST endpoints and performing CRUD operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Use Axios for HTTP Interception:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install axios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Creating an Interceptor:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import axios from 'axios';

// Add a request interceptor
axios.interceptors.request.use(function (config) {
  // Do something before request is sent
  console.log('Request Interceptor', config);
  return config;
}, function (error) {
  // Do something with request error
  return Promise.reject(error);
});

// Add a response interceptor
axios.interceptors.response.use(function (response) {
  // Do something with response data
  console.log('Response Interceptor', response);
  return response;
}, function (error) {
  // Do something with response error
  return Promise.reject(error);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Angular HttpClient
&lt;/h3&gt;

&lt;p&gt;Angular HttpClient is a built-in service in Angular for making HTTP requests. It offers advanced capabilities, including the ability to intercept HTTP requests and responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Use Angular HttpClient for HTTP Interception:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ng add @angular/common/http
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Creating an Interceptor:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Import necessary Angular core and HTTP client modules
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
// Define the interceptor class that implements the HttpInterceptor interface
export class MyInterceptor implements HttpInterceptor {
  // Implement the intercept method which will be called for every HTTP request
  intercept(req: HttpRequest&amp;lt;any&amp;gt;, next: HttpHandler): Observable&amp;lt;HttpEvent&amp;lt;any&amp;gt;&amp;gt; {
    // Clone the request and modify it to include the Authorization header with a token
    const modifiedReq = req.clone({
      headers: req.headers.set('Authorization', `Bearer my-token`)
    });
    // Pass the modified request to the next handler in the chain
    return next.handle(modifiedReq);
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Registering the Interceptor:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Import necessary Angular HTTP client modules and the interceptor
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { MyInterceptor } from './my-interceptor';

@NgModule({
  // Provide the interceptor in the application module
  providers: [
    // Register the interceptor with the HTTP_INTERCEPTORS injection token
    // `multi: true` allows multiple interceptors to be registered
    { provide: HTTP_INTERCEPTORS, useClass: MyInterceptor, multi: true },
  ],
})
export class AppModule {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  HTTP Toolkit
&lt;/h3&gt;

&lt;p&gt;HTTP Toolkit is a powerful, open-source tool specifically designed to intercept, inspect, and modify HTTP(s) traffic. This versatile tool proves to be extremely useful for a wide range of professionals including developers, testers, and security experts. These individuals often need to analyze network traffic, debug APIs, or thoroughly test web applications to ensure their proper functioning and security. HTTP Toolkit provides an intuitive and user-friendly interface that makes it easy to capture HTTP requests and responses. Furthermore, it can decrypt HTTPS traffic, which is essential for examining encrypted data. The tool also allows users to manipulate this data in real-time, providing immediate feedback and enabling quick adjustments. This capability is particularly beneficial for those conducting detailed analysis or troubleshooting complex issues within their network environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use HTTP Toolkit:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Installation:&lt;/strong&gt; First, download HTTP Toolkit latest version for you operating system. Follow the on-screen instructions to complete the installation process on your computer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Capture Traffic:&lt;/strong&gt; After the installation is complete, you can start instances of the installed web browser. For this demonstration, we will use Google Chrome.&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%2F2h1b0gff8vfyezb5iglv.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%2F2h1b0gff8vfyezb5iglv.png" alt="HTTP Toolkit" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you launch Chrome, you should see a tab opened by HTTP Toolkit. This tab means that http toolkit is active and it will allow you to monitor and capture all HTTP and HTTPS traffic from the browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvk0wlgrxsw4hym83hzw.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%2Fyvk0wlgrxsw4hym83hzw.png" alt="HTTP Toolkit welcome screen" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now, navigate to any website, for instance, google.com, by typing the URL in the address bar and pressing Enter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As the webpage loads, HTTP Toolkit will automatically capture all the requests made to load the various elements of the page, such as HTML, CSS, JavaScript, images, and more. You will be able to see a detailed list of these requests in the HTTP Toolkit interface.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This feature is particularly useful for debugging web applications, analyzing network traffic, and ensuring that your website is performing optimally. By examining the captured requests, you can gain insights into how data is being transferred between the client and server, identify any issues, and make necessary adjustments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Charles Proxy
&lt;/h3&gt;

&lt;p&gt;Charles Proxy is an HTTP debugging proxy/application that allows developers to view and analyze all of the HTTP and HTTPS traffic between their machine and the internet. This includes detailed information about requests, responses, and the HTTP headers (which contain the cookies and caching information). By providing a comprehensive view of the data being transferred, it helps developers ensure that their applications are functioning correctly and efficiently. It’s particularly useful for diagnosing issues related to network communication, such as slow load times, broken API calls, or unexpected data. Additionally, Charles Proxy can be used to simulate slower network speeds, test different environments, and even rewrite requests and responses to test various scenarios. This makes it an invaluable tool in the development and debugging process, enhancing the overall quality and performance of web applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Use Charles Proxy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Charles Proxy is a powerful tool for monitoring and analyzing network traffic. Here is a step-by-step guide to help you get started with using Charles Proxy effectively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download and Install:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To begin, first download the latest version of Charles Proxy that is compatible with your operating system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the download is complete, proceed with the installation by following the on-screen instructions. This process is straightforward and similar to installing any other software application.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Launch Charles:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;After successfully installing Charles Proxy, locate the application icon and open it. This will launch the Charles Proxy interface, which is where you will be able to monitor and analyze network traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The first time you run Charles Proxy, you may be prompted to grant certain permissions or configure your network settings. Follow the prompts to ensure everything is set up correctly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhso79wl9ajzifi5pn0g.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%2Frhso79wl9ajzifi5pn0g.png" alt="Charles Proxy" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intercept Network Requests:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;With Charles Proxy running, now launch the application you want to intercept. This could be a web browser, mobile app, or any software that communicates over the network.&lt;/li&gt;
&lt;li&gt;As your application makes network requests, you will see these requests appear in the Charles Proxy interface. This allows you to inspect the details of each request and response, making it easier to debug and analyze network traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By following these steps, you can effectively use Charles Proxy to monitor and analyze the network requests made by your applications. This tool is invaluable for developers, testers, and anyone needing insight into their application’s network behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  Requestly
&lt;/h3&gt;

&lt;p&gt;Requestly is a browser extension that allows you to intercept and modify HTTP requests and responses. It’s useful for testing and debugging web applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use Requestly&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Requestly is a lightweight, browser-based tool designed for web developers and testers. It allows users to modify network requests and responses on the fly. This includes capabilities like redirecting URLs, modifying headers, and injecting scripts. It’s particularly useful for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install Requestly&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Requestly is available as a browser extension for Chrome, Firefox, and other Chromium-based browsers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download Requestly from it’s &lt;a href="https://requestly.com/downloads/" rel="noopener noreferrer"&gt;official website&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Launch Requestly&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After installation, click on the Requestly icon in your browser’s toolbar to open the Requestly dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4brz2x9a5dfs1vsdbaz.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%2Fg4brz2x9a5dfs1vsdbaz.png" alt="Requestly in Browser" width="658" height="669"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a Rule:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the dashboard, click on “New Rule” to create a new modification rule.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select which type of rule you want to create. Learn about different types of rules from &lt;a href="https://developers.requestly.com/http-rules/overview/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ys03m5c1dct8ae02znl.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%2F8ys03m5c1dct8ae02znl.png" alt="Requestly — Create new rule" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on &lt;strong&gt;Create Rules&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fill in the details of the rule and click &lt;strong&gt;Create Rule&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By following these steps, you can effectively use Requestly to manipulate network requests and responses to suit your development and testing needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Case Studies
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://requestly.com/blog/how-mindera-uses-requestly-for-proactive-api-management/" rel="noopener noreferrer"&gt;&lt;strong&gt;How Mindera uses Requestly for proactive API Management&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://requestly.com/blog/how-bureau-id-uses-requestly-to-toggle-staging-environment/" rel="noopener noreferrer"&gt;&lt;strong&gt;How Bureau.id uses Requestly to toggle staging environment&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://requestly.com/blog/how-requestly-helps-instabug-bridge-the-gap-between-frontend-and-backend/" rel="noopener noreferrer"&gt;&lt;strong&gt;How Requestly helps Instabug bridge the gap between frontend and backend&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://requestly.com/blog/streamlining-frontend-development-a-developers-journey-with-requestly-at-pingsafe/" rel="noopener noreferrer"&gt;&lt;strong&gt;Streamlining Frontend Development: A Developer’s Journey with Requestly at PingSafe&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://requestly.com/blog/how-requestly-helps-joyned-to-test-local-js-sdk-changes-directly-on-customers-production-sites/" rel="noopener noreferrer"&gt;&lt;strong&gt;How Requestly helps Joyned to test local JS SDK changes directly on customer’s production sites&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Recap
&lt;/h2&gt;

&lt;p&gt;In conclusion, HTTP interceptors simplify and enhance web development by centralizing request and response management, improving security, performance, and maintainability. By using tools like Axios, Angular HttpClient, and HTTP Toolkit, developers can efficiently manage client-server communication, leading to more robust applications.&lt;/p&gt;

</description>
      <category>interceptors</category>
      <category>productivity</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to become a Frontend Developer?</title>
      <dc:creator>Abhishek Sachan</dc:creator>
      <pubDate>Wed, 10 Jul 2024 16:33:57 +0000</pubDate>
      <link>https://dev.to/abhishek-sachan/how-to-become-a-frontend-developer-2kl9</link>
      <guid>https://dev.to/abhishek-sachan/how-to-become-a-frontend-developer-2kl9</guid>
      <description>&lt;p&gt;Frontend developers create exciting interfaces with which users interact, like the screen where you are reading this article is designed by a frontend developer. It’s an exciting journey. As a frontend developer, you work with HTML, CSS &amp;amp; JavaScript(not Java) to create engaging user experiences. Whether starting from scratch or looking to upgrade your skill set, you will need a roadmap to guide your learning path so you don’t feel lost. Let’s start by understanding frontend development.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Frontend Development?
&lt;/h2&gt;

&lt;p&gt;Any website or web application you interact with, like google.com, facebook.com, reddit.com, etc, contains two major segments — Frontend &amp;amp; Backend. The user-facing part is the frontend &amp;amp; server-side part is known as the backend. Frontend development is focused on what user sees on the application and how do they interact with it. Frontend development involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Converting designs to code.&lt;/li&gt;
&lt;li&gt;Structure the content using HTML&lt;/li&gt;
&lt;li&gt;Styling the content using CSS.&lt;/li&gt;
&lt;li&gt;Define the interactivity of the page using JavaScript(JS).&lt;/li&gt;
&lt;li&gt;Ensure that their code interacts with the backend seamlessly.&lt;/li&gt;
&lt;li&gt;Ensure pages are equally functional on different devices and browsers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frontend development is constantly evolving from just basic technologies like HTML, CSS, and JavaScript to more advanced frameworks that help you code faster and better. Popular frameworks and libraries such as React, Vue, Angular, Tailwind CSS, and Sass have become essential tools in a frontend developer’s toolkit. It’s crucial to know how to use at least one JavaScript framework. Although all these frameworks are based on JavaScript, their underlying design patterns and structures differ. Therefore, you will need to spend some time with documentation and tutorials to learn a new framework effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roles and Responsibilities of a Frontend Developer
&lt;/h2&gt;

&lt;p&gt;The frontend developers’ sole responsibility is to ensure the users have the best experience while using the website or web application. To fulfill that, frontend developers need to work on the below-mentioned areas of the frontend:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Convert designs to the code, that visually matches the design specifications.&lt;/li&gt;
&lt;li&gt;Add interactivity to the web pages to make the page dynamic like forms, sliders, buttons, etc.&lt;/li&gt;
&lt;li&gt;Ensure cross-browser compatibility &amp;amp; responsiveness of the application.&lt;/li&gt;
&lt;li&gt;Ensure the performance and security of the application.&lt;/li&gt;
&lt;li&gt;Maintain the code quality and version control the code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To ensure you can fulfill all these responsibilities as a frontend developer, you will need to gain a specific skill set. Let’s dive deeper into these skills in the next section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Essential Skills and Technologies
&lt;/h2&gt;

&lt;p&gt;Learning the essential skills and technologies can be overwhelming when you start something from scratch. It can be equally difficult for seasoned pros due to the vast technologies and resources available online. Let’s explore a learning path that can take you from basic knowledge to advanced levels, that you can follow with ease.&lt;/p&gt;

&lt;h3&gt;
  
  
  Beginner Level
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Basics — Learn the basics of HTML, CSS &amp;amp; JS and spend more time with JS.&lt;/li&gt;
&lt;li&gt;Git — Learn how to use Git, its basics, and workable knowledge.&lt;/li&gt;
&lt;li&gt;Package manager(npm) — Just get the basic idea about it.&lt;/li&gt;
&lt;li&gt;Frontend Framework(react) — Get the basic level knowledge about creating a simple application with API interactions.&lt;/li&gt;
&lt;li&gt;Testing your App(Jest) — Learn how to write test cases.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Further Reading →
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://roadmap.sh/frontend?r=frontend-beginner" rel="noopener noreferrer"&gt;Basic Frontend Development Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://requestly.com/blog/afr-learn-frontend-development-with-free-tutorials-cheatsheets-docs/" rel="noopener noreferrer"&gt;Learn Frontend Development with Tutorials, Blogs, Courses, Books &amp;amp; Official Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Advanced Level
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Basics of Internet — Learn about the basics of the Internet, how it works, domain, hosting, &amp;amp; DNS, etc.&lt;/li&gt;
&lt;li&gt;HTML — Dive deeper into HTML, Accessibility, and SEO basics.&lt;/li&gt;
&lt;li&gt;CSS — Responsive CSS, Sass CSS, CSS Frameworks like Tailwind CSS, Material UI, Bootstrap, etc.&lt;/li&gt;
&lt;li&gt;JS — DOM Manipulation, AJAX, OOPS, Async.&lt;/li&gt;
&lt;li&gt;VCS Hosting — Learn to work with VCS Hosting providers like GitHub, GitLab, BitBucket, etc.&lt;/li&gt;
&lt;li&gt;Package Managers — Learn about other package managers like npm, yarn, etc.&lt;/li&gt;
&lt;li&gt;JS Framework — Learn in depth about the framework of your choice.&lt;/li&gt;
&lt;li&gt;Build Tools — Learn about automating tasks that make you efficient. Learn about linters &amp;amp; formatters.&lt;/li&gt;
&lt;li&gt;Testing — Get hold of testing frameworks like Jest, Vitest, Cypress, etc.&lt;/li&gt;
&lt;li&gt;Security Basics — Learn about security concepts like CORS, HTTPS, CSP, etc.&lt;/li&gt;
&lt;li&gt;Server Side Rendering(SSR) — Learn about how SSR works and the depth of the issues that can arise if not implemented properly.&lt;/li&gt;
&lt;li&gt;Static Site Generators(SSG) — Explore popular SSGs such as Gatsby, Jekyll, Hugo, and Next.js. Understand how SSGs improve performance, security, and scalability.&lt;/li&gt;
&lt;li&gt;Progressive Web App(PWA) — Learn how to create web apps that work offline, load quickly, and feel like native apps using Service Workers and Web App Manifests.&lt;/li&gt;
&lt;li&gt;Desktop Applications — Learn how to develop cross-platform desktop applications using frameworks like Electron and Tauri.&lt;/li&gt;
&lt;li&gt;Mobile Applications — Discover how to build mobile apps for iOS and Android using frameworks like React Native and Flutter.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Further Reading →
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Advance Frontend Development Roadmap&lt;/li&gt;
&lt;li&gt;Learn Advance Frontend Development with Tutorials, Blogs, Courses, Books &amp;amp; Official Docs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Joining the Developer Community
&lt;/h2&gt;

&lt;p&gt;Isolated learning is not always helpful; as humans, we need to connect with another human being to discuss, support, and network. Several online communities are available where you can connect with other developers with different experiences, technologies, and backgrounds. Connecting with others will give you a different perspective, be it on the problems you are facing or learning something new. Here are some of the platforms that you can explore:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Stack Overflow: A go-to platform for developers to ask questions and share knowledge. Contributing to discussions can help you learn faster and gain recognition.&lt;/li&gt;
&lt;li&gt;Reddit: Subreddits like r/webdev, r/javascript, and r/reactjs are treasure troves of information and community interaction.&lt;/li&gt;
&lt;li&gt;Dev.to: A community of software developers where you can read articles, share your knowledge, and get feedback from peers.&lt;/li&gt;
&lt;li&gt;Twitter: Follow influential developers and tech companies. Participate in Twitter threads and discussions to stay updated with the latest trends.&lt;/li&gt;
&lt;li&gt;LinkedIn: Connect with industry professionals, join relevant groups, and participate in discussions to expand your network.&lt;/li&gt;
&lt;li&gt;YouTube: Subscribe to channels that offer tutorials, tech talks, and coding live streams.&lt;/li&gt;
&lt;li&gt;Conferences: Attend events like React Conf, JSConf, and CSSConf to learn from industry leaders and network with like-minded individuals.&lt;/li&gt;
&lt;li&gt;Meet-ups: Join local or virtual meet-ups through platforms. These gatherings provide opportunities to exchange ideas and collaborate on projects.&lt;/li&gt;
&lt;li&gt;FreeCodeCamp: A nonprofit community that teaches you to code by building projects. It’s a supportive platform for learners at all stages.&lt;/li&gt;
&lt;li&gt;CodePen and JSFiddle: Share your code snippets, demos, and get feedback from other developers.&lt;/li&gt;
&lt;li&gt;Find a Mentor: Seek mentorship from experienced developers simply by asking someone whose work you admire.&lt;/li&gt;
&lt;li&gt;Peer Programming: Engage in pair programming sessions to learn collaboratively and gain new perspectives.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Open Source Contribution
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: Contribute to open-source projects to improve your coding skills and gain real-world experience. This is also a great way to get noticed by potential employers.&lt;/li&gt;
&lt;li&gt;GitLab: Explore and contribute to repositories hosted on GitLab. Engaging in open-source projects can enhance your problem-solving skills and collaborative abilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Coding Challenges and Hackathons
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;LeetCode, HackerRank, and CodeSignal: Enhance your problem-solving skills by participating in coding challenges.&lt;/li&gt;
&lt;li&gt;Hackathons: Participate in hackathons to work on projects, often in a team setting, which can boost your practical skills and provide networking opportunities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Being active in the developer community can provide invaluable insights, encourage continuous learning, and open doors to new opportunities. By engaging with others, you not only expand your skills but also build a network that can support your career growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Important Read
&lt;/h2&gt;

&lt;p&gt;All the steps mentioned here are not intended to scare you away from becoming a frontend developer. Instead, use them to set milestones and achieve your final goal of becoming an expert frontend developer.&lt;/p&gt;

&lt;p&gt;I have also started a GitHub repo to collate all the resources for frontend developers. It will be maintained actively to keep all the relevant information up-to-date. Here is the link → &lt;a href="https://github.com/requestly/awesome-frontend-resources/" rel="noopener noreferrer"&gt;https://github.com/requestly/awesome-frontend-resources/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://requestly.com/blog/afr-how-to-become-a-frontend-developer/" rel="noopener noreferrer"&gt;requestly.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>I'm building a collection of Awesome Frontend Resources, and need contributors.</title>
      <dc:creator>Abhishek Sachan</dc:creator>
      <pubDate>Mon, 17 Jun 2024 06:29:28 +0000</pubDate>
      <link>https://dev.to/abhishek-sachan/im-building-a-collection-of-awesome-frontend-resources-and-need-contributors-3bmd</link>
      <guid>https://dev.to/abhishek-sachan/im-building-a-collection-of-awesome-frontend-resources-and-need-contributors-3bmd</guid>
      <description>&lt;p&gt;Learning &amp;amp; upgrading is a constant need of software developers to stay relevant to the industry. And searching for new resources is not that easy task when demand of delivering those features takes up all the time.&lt;/p&gt;

&lt;p&gt;I have started curating a list of Frontend Resources helpful for Frontend Developer's at any level in the form of a GitHub repo. It consists of Roadmaps, Tutorials, Frameworks, Documentations. Also planning to add Interview Resources, Books, Tools, Extensions for Code Editors and Browsers, Best Practices and Patterns. All to help myself and fellow developers stay up-to-date with ever evolving technology. Below are the resources I have committed so far. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;GitHub Repo → &lt;a href="https://github.com/requestly/awesome-frontend-resources/" rel="noopener noreferrer"&gt;https://github.com/requestly/awesome-frontend-resources/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Awesome Frontend Resources
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Learning Paths and Roadmaps
&lt;/h2&gt;

&lt;p&gt;The journey of becoming a frontend developer can feel overwhelming, but structured learning paths and roadmaps can make the process more manageable and efficient. &lt;/p&gt;

&lt;h3&gt;
  
  
  DEVELOPMENT
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/frontend?r=frontend-beginner" rel="noopener noreferrer"&gt;Frontend Beginner Roadmap&lt;/a&gt; — A short roadmap for learning the basics before starting a frontend development role.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/frontend" rel="noopener noreferrer"&gt;Frontend Roadmap&lt;/a&gt; — A comprehensive roadmap covering all areas of frontend development, guiding you from beginner to expert level.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/full-stack" rel="noopener noreferrer"&gt;Full Stack Roadmap&lt;/a&gt; — Covers a wide range of technologies for both frontend and backend development, essential for full-stack development.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  LANGUAGES
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/javascript" rel="noopener noreferrer"&gt;JavaScript Roadmap&lt;/a&gt; — A comprehensive JavaScript roadmap starting from the basics and covering advanced topics.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/typescript" rel="noopener noreferrer"&gt;TypeScript Roadmap&lt;/a&gt; — An extensive TypeScript roadmap beginning with the fundamentals and progressing to advanced concepts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  FRAMEWORKS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/react" rel="noopener noreferrer"&gt;React Roadmap&lt;/a&gt; — A thorough React roadmap starting from the CLI and routers to testing and error boundaries, covering all essential concepts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/react-native" rel="noopener noreferrer"&gt;React Native Roadmap&lt;/a&gt; — A detailed guide for mastering React Native, from basics to advanced techniques in mobile app development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/vue" rel="noopener noreferrer"&gt;Vue Roadmap&lt;/a&gt; — A comprehensive roadmap for learning Vue.js, covering fundamental to advanced topics for building dynamic user interfaces.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/angular" rel="noopener noreferrer"&gt;Angular Roadmap&lt;/a&gt; — An extensive Angular roadmap guiding you through the framework's core features, modules, and advanced concepts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/nodejs" rel="noopener noreferrer"&gt;Node.js Roadmap&lt;/a&gt; — A complete roadmap for Node.js, encompassing server-side development, APIs, and advanced backend techniques.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MOBILE DEVELOPMENT
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/android" rel="noopener noreferrer"&gt;Android Roadmap&lt;/a&gt; — A step-by-step guide for Android development, covering all essential aspects from basic setup to advanced features.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/ios" rel="noopener noreferrer"&gt;iOS Roadmap&lt;/a&gt; — A comprehensive roadmap for iOS development, including Swift programming, UI design, and advanced iOS features.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/flutter" rel="noopener noreferrer"&gt;Flutter Roadmap&lt;/a&gt; — An in-depth guide for Flutter development, from initial setup to building and deploying cross-platform mobile apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ENGINEERING
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/software-design-architecture" rel="noopener noreferrer"&gt;Software Design and Architecture Roadmap&lt;/a&gt; — A detailed guide for understanding and implementing software design principles and architectural patterns.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/datastructures-and-algorithms" rel="noopener noreferrer"&gt;Data Structures Roadmap&lt;/a&gt; — A thorough roadmap for mastering data structures and algorithms, essential for efficient problem-solving in software development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/code-review" rel="noopener noreferrer"&gt;Code Review Roadmap&lt;/a&gt; — A comprehensive guide on how to conduct effective code reviews, improving code quality and team collaboration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learning Resources
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Books
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/getify/You-Dont-Know-JS/tree/2nd-ed?tab=readme-ov-file" rel="noopener noreferrer"&gt;You Don't Know JS Yet&lt;/a&gt; — A comprehensive series diving deep into JavaScript concepts and mechanics.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://eloquentjavascript.net/index.html" rel="noopener noreferrer"&gt;Eloquent Javascript&lt;/a&gt; — A modern introduction to JavaScript, covering the language's core features and best practices.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://javascript.sumankunwar.com.np/en/" rel="noopener noreferrer"&gt;Learn Javascript: Beginer Edition&lt;/a&gt; — A beginner-friendly guide to learning JavaScript from the ground up.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Online Library
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://openlibrary.org/" rel="noopener noreferrer"&gt;Open Library&lt;/a&gt; — A vast digital library offering free access to millions of books, including many on programming and JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tutorials
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://javascript.info/" rel="noopener noreferrer"&gt;Javascript.info&lt;/a&gt; — A detailed and interactive JavaScript tutorial covering basic to advanced topics.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;MDN: Mozilla Developer Network&lt;/a&gt; — Comprehensive documentation and tutorials for JavaScript and web development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.patterns.dev/" rel="noopener noreferrer"&gt;JavaScrip Design Patterns&lt;/a&gt; — A resource for learning design patterns in JavaScript for writing clean and efficient code.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mostly-adequate.gitbook.io/mostly-adequate-guide" rel="noopener noreferrer"&gt;Professor Frisby's Mostly Adequate Guide to Functional Programming&lt;/a&gt; — An accessible guide to functional programming concepts in JavaScript.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;React

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=SqcY0GlETPk" rel="noopener noreferrer"&gt;Youtube: React Tutorial for Beginners&lt;/a&gt; — A beginner-friendly video tutorial introducing the fundamentals of React.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;React Native

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://reactnative.dev/docs/getting-started" rel="noopener noreferrer"&gt;Official: Tutorial cum Doc&lt;/a&gt; — The official React Native documentation and tutorial for getting started.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/playlist?list=PLC3y8-rFHvwhiQJD1di4eRVN30WWCXkg1" rel="noopener noreferrer"&gt;Youtube: React Native Tutorial for Beginners by Codevolution&lt;/a&gt; — A beginner's guide to learning React Native, covering the basics of building mobile apps.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=ZBCUegTZF7M" rel="noopener noreferrer"&gt;Youtube: React Native Course for Beginners by JavaScript Mastry&lt;/a&gt; — A comprehensive course for beginners to learn React Native.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Vue

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://vuejs.org/tutorial/" rel="noopener noreferrer"&gt;Official: Tutorial&lt;/a&gt; — The official Vue.js tutorial for learning the basics and advanced concepts of the framework.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/playlist?list=PL4cUxeGkcC9gCtAuEdXTjNVE5bbMFo5OD" rel="noopener noreferrer"&gt;Youtube: Vue 3 with TypeScript Jump Start&lt;/a&gt; — A beginner's guide to learning Vue 3 with TypeScript, providing a solid foundation in both technologies.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Angular

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://angular.dev/tutorials/learn-angular" rel="noopener noreferrer"&gt;Official: Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JWhRMyyF7nc" rel="noopener noreferrer"&gt;Youtube: Learn Angular A-Z: Complete Tutorial for Beginners&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Node

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/get-started-with-nodejs/" rel="noopener noreferrer"&gt;How to Get Started with NodeJS – a Handbook for Beginners&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/en/learn/getting-started/introduction-to-nodejs" rel="noopener noreferrer"&gt;Official: Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Apple

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.apple.com/learn/" rel="noopener noreferrer"&gt;Official Swift Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Courses
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.codecademy.com/learn/introduction-to-javascript" rel="noopener noreferrer"&gt;CodeAcademy: Introduction to JS&lt;/a&gt; — An interactive course introducing the basics of JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures-v8/" rel="noopener noreferrer"&gt;freeCodeCamp: JavaScript Algorithms and Data Structures&lt;/a&gt; — A free course covering JavaScript fundamentals, algorithms, and data structures.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.theodinproject.com/paths/full-stack-javascript/courses/javascript" rel="noopener noreferrer"&gt;TheOdinProject: JavaScript Course&lt;/a&gt; — A comprehensive course for learning JavaScript in the context of full-stack development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=hdI2bqOjy3c" rel="noopener noreferrer"&gt;Youtube: Traversy Crash Course in Javascript&lt;/a&gt; — A popular crash course on JavaScript fundamentals by Traversy Media.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/playlist?list=PLillGF-Rfqbars4vKNtpcWVDUpVOVTlgB" rel="noopener noreferrer"&gt;Youtube: Javascript Under The Hood&lt;/a&gt; — A video series exploring the inner workings of JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Articles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.codewars.com/post/typescript-and-javascript-the-relationship-explained" rel="noopener noreferrer"&gt;TypeScript vs JavaScript&lt;/a&gt; — An article explaining the relationship and differences between TypeScript and JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Videos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=8aGhZQkoFbQ" rel="noopener noreferrer"&gt;What the heck is the event loop anyway?&lt;/a&gt; — A clear and engaging explanation of the JavaScript event loop.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=vKJpN5FAeF4" rel="noopener noreferrer"&gt;Closures Explained in 100 Seconds&lt;/a&gt; — A quick and concise video explaining JavaScript closures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Docs &amp;amp; CheatSheets
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cheatsheets
&lt;/h3&gt;

&lt;p&gt;Cheatsheets act as quick references for you, boosting memory and saving time by summarizing key concepts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://websitesetup.org/html5-cheat-sheet/" rel="noopener noreferrer"&gt;HTML Cheatsheets&lt;/a&gt; — A handy reference for HTML5 elements and attributes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Official Documentations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;JavaScript(MDN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://react.dev/reference/react" rel="noopener noreferrer"&gt;React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactnative.dev/docs/getting-started" rel="noopener noreferrer"&gt;React Native&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vuejs.org/guide/introduction.html" rel="noopener noreferrer"&gt;Vue.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.dev/overview" rel="noopener noreferrer"&gt;Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/docs/latest/api/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.android.com/develop" rel="noopener noreferrer"&gt;Android&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Communities
&lt;/h2&gt;

&lt;p&gt;Communities helps you connect with fellow developers. You can get benefits like shared knowledge, support, and career opportunities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/"&gt;dev.to&lt;/a&gt; — A community platform for developers to share articles, tutorials, and discussions.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/Frontend/" rel="noopener noreferrer"&gt;r/Frontend&lt;/a&gt; — A Reddit community focused on frontend development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/learnjavascript/" rel="noopener noreferrer"&gt;r/learnjavascript&lt;/a&gt; — A Reddit community for JavaScript learners to ask questions and share knowledge.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/javascript/" rel="noopener noreferrer"&gt;r/javascript&lt;/a&gt; — A Reddit community for discussing all things JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Open Source Contributions
&lt;/h2&gt;

&lt;p&gt;Open source are good way to start and practice your coding skills. It helps you learn from the best and show off your coding skills, that greatly help you in career.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blog.rysolv.com/how-to-contribute-to-open-source" rel="noopener noreferrer"&gt;How to contribute to open source&lt;/a&gt; — A guide on how to start contributing to open-source projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to find repos to contribute&lt;/strong&gt; — Search on GitHub with label → &lt;code&gt;first-timers-only&lt;/code&gt; to find out the issues that are good for first time contributors. Further filter with programming language of your choice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repos inviting contributors&lt;/strong&gt; — Search on GitHub with label → &lt;code&gt;help-wanted&lt;/code&gt; to find out the repos that are inviting contributors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please let me know if you find these helpful.&lt;/p&gt;




&lt;p&gt;For further updates star us on Github → &lt;a href="https://github.com/requestly/awesome-frontend-resources/" rel="noopener noreferrer"&gt;https://github.com/requestly/awesome-frontend-resources/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;I also want to invite your contributions, if you have an awesome resource that you think is valuable for other developers, please comment or commit, welcoming both.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>I'm building a collection of Awesome Frontend Resources, and need contributors.</title>
      <dc:creator>Abhishek Sachan</dc:creator>
      <pubDate>Mon, 17 Jun 2024 06:29:28 +0000</pubDate>
      <link>https://dev.to/abhishek-sachan/im-building-a-collection-of-awesome-frontend-resources-and-need-contributors-4337</link>
      <guid>https://dev.to/abhishek-sachan/im-building-a-collection-of-awesome-frontend-resources-and-need-contributors-4337</guid>
      <description>&lt;p&gt;Learning &amp;amp; upgrading is a constant need of software developers to stay relevant to the industry. And searching for new resources is not that easy task when demand of delivering those features takes up all the time.&lt;/p&gt;

&lt;p&gt;I have started curating a list of Frontend Resources helpful for Frontend Developer's at any level in the form of a GitHub repo. It consists of Roadmaps, Tutorials, Frameworks, Documentations. Also planning to add Interview Resources, Books, Tools, Extensions for Code Editors and Browsers, Best Practices and Patterns. All to help myself and fellow developers stay up-to-date with ever evolving technology. Below are the resources I have committed so far. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;GitHub Repo → &lt;a href="https://github.com/requestly/awesome-frontend-resources/" rel="noopener noreferrer"&gt;https://github.com/requestly/awesome-frontend-resources/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Awesome Frontend Resources
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Learning Paths and Roadmaps
&lt;/h2&gt;

&lt;p&gt;The journey of becoming a frontend developer can feel overwhelming, but structured learning paths and roadmaps can make the process more manageable and efficient. &lt;/p&gt;

&lt;h3&gt;
  
  
  DEVELOPMENT
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/frontend?r=frontend-beginner" rel="noopener noreferrer"&gt;Frontend Beginner Roadmap&lt;/a&gt; — A short roadmap for learning the basics before starting a frontend development role.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/frontend" rel="noopener noreferrer"&gt;Frontend Roadmap&lt;/a&gt; — A comprehensive roadmap covering all areas of frontend development, guiding you from beginner to expert level.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/full-stack" rel="noopener noreferrer"&gt;Full Stack Roadmap&lt;/a&gt; — Covers a wide range of technologies for both frontend and backend development, essential for full-stack development.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  LANGUAGES
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/javascript" rel="noopener noreferrer"&gt;JavaScript Roadmap&lt;/a&gt; — A comprehensive JavaScript roadmap starting from the basics and covering advanced topics.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/typescript" rel="noopener noreferrer"&gt;TypeScript Roadmap&lt;/a&gt; — An extensive TypeScript roadmap beginning with the fundamentals and progressing to advanced concepts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  FRAMEWORKS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/react" rel="noopener noreferrer"&gt;React Roadmap&lt;/a&gt; — A thorough React roadmap starting from the CLI and routers to testing and error boundaries, covering all essential concepts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/react-native" rel="noopener noreferrer"&gt;React Native Roadmap&lt;/a&gt; — A detailed guide for mastering React Native, from basics to advanced techniques in mobile app development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/vue" rel="noopener noreferrer"&gt;Vue Roadmap&lt;/a&gt; — A comprehensive roadmap for learning Vue.js, covering fundamental to advanced topics for building dynamic user interfaces.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/angular" rel="noopener noreferrer"&gt;Angular Roadmap&lt;/a&gt; — An extensive Angular roadmap guiding you through the framework's core features, modules, and advanced concepts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/nodejs" rel="noopener noreferrer"&gt;Node.js Roadmap&lt;/a&gt; — A complete roadmap for Node.js, encompassing server-side development, APIs, and advanced backend techniques.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MOBILE DEVELOPMENT
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/android" rel="noopener noreferrer"&gt;Android Roadmap&lt;/a&gt; — A step-by-step guide for Android development, covering all essential aspects from basic setup to advanced features.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/ios" rel="noopener noreferrer"&gt;iOS Roadmap&lt;/a&gt; — A comprehensive roadmap for iOS development, including Swift programming, UI design, and advanced iOS features.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/flutter" rel="noopener noreferrer"&gt;Flutter Roadmap&lt;/a&gt; — An in-depth guide for Flutter development, from initial setup to building and deploying cross-platform mobile apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ENGINEERING
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/software-design-architecture" rel="noopener noreferrer"&gt;Software Design and Architecture Roadmap&lt;/a&gt; — A detailed guide for understanding and implementing software design principles and architectural patterns.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/datastructures-and-algorithms" rel="noopener noreferrer"&gt;Data Structures Roadmap&lt;/a&gt; — A thorough roadmap for mastering data structures and algorithms, essential for efficient problem-solving in software development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roadmap.sh/code-review" rel="noopener noreferrer"&gt;Code Review Roadmap&lt;/a&gt; — A comprehensive guide on how to conduct effective code reviews, improving code quality and team collaboration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learning Resources
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Books
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/getify/You-Dont-Know-JS/tree/2nd-ed?tab=readme-ov-file" rel="noopener noreferrer"&gt;You Don't Know JS Yet&lt;/a&gt; — A comprehensive series diving deep into JavaScript concepts and mechanics.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://eloquentjavascript.net/index.html" rel="noopener noreferrer"&gt;Eloquent Javascript&lt;/a&gt; — A modern introduction to JavaScript, covering the language's core features and best practices.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://javascript.sumankunwar.com.np/en/" rel="noopener noreferrer"&gt;Learn Javascript: Beginer Edition&lt;/a&gt; — A beginner-friendly guide to learning JavaScript from the ground up.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Online Library
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://openlibrary.org/" rel="noopener noreferrer"&gt;Open Library&lt;/a&gt; — A vast digital library offering free access to millions of books, including many on programming and JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tutorials
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://javascript.info/" rel="noopener noreferrer"&gt;Javascript.info&lt;/a&gt; — A detailed and interactive JavaScript tutorial covering basic to advanced topics.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;MDN: Mozilla Developer Network&lt;/a&gt; — Comprehensive documentation and tutorials for JavaScript and web development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.patterns.dev/" rel="noopener noreferrer"&gt;JavaScrip Design Patterns&lt;/a&gt; — A resource for learning design patterns in JavaScript for writing clean and efficient code.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mostly-adequate.gitbook.io/mostly-adequate-guide" rel="noopener noreferrer"&gt;Professor Frisby's Mostly Adequate Guide to Functional Programming&lt;/a&gt; — An accessible guide to functional programming concepts in JavaScript.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;React

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=SqcY0GlETPk" rel="noopener noreferrer"&gt;Youtube: React Tutorial for Beginners&lt;/a&gt; — A beginner-friendly video tutorial introducing the fundamentals of React.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;React Native

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://reactnative.dev/docs/getting-started" rel="noopener noreferrer"&gt;Official: Tutorial cum Doc&lt;/a&gt; — The official React Native documentation and tutorial for getting started.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/playlist?list=PLC3y8-rFHvwhiQJD1di4eRVN30WWCXkg1" rel="noopener noreferrer"&gt;Youtube: React Native Tutorial for Beginners by Codevolution&lt;/a&gt; — A beginner's guide to learning React Native, covering the basics of building mobile apps.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=ZBCUegTZF7M" rel="noopener noreferrer"&gt;Youtube: React Native Course for Beginners by JavaScript Mastry&lt;/a&gt; — A comprehensive course for beginners to learn React Native.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Vue

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://vuejs.org/tutorial/" rel="noopener noreferrer"&gt;Official: Tutorial&lt;/a&gt; — The official Vue.js tutorial for learning the basics and advanced concepts of the framework.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/playlist?list=PL4cUxeGkcC9gCtAuEdXTjNVE5bbMFo5OD" rel="noopener noreferrer"&gt;Youtube: Vue 3 with TypeScript Jump Start&lt;/a&gt; — A beginner's guide to learning Vue 3 with TypeScript, providing a solid foundation in both technologies.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Angular

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://angular.dev/tutorials/learn-angular" rel="noopener noreferrer"&gt;Official: Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JWhRMyyF7nc" rel="noopener noreferrer"&gt;Youtube: Learn Angular A-Z: Complete Tutorial for Beginners&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Node

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/get-started-with-nodejs/" rel="noopener noreferrer"&gt;How to Get Started with NodeJS – a Handbook for Beginners&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/en/learn/getting-started/introduction-to-nodejs" rel="noopener noreferrer"&gt;Official: Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Apple

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.apple.com/learn/" rel="noopener noreferrer"&gt;Official Swift Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Courses
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.codecademy.com/learn/introduction-to-javascript" rel="noopener noreferrer"&gt;CodeAcademy: Introduction to JS&lt;/a&gt; — An interactive course introducing the basics of JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures-v8/" rel="noopener noreferrer"&gt;freeCodeCamp: JavaScript Algorithms and Data Structures&lt;/a&gt; — A free course covering JavaScript fundamentals, algorithms, and data structures.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.theodinproject.com/paths/full-stack-javascript/courses/javascript" rel="noopener noreferrer"&gt;TheOdinProject: JavaScript Course&lt;/a&gt; — A comprehensive course for learning JavaScript in the context of full-stack development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=hdI2bqOjy3c" rel="noopener noreferrer"&gt;Youtube: Traversy Crash Course in Javascript&lt;/a&gt; — A popular crash course on JavaScript fundamentals by Traversy Media.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/playlist?list=PLillGF-Rfqbars4vKNtpcWVDUpVOVTlgB" rel="noopener noreferrer"&gt;Youtube: Javascript Under The Hood&lt;/a&gt; — A video series exploring the inner workings of JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Articles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.codewars.com/post/typescript-and-javascript-the-relationship-explained" rel="noopener noreferrer"&gt;TypeScript vs JavaScript&lt;/a&gt; — An article explaining the relationship and differences between TypeScript and JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Videos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=8aGhZQkoFbQ" rel="noopener noreferrer"&gt;What the heck is the event loop anyway?&lt;/a&gt; — A clear and engaging explanation of the JavaScript event loop.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=vKJpN5FAeF4" rel="noopener noreferrer"&gt;Closures Explained in 100 Seconds&lt;/a&gt; — A quick and concise video explaining JavaScript closures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Docs &amp;amp; CheatSheets
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cheatsheets
&lt;/h3&gt;

&lt;p&gt;Cheatsheets act as quick references for you, boosting memory and saving time by summarizing key concepts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://websitesetup.org/html5-cheat-sheet/" rel="noopener noreferrer"&gt;HTML Cheatsheets&lt;/a&gt; — A handy reference for HTML5 elements and attributes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Official Documentations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;JavaScript(MDN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://react.dev/reference/react" rel="noopener noreferrer"&gt;React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactnative.dev/docs/getting-started" rel="noopener noreferrer"&gt;React Native&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vuejs.org/guide/introduction.html" rel="noopener noreferrer"&gt;Vue.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.dev/overview" rel="noopener noreferrer"&gt;Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/docs/latest/api/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.android.com/develop" rel="noopener noreferrer"&gt;Android&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Communities
&lt;/h2&gt;

&lt;p&gt;Communities helps you connect with fellow developers. You can get benefits like shared knowledge, support, and career opportunities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/"&gt;dev.to&lt;/a&gt; — A community platform for developers to share articles, tutorials, and discussions.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/Frontend/" rel="noopener noreferrer"&gt;r/Frontend&lt;/a&gt; — A Reddit community focused on frontend development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/learnjavascript/" rel="noopener noreferrer"&gt;r/learnjavascript&lt;/a&gt; — A Reddit community for JavaScript learners to ask questions and share knowledge.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/javascript/" rel="noopener noreferrer"&gt;r/javascript&lt;/a&gt; — A Reddit community for discussing all things JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Open Source Contributions
&lt;/h2&gt;

&lt;p&gt;Open source are good way to start and practice your coding skills. It helps you learn from the best and show off your coding skills, that greatly help you in career.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blog.rysolv.com/how-to-contribute-to-open-source" rel="noopener noreferrer"&gt;How to contribute to open source&lt;/a&gt; — A guide on how to start contributing to open-source projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to find repos to contribute&lt;/strong&gt; — Search on GitHub with label → &lt;code&gt;first-timers-only&lt;/code&gt; to find out the issues that are good for first time contributors. Further filter with programming language of your choice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repos inviting contributors&lt;/strong&gt; — Search on GitHub with label → &lt;code&gt;help-wanted&lt;/code&gt; to find out the repos that are inviting contributors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please let me know if you find these helpful.&lt;/p&gt;




&lt;p&gt;For further updates star on Github → &lt;a href="https://github.com/requestly/awesome-frontend-resources/" rel="noopener noreferrer"&gt;https://github.com/requestly/awesome-frontend-resources/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;I also want to invite your contributions, if you have an awesome resource that you think is valuable for other developers, please comment or commit, welcoming both.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;

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