<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Garima Bisht</title>
    <description>The latest articles on Forem by Garima Bisht (@gariglow).</description>
    <link>https://forem.com/gariglow</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%2F699141%2F4b39e286-2611-42fd-a5a1-34380e9190d9.jpeg</url>
      <title>Forem: Garima Bisht</title>
      <link>https://forem.com/gariglow</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gariglow"/>
    <language>en</language>
    <item>
      <title>Claude Code Feature....</title>
      <dc:creator>Garima Bisht</dc:creator>
      <pubDate>Tue, 03 Feb 2026 18:47:56 +0000</pubDate>
      <link>https://forem.com/gariglow/claude-code-feature-nlh</link>
      <guid>https://forem.com/gariglow/claude-code-feature-nlh</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/rajeshroyal" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F356106%2Fb9af8960-6d35-454f-aaf7-a4a0e1bde3e4.jpg" alt="rajeshroyal"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/rajeshroyal/lsp-ide-level-code-intelligence-for-claude-4kp5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;LSP: IDE-Level Code Intelligence for Claude&lt;/h2&gt;
      &lt;h3&gt;Rajesh Royal ・ Feb 3&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#claudecode&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>tutorial</category>
      <category>claudecode</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🔥 Firebase Studio officially launched.......</title>
      <dc:creator>Garima Bisht</dc:creator>
      <pubDate>Fri, 02 May 2025 18:29:23 +0000</pubDate>
      <link>https://forem.com/gariglow/an-introduction-to-firebase-studio-1lb1</link>
      <guid>https://forem.com/gariglow/an-introduction-to-firebase-studio-1lb1</guid>
      <description>&lt;p&gt;Firebase Studio was officially launched in preview on April 9, 2025, as announced on the Firebase blog. It is a cloud-based, agentic development environment designed to accelerate the building, testing, deployment, and running of production-quality AI applications—all within a unified platform.&lt;br&gt;
Previously known as Project IDX, Firebase Studio integrates features from Visual Studio Code, enhanced with Google's Gemini AI assistant, and supports various frameworks like React, Angular, Flutter, and Node.js. It also includes built-in iOS and Android emulators, providing developers with a comprehensive, browser-based development experience.&lt;br&gt;
For more information and to get started, you can visit the official Firebase Studio documentation.&lt;br&gt;
As modern web and mobile applications grow more complex, developers increasingly rely on powerful backend platforms to streamline development, handle authentication, store data, and manage hosting. Firebase, a Backend-as-a-Service (BaaS) platform by Google, offers a robust suite of tools that make it easy to build full-featured apps without managing your own server infrastructure.&lt;/p&gt;

&lt;p&gt;📦 Conclusion&lt;br&gt;
Whether you're building a simple blog or a complex real-time app, Firebase provides a comprehensive toolkit. The Firebase Console gives you a powerful cloud dashboard, while the Emulator Suite allows you to develop and test locally like a pro. Together, they form what many developers refer to as "Firebase Studio" — your command center for rapid, scalable, and secure app development.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>backend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Scope of React</title>
      <dc:creator>Garima Bisht</dc:creator>
      <pubDate>Fri, 02 May 2025 16:42:43 +0000</pubDate>
      <link>https://forem.com/gariglow/scope-of-react-10ko</link>
      <guid>https://forem.com/gariglow/scope-of-react-10ko</guid>
      <description>&lt;p&gt;The selection of the right technology for application or web development is becoming more challenging. React has been considered to be the fastest-growing Javascript framework among all. The tools of Javascript are firming their roots slowly and steadily in the marketplace and the React certification demand is exponentially increasing. React is a clear win for front-end developers as it has a quick learning curve, clean abstraction, and reusable components. Currently, there is no end in sight for React as it keeps evolving.&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>career</category>
    </item>
    <item>
      <title>Those Golden Era of React...👩‍💻☺️</title>
      <dc:creator>Garima Bisht</dc:creator>
      <pubDate>Mon, 28 Apr 2025 13:02:07 +0000</pubDate>
      <link>https://forem.com/gariglow/those-golden-era-of-react-57a6</link>
      <guid>https://forem.com/gariglow/those-golden-era-of-react-57a6</guid>
      <description>&lt;p&gt;Create React App nostalgia 👩‍💻☺️ — back to those golden days, 2 years ago, when we coded everything manually without any v0 ,windsurf &amp;amp; copilot.  # just Pure passion, pure grind &lt;/p&gt;

&lt;p&gt;Old Passion 🌹🖌️🖼️🎨 - &lt;a href="https://painting-website-six.vercel.app/" rel="noopener noreferrer"&gt;https://painting-website-six.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Getting Started with Create React App
&lt;/h1&gt;

&lt;p&gt;This project was bootstrapped with &lt;a href="https://github.com/facebook/create-react-app" rel="noopener noreferrer"&gt;Create React App&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Available Scripts
&lt;/h2&gt;

&lt;p&gt;In the project directory, you can run:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;npm start&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Runs the app in the development mode.\&lt;br&gt;
Open &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; to view it in your browser.&lt;/p&gt;

&lt;p&gt;The page will reload when you make changes.\&lt;br&gt;
You may also see any lint errors in the console.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn More
&lt;/h2&gt;

&lt;p&gt;You can learn more in the &lt;a href="https://facebook.github.io/create-react-app/docs/getting-started" rel="noopener noreferrer"&gt;Create React App documentation&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Secure Your Node.js APIS</title>
      <dc:creator>Garima Bisht</dc:creator>
      <pubDate>Sun, 27 Apr 2025 06:44:12 +0000</pubDate>
      <link>https://forem.com/gariglow/how-to-secure-your-nodejs-apis-3gn6</link>
      <guid>https://forem.com/gariglow/how-to-secure-your-nodejs-apis-3gn6</guid>
      <description>&lt;p&gt;Security isn’t just a feature – it’s a habit. You can’t do everything all at once, but you can start with a few key changes.&lt;br&gt;
If you’ve built an API with Node.js, chances are you’ve thought about security – at least a little.&lt;br&gt;
Maybe you’ve heard about SQL injection, brute force attacks, or data leaks.&lt;/p&gt;

&lt;p&gt;But here’s the thing: it’s not just about big hacks. Even small gaps in your API can lead to big problems. And no one wants to get that “your data’s been exposed” message.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
Use environment variables. Validate your inputs. Add rate limiting. Move to HTTPS. Install Helmet. Sanitize everything. Lock down your authentication.&lt;/p&gt;

&lt;p&gt;In this article, I’ll walk you through seven ways to harden your Node.js API.&lt;/p&gt;

&lt;p&gt;These are practical tips you can apply right away. I’ll keep the code examples simple and the language even simpler. Let’s get into it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Use Environment Variables&lt;/strong&gt;&lt;br&gt;
Storing sensitive data like database credentials, API keys, or JWT secrets directly in your code is risky. If your code ends up in the wrong hands, so does everything else.&lt;/p&gt;

&lt;p&gt;Instead, store this data in a .env file and use the dotenv package to access it:&lt;/p&gt;

&lt;p&gt;require('dotenv').config();&lt;br&gt;
const dbPassword = process.env.DB_PASSWORD;&lt;br&gt;
Make sure you never commit your .env file. Add it to your .gitignore file to keep it private.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Validate All Input&lt;/strong&gt;&lt;br&gt;
Attackers love user input.&lt;/p&gt;

&lt;p&gt;If you don’t check what comes into your API, they’ll sneak in commands, inject code, or crash your app.&lt;/p&gt;

&lt;p&gt;The best way to stop them is by validating every piece of input. Use a package like Joi or zod to define what your API expects:&lt;/p&gt;

&lt;p&gt;const Joi = require('joi');&lt;/p&gt;

&lt;p&gt;const schema = Joi.object({&lt;br&gt;
  username: Joi.string().alphanum().min(3).max(30).required(),&lt;br&gt;
  password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{6,30}$')).required()&lt;br&gt;
});&lt;br&gt;
const { error } = schema.validate(req.body);&lt;br&gt;
if (error) {&lt;br&gt;
  return res.status(400).send(error.details[0].message);&lt;br&gt;
}&lt;br&gt;
In the above code, we have defined the exact data type the schema expects. This way, wrong data gets blocked before it reaches your logic or database.&lt;br&gt;
&lt;strong&gt;3. Rate Limit Your Endpoints&lt;/strong&gt;&lt;br&gt;
Bots and brute force attacks work by flooding your server with requests. Once your server reaches it limit, your API will crash.&lt;/p&gt;

&lt;p&gt;Set a limit on how often a user can hit your API using middleware like express-rate-limit Here is an example.&lt;/p&gt;

&lt;p&gt;const rateLimit = require('express-rate-limit');&lt;/p&gt;

&lt;p&gt;const limiter = rateLimit({&lt;br&gt;
  windowMs: 15 * 60 * 1000, // 15 minutes&lt;br&gt;
  max: 100 // limit each IP to 100 requests per windowMs&lt;br&gt;
});&lt;br&gt;
app.use('/api/', limiter);&lt;br&gt;
The above code restricts API requests coming from an IP address to 100 per 15 minutes. This is like putting a speed bump in front of a runaway car.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Always Use HTTPS&lt;/strong&gt;&lt;br&gt;
HTTP sends data in plain text. That means anyone between your server and the user can read it. HTTPS encrypts everything. It’s not optional anymore.&lt;/p&gt;

&lt;p&gt;If you’re using a platform like Heroku or Vercel, HTTPS is automatic. If you’re self-hosting, you can set it up with services like Let’s Encrypt.&lt;/p&gt;

&lt;p&gt;Also, force HTTPS on all incoming traffic. You can use middleware like this:&lt;/p&gt;

&lt;p&gt;app.use((req, res, next) =&amp;gt; {&lt;br&gt;
  if (req.headers['x-forwarded-proto'] !== 'https') {&lt;br&gt;
    return res.redirect('https://' + req.headers.host + req.url);&lt;br&gt;
  }&lt;br&gt;
  next();&lt;br&gt;
});&lt;br&gt;
Encrypt the ride. Always.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Use Helmet to Secure HTTP Headers&lt;/strong&gt;&lt;br&gt;
HTTP headers are key-value pairs sent in requests and responses over the web. They give extra information about what’s being sent – like who’s sending it, what type it is, how it should be handled, and more.&lt;/p&gt;

&lt;p&gt;HTTP headers are small, but they can be powerful tools to protect your app. Helmet is a Node.js middleware that sets secure headers for you.&lt;/p&gt;

&lt;p&gt;const helmet = require('helmet');&lt;br&gt;
app.use(helmet());&lt;br&gt;
Helmet helps prevent attacks like cross-site scripting (XSS), clickjacking, and others just by setting the right headers.&lt;/p&gt;

&lt;p&gt;One line of code, a big step up in security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Sanitize Data to Prevent Injection Attacks&lt;/strong&gt;&lt;br&gt;
Injection attacks happen when you blindly trust input and plug it into a command or query.&lt;/p&gt;

&lt;p&gt;For example, an attacker might submit a piece of text that turns into a command in your database.&lt;/p&gt;

&lt;p&gt;You should sanitize data before it gets to any sensitive function. Libraries like express-mongo-sanitize or xss-clean help clean up malicious input.&lt;/p&gt;

&lt;p&gt;const mongoSanitize = require('express-mongo-sanitize');&lt;br&gt;
const xss = require('xss-clean');&lt;/p&gt;

&lt;p&gt;app.use(mongoSanitize());&lt;br&gt;
app.use(xss());&lt;br&gt;
This strips out dangerous characters and scripts that could do real damage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Use Strong Authentication and Authorisation&lt;/strong&gt;&lt;br&gt;
Authentication is about knowing who the user is, and authorisation is about what they can do. You need both, and you need them to be strong.&lt;/p&gt;

&lt;p&gt;Use JWT (JSON Web Tokens) or sessions to manage logged-in users. Here’s a quick JWT example:&lt;/p&gt;

&lt;p&gt;const jwt = require('jsonwebtoken');&lt;/p&gt;

&lt;p&gt;const token = jwt.sign({ id: user._id }, process.env.JWT_SECRET, {&lt;br&gt;
  expiresIn: '1h'&lt;br&gt;
});&lt;br&gt;
Always verify the token before letting a user access protected routes:&lt;/p&gt;

&lt;p&gt;const decoded = jwt.verify(token, process.env.JWT_SECRET);&lt;br&gt;
And don’t forget roles. A user who can view data shouldn’t be able to delete it unless they’re supposed to.&lt;/p&gt;

</description>
      <category>node</category>
      <category>api</category>
      <category>prisma</category>
    </item>
    <item>
      <title>Vibe Coding is the Trend Now</title>
      <dc:creator>Garima Bisht</dc:creator>
      <pubDate>Sat, 26 Apr 2025 11:37:50 +0000</pubDate>
      <link>https://forem.com/gariglow/vibe-coding-is-the-trend-now-4iap</link>
      <guid>https://forem.com/gariglow/vibe-coding-is-the-trend-now-4iap</guid>
      <description>&lt;p&gt;Think about a few years ago when LLMs weren't so popular. If you were interested in programming or wanted to create an application? You had to commit to a long journey of learning how to code. Depending on your ability, it could be expensive both time-wise and money-wise. Many great ideas never saw the light just because the ideator didn't know how to code and couldn't hire developers.&lt;/p&gt;

&lt;p&gt;With vibe coding, that scene has changed forever. From prototyping weekend pet projects to building semi-professional-grade software, AI can often do it if you're able to guide it properly. The bar for making software has lowered compared to just a few years ago.&lt;/p&gt;

&lt;p&gt;You don't need to understand any code, let alone write any. You don't need to know anything that's happening behind the scenes. No need to learn complex algorithms. Who wouldn't want that? But, is it really that easy? Can you vibe code anything without knowing how to code? Not quite. That's why I'm not ready to give in to vibe coding yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your Coding Skill Still Matters&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What's New in Node.JS 24</title>
      <dc:creator>Garima Bisht</dc:creator>
      <pubDate>Fri, 25 Apr 2025 11:40:33 +0000</pubDate>
      <link>https://forem.com/gariglow/whats-new-in-nodejs-24-58nd</link>
      <guid>https://forem.com/gariglow/whats-new-in-nodejs-24-58nd</guid>
      <description>&lt;p&gt;👩‍💻🤩Node.js is reaching its 24th major version, and it comes with a host of new features and improvements. This release will be the Current release for the next six months becoming LTS in October 2025. Let’s walk through the highlights of this release.&lt;/p&gt;

&lt;p&gt;Upgrade to V8 to 13.4 👩‍💻🤩&lt;br&gt;
With this upgrade to the dependency that allows Node.js to run JavaScript, we now have access to a couple of new&lt;br&gt;
features for writing more secure and efficient code.&lt;br&gt;
&lt;strong&gt;Error.isError&lt;/strong&gt;&lt;br&gt;
Error.isError is a static method that checks if a given value is an instance of the Error regardless of its realm.&lt;/p&gt;

&lt;p&gt;You probably fell (or know someone who has) into the trap of using instanceof to check if an error is an instance of Error and got surprised when an object that you were sure was an Error instance got returned as false.&lt;/p&gt;

&lt;p&gt;const vm = require('node:vm');&lt;/p&gt;

&lt;p&gt;function logError(err) {&lt;br&gt;
  if (err instanceof Error) {&lt;br&gt;
    console.error('Caught an error:', err);&lt;br&gt;
  } else {&lt;br&gt;
    console.error('You must provide an Error instance');&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;const context = vm.createContext();&lt;/p&gt;

&lt;p&gt;try {&lt;br&gt;
  vm.runInContext(&lt;code&gt;&lt;br&gt;
    throw new Error("Something went wrong in another realm");&lt;br&gt;
&lt;/code&gt;, context);&lt;br&gt;
} catch (err) {&lt;br&gt;
  logError(err); // This won't work correctly. Output will be: You must provide an Error instance&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This is the nature of JavaScript. It was complicated to have, for example, a centralized error-handling system that could catch errors from different realms. Everything is simplified with this new method.&lt;/p&gt;

&lt;p&gt;Change the logError function, replacing the instanceof check with Error.isError and it will work as expected.&lt;/p&gt;

&lt;p&gt;function logError(err) {&lt;br&gt;
  if (Error.isError(err)) {&lt;br&gt;
    console.error('Caught an error:', err);&lt;br&gt;
  } else {&lt;br&gt;
    console.error('You must provide an Error instance');&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explicit Resource Management (using, using await)&lt;/strong&gt;🤗👩‍💻&lt;br&gt;
Explicit Resource Management introduces new syntax and semantics to JavaScript, aiming to provide a standardized way to manage the lifecycle of resources like file handles, network connections, or database cursors. This is particularly useful for ensuring that such resources are properly released, even in the presence of errors or early exits.&lt;/p&gt;

&lt;p&gt;With this new feature, you can use the using statement to declare a resource that should be automatically released when it goes out of scope. &lt;/p&gt;

&lt;p&gt;Instead of doing something like this:&lt;/p&gt;

&lt;p&gt;function someFunction() {&lt;br&gt;
  const handle = someResource.open();&lt;br&gt;
  try {&lt;br&gt;
    ... // ok to use &lt;code&gt;handle&lt;/code&gt;&lt;br&gt;
  }&lt;br&gt;
  finally {&lt;br&gt;
    handle.close();&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can now do this:&lt;/strong&gt;🤩🤗&lt;/p&gt;

&lt;p&gt;function someFunction() {&lt;br&gt;
  using handle = someResource.open();&lt;br&gt;
  ... // ok to use &lt;code&gt;handle&lt;/code&gt;&lt;br&gt;
} // handle is automatically closed when it goes out of scope&lt;br&gt;
handle will be disposable if it has a Symbol.dispose method. If the dispose is async it must be defined as&lt;br&gt;
a Symbol.asyncDispose method.&lt;/p&gt;

&lt;p&gt;If it is an async dispose you must use using await instead of using.&lt;/p&gt;

&lt;p&gt;This is a great improvement for writing cleaner and more maintainable code. It also helps to avoid resource leaks and&lt;br&gt;
other issues that can arise from not properly managing resources.&lt;br&gt;
&lt;strong&gt;Atomic.pause&lt;/strong&gt;&lt;br&gt;
Atomic.pause allows you to hint the CPU that the current thread is waiting for a resource to become available i.e. in a spinlock. This can help the CPU to optimize its power usage and performance.&lt;/p&gt;

&lt;p&gt;// Imagine another thread also has access to this shared memory&lt;br&gt;
const sab = new SharedArrayBuffer(1024);&lt;br&gt;
const i32 = new Int32Array(sab);&lt;/p&gt;

&lt;p&gt;// Fast path: spin the CPU for a short while&lt;br&gt;
let spin = 0;&lt;br&gt;
do {&lt;br&gt;
  if (acquiredSharedResourceLock()) {&lt;br&gt;
    break;&lt;br&gt;
  }&lt;br&gt;
  Atomics.pause();&lt;br&gt;
  spin++;&lt;br&gt;
} while (spin &amp;lt; 10);&lt;/p&gt;

&lt;p&gt;// Slow path: wait for the lock&lt;br&gt;
// This can only be called in a worker thread,&lt;br&gt;
// because the main thread cannot be blocked&lt;br&gt;
Atomics.wait(i32, 0, 1);&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WebAssembly support to 64-bit memory&lt;/strong&gt;&lt;br&gt;
This increases the WebAssembly memory size limit from 4GB to 16 exabytes. This is a huge increase in the amount of memory that can be allocated for WebAssembly modules. This is particularly useful for applications that require large amounts of memory.&lt;br&gt;
&lt;strong&gt;Permission is stable&lt;/strong&gt;&lt;br&gt;
The Node.js Permission Model is a mechanism for restricting access to specific resources during execution. The API exists behind the flag --permission which when enabled, will restrict access to all available permissions.&lt;/p&gt;

&lt;p&gt;It has a runtime API you can use to check which permission your application has.&lt;/p&gt;

&lt;p&gt;// filename: index.js&lt;br&gt;
process.permission.has('fs.write'); // true&lt;br&gt;
process.permission.has('fs.write', '/home/codeminer42/writeonly'); // true&lt;br&gt;
process.permission.has('fs.write', '/home/codeminer42/readonly'); // false&lt;/p&gt;

&lt;p&gt;process.permission.has('fs.read'); // true&lt;br&gt;
process.permission.has('fs.read', '/home/codeminer42/writeonly'); // false&lt;br&gt;
process.permission.has('fs.read', '/home/codeminer42/readonly'); // true&lt;br&gt;
Executing the script above with node --permission --allow-fs-read=/home/codeminer42/readonly --allow-fs-write=/home/codeminer42/writeonly index.js.&lt;br&gt;
&lt;strong&gt;URLPattern as global&lt;/strong&gt;&lt;br&gt;
API is now exposed on the global object, making it easier to use without explicit imports. This API provides a powerful pattern-matching system for URLs, similar to how regular expressions work for strings.&lt;/p&gt;

&lt;p&gt;const pattern = new URLPattern({ pathname: "/books/:id" });&lt;br&gt;
console.log(pattern.test("&lt;a href="https://example.com/books/123%22)" rel="noopener noreferrer"&gt;https://example.com/books/123")&lt;/a&gt;); // true&lt;br&gt;
console.log(pattern.exec("&lt;a href="https://example.com/books/123%22).pathname.groups" rel="noopener noreferrer"&gt;https://example.com/books/123").pathname.groups&lt;/a&gt;); // { id: "123" }&lt;br&gt;
This is very useful for validating and parsing URLs in a more structured way. Now you can write your router – go and make your express.js, why not another js lib?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What Else?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Upgrade Undici to 7.0.0&lt;br&gt;
Undici is what is behind fetch in Node.js. This major version brings a lot of performance improvements and bug fixes.&lt;/p&gt;

&lt;p&gt;Upgrade npm to 11.0.0&lt;br&gt;
From the list of changes, the most impactful ones are:&lt;/p&gt;

&lt;p&gt;npm init now has a type prompt, and sorts the entries of the created packages differently&lt;br&gt;
npm hook command has been removed&lt;br&gt;
supports node ^20.17.0 || &amp;gt;=22.9.0&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>npm</category>
      <category>prisma</category>
    </item>
    <item>
      <title>Anime JS , a JavaScript animation library</title>
      <dc:creator>Garima Bisht</dc:creator>
      <pubDate>Sat, 12 Apr 2025 10:57:00 +0000</pubDate>
      <link>https://forem.com/gariglow/anime-js-a-javascript-animation-library-5ha9</link>
      <guid>https://forem.com/gariglow/anime-js-a-javascript-animation-library-5ha9</guid>
      <description>&lt;p&gt;New Library to me, Anime.js by &lt;strong&gt;Julia Garnier&lt;/strong&gt;&lt;br&gt;
Version - 4.0.1 just released  &lt;a href="https://www.npmjs.com/package/animejs" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/animejs&lt;/a&gt;&lt;br&gt;
Published - April 10, 2025 &lt;br&gt;
Anime.js is a fast, multipurpose, lightweight JavaScript animation library with a simple yet powerful API. It works with CSS properties, SVG, DOM attributes and JavaScript Objects.&lt;/p&gt;

&lt;p&gt;Documentation Link - &lt;a href="https://animejs.com/" rel="noopener noreferrer"&gt;https://animejs.com/&lt;/a&gt;&lt;br&gt;
Package Install by using - npm i animejs&lt;br&gt;
Anime.js V4 works by importing ES modules like so:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
&lt;/code&gt;``&lt;br&gt;
import {&lt;br&gt;
  animate,&lt;br&gt;
  stagger,&lt;br&gt;
} from 'animejs';&lt;/p&gt;

&lt;p&gt;animate('.square', {&lt;br&gt;
  x: 320,&lt;br&gt;
  rotate: { from: -180 },&lt;br&gt;
  duration: 1250,&lt;br&gt;
  delay: stagger(65, { from: 'center' }),&lt;br&gt;
  ease: 'inOutQuint',&lt;br&gt;
  loop: true,&lt;br&gt;
  alternate: true&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;br&gt;
`&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>discuss</category>
      <category>animation</category>
    </item>
  </channel>
</rss>
