DEV Community

Parsa Jiravand profile picture

Parsa Jiravand

Frontend developer building back-office tools with server-driven UI. Big on clean architecture, TypeScript, and writing about the craft. Currently shipping a dev post a day.

Location Istanbul - Turkey Joined Joined on  Personal website https://github.com/parsajiravand

Education

Master of IT

Pronouns

Parsa

Work

Senior frontend developer

NestJS Testing Module: Provider Overrides (with Cheat Sheet)

NestJS Testing Module: Provider Overrides (with Cheat Sheet)

9
Comments
11 min read

Want to connect with Parsa Jiravand?

Create an account to connect with Parsa Jiravand. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
The CSS Property That Fixes Dark Mode's Ugly White Boxes

The CSS Property That Fixes Dark Mode's Ugly White Boxes

8
Comments
4 min read
Stop Debouncing Resize. The Browser Already Watches It.

Stop Debouncing Resize. The Browser Already Watches It.

9
Comments 1
5 min read
Your Fetch Already Streams. You're Buffering It Anyway.

Your Fetch Already Streams. You're Buffering It Anyway.

7
Comments
4 min read
Next.js Parallel & Intercepting Routes: Modals Done Right

Next.js Parallel & Intercepting Routes: Modals Done Right

10
Comments 1
12 min read
The Star Rating That Never Reaches Your Server

The Star Rating That Never Reaches Your Server

9
Comments 1
4 min read
Vue nextTick Explained: How DOM Updates Are Batched

Vue nextTick Explained: How DOM Updates Are Batched

12
Comments 2
11 min read
The 'Read Aloud' Button That Only Works on the Second Click

The 'Read Aloud' Button That Only Works on the Second Click

12
Comments 1
5 min read
useAsyncData Keys in Nuxt: Caching, Dedupe & the Sharing Bug

useAsyncData Keys in Nuxt: Caching, Dedupe & the Sharing Bug

13
Comments 2
12 min read
The Search Highlight That Deletes Your Selection

The Search Highlight That Deletes Your Selection

14
Comments 3
5 min read
addDays() Mutated a Date Three Components Away From Where I Called It

addDays() Mutated a Date Three Components Away From Where I Called It

12
Comments 4
5 min read
React Form Actions: useActionState & useFormStatus Guide

React Form Actions: useActionState & useFormStatus Guide

7
Comments 2
11 min read
My .catch() Never Ran. The Bug Was Two Lines Above It

My .catch() Never Ran. The Bug Was Two Lines Above It

7
Comments 2
5 min read
NestJS Module Encapsulation Explained (with Cheat Sheet)

NestJS Module Encapsulation Explained (with Cheat Sheet)

11
Comments 2
12 min read
I Shipped 'Passwordless Login.' It Still Asked for a Username.

I Shipped 'Passwordless Login.' It Still Asked for a Username.

18
Comments 4
5 min read
Those Share Buttons Are Guessing What's On My Phone

Those Share Buttons Are Guessing What's On My Phone

17
Comments 3
5 min read
Next.js Server Actions: Mutations & Security (Cheat Sheet)

Next.js Server Actions: Mutations & Security (Cheat Sheet)

17
Comments
12 min read
Your Required Field Turns Red Before You Type Anything

Your Required Field Turns Red Before You Type Anything

20
Comments 2
4 min read
Web Workers in JavaScript: The Complete Guide

Web Workers in JavaScript: The Complete Guide

19
Comments 3
10 min read
One CSS Property Replaces Your Checkbox Hack

One CSS Property Replaces Your Checkbox Hack

23
Comments
4 min read
Your Recipe App Is Hiding a Silent Video

Your Recipe App Is Hiding a Silent Video

10
Comments 2
5 min read
React Compiler 1.0: What useMemo You Can Delete

React Compiler 1.0: What useMemo You Can Delete

17
Comments
12 min read
Your Timer Doesn't Know You Tabbed Away

Your Timer Doesn't Know You Tabbed Away

17
Comments 2
4 min read
NestJS Dependency Injection Explained (with Cheat Sheet)

NestJS Dependency Injection Explained (with Cheat Sheet)

10
Comments
11 min read
Stop Regex-Parsing document.cookie. Use CookieStore

Stop Regex-Parsing document.cookie. Use CookieStore

10
Comments 1
5 min read
The await That Silently Breaks navigator.clipboard.writeText()

The await That Silently Breaks navigator.clipboard.writeText()

12
Comments
5 min read
You're not quiet in meetings, you're editing

You're not quiet in meetings, you're editing

18
Comments 1
8 min read
Shadow DOM Needed JavaScript to Exist. Now It Doesn't.

Shadow DOM Needed JavaScript to Exist. Now It Doesn't.

24
Comments 5
5 min read
Next.js Cache Components Explained (with Cheat Sheet)

Next.js Cache Components Explained (with Cheat Sheet)

13
Comments
12 min read
Your Router Doesn't Intercept Navigation. It Reacts To It.

Your Router Doesn't Intercept Navigation. It Reacts To It.

13
Comments
5 min read
Debounce and Throttle in JavaScript: The Complete Guide

Debounce and Throttle in JavaScript: The Complete Guide

18
Comments 1
11 min read
You Don't Need a WebSocket for That Live Feed

You Don't Need a WebSocket for That Live Feed

7
Comments
6 min read
Nuxt useState vs ref(): Why Server State Leaks Across Users

Nuxt useState vs ref(): Why Server State Leaks Across Users

15
Comments
12 min read
Delete Your padding-bottom Aspect-Ratio Hack

Delete Your padding-bottom Aspect-Ratio Hack

14
Comments
5 min read
React Re-render vs Remount: What Actually Triggers Each

React Re-render vs Remount: What Actually Triggers Each

19
Comments 1
11 min read
The outline: none Debate Has Been Over Since 2020

The outline: none Debate Has Been Over Since 2020

16
Comments
4 min read
NestJS Request Lifecycle Explained (with Cheat Sheet)

NestJS Request Lifecycle Explained (with Cheat Sheet)

21
Comments 5
11 min read
Your Grid Has Invisible Columns: auto-fill vs auto-fit

Your Grid Has Invisible Columns: auto-fill vs auto-fit

14
Comments
4 min read
You're truncating bios with `.slice()`. `Intl.Segmenter` knows where the emoji actually end.

You're truncating bios with `.slice()`. `Intl.Segmenter` knows where the emoji actually end.

23
Comments 2
5 min read
Delete Your Auto-Resize Textarea JS. CSS Does It Now.

Delete Your Auto-Resize Textarea JS. CSS Does It Now.

18
Comments 1
5 min read
Nobody tells you the question window is closing

Early job ignorance costs credibility fast

Nobody tells you the question window is closing

18
Comments 4
6 min read
JavaScript Closures: The Complete Guide (with Cheat Sheet)

JavaScript Closures: The Complete Guide (with Cheat Sheet)

16
Comments
12 min read
CSS Animations Can't Pause. The Web Animations API Can.

CSS Animations Can't Pause. The Web Animations API Can.

12
Comments
5 min read
Vue Reactivity Explained: ref vs reactive (+ Cheat Sheet)

Vue Reactivity Explained: ref vs reactive (+ Cheat Sheet)

17
Comments
11 min read
JavaScript Proxy and Reflect: The Complete Guide

JavaScript Proxy and Reflect: The Complete Guide

16
Comments 3
13 min read
The CSS Selector Built to Lose Every Fight

The CSS Selector Built to Lose Every Fight

20
Comments 1
5 min read
One version bump, 40 files to edit. Import maps fix that.

One version bump, 40 files to edit. Import maps fix that.

16
Comments
5 min read
Your fetch in beforeunload is silently killed. navigator.sendBeacon guarantees delivery.

Your fetch in beforeunload is silently killed. navigator.sendBeacon guarantees delivery.

19
Comments 1
4 min read
The Modal Was Open. So Was Everything Behind It.

The Modal Was Open. So Was Everything Behind It.

16
Comments
5 min read
Stop Writing Regex to Match URLs — The Browser Already Can

Stop Writing Regex to Match URLs — The Browser Already Can

18
Comments
5 min read
Stop Writing Media Queries for Font Size

Stop Writing Media Queries for Font Size

16
Comments 1
4 min read
I Ripped Out a Carousel Library. CSS Replaced It.

I Ripped Out a Carousel Library. CSS Replaced It.

22
Comments 1
4 min read
Stop Writing Math.cos() in a Resize Listener

Stop Writing Math.cos() in a Resize Listener

21
Comments
4 min read
I Can Finally Delete My max-height: 9999px Animation Hack

I Can Finally Delete My max-height: 9999px Animation Hack

26
Comments
5 min read
Five tabs open, one refresh token — the race nobody noticed

Reveals why multi-tab apps trigger sudden logouts

Five tabs open, one refresh token — the race nobody noticed

24
Comments 5
5 min read
You copy and reverse the array to find the last match. `findLast()` searches from the end directly.

You copy and reverse the array to find the last match. `findLast()` searches from the end directly.

23
Comments
3 min read
Your `fetch()` in `beforeunload` is being silently dropped. Use `navigator.sendBeacon()`.

Your `fetch()` in `beforeunload` is being silently dropped. Use `navigator.sendBeacon()`.

26
Comments 2
4 min read
You're blocking touchmove events to contain scroll. `overscroll-behavior` does it natively.

You're blocking touchmove events to contain scroll. `overscroll-behavior` does it natively.

22
Comments
4 min read
You're polling setInterval to detect DOM changes. `MutationObserver` fires when they happen.

You're polling setInterval to detect DOM changes. `MutationObserver` fires when they happen.

22
Comments
4 min read
You're importing pako to gzip data. `CompressionStream` does it natively.

You're importing pako to gzip data. `CompressionStream` does it natively.

28
Comments 2
4 min read
loading...