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

Stop Letting One Widget Reflow the Whole Page. `contain` Scopes It.

Stop Letting One Widget Reflow the Whole Page. `contain` Scopes It.

7
Comments
6 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
Stop Electing a Leader Tab. SharedWorker Just Holds the Connection.

Stop Electing a Leader Tab. SharedWorker Just Holds the Connection.

9
Comments
5 min read
I Turned 44 Blog Posts Into a Frontend Roadmap You Have to Pass

I Turned 44 Blog Posts Into a Frontend Roadmap You Have to Pass

9
Comments
15 min read
Remote work means someone else is telling your story for you

Remote work means someone else is telling your story for you

8
Comments
7 min read
You Installed a Library for Numbers PerformanceObserver Already Has.

You Installed a Library for Numbers PerformanceObserver Already Has.

11
Comments 1
7 min read
Your Tabs Each Open Their Own WebSocket. navigator.locks Elects One.

Your Tabs Each Open Their Own WebSocket. navigator.locks Elects One.

11
Comments
6 min read
Next.js 16 Image: priority Deprecated, quality Now Allowlisted

Next.js 16 Image: priority Deprecated, quality Now Allowlisted

8
Comments 1
13 min read
Vue watch vs watchEffect: The Complete Guide

Vue watch vs watchEffect: The Complete Guide

10
Comments
12 min read
I Shipped a Fix. My Service Worker Kept Serving the Bug.

I Shipped a Fix. My Service Worker Kept Serving the Bug.

9
Comments 2
6 min read
Nuxt 4 Migration: The Breaking Changes That Actually Bite

Nuxt 4 Migration: The Breaking Changes That Actually Bite

9
Comments
12 min read
Your Lighthouse Score Is 100. Long Animation Frames Explain the Jank.

Your Lighthouse Score Is 100. Long Animation Frames Explain the Jank.

9
Comments 1
6 min read
React 19.3 Fragment Refs: Skip the Wrapper Div for a Ref

React 19.3 Fragment Refs: Skip the Wrapper Div for a Ref

7
Comments
11 min read
You Added `will-change` to Fix the Jank. You Made It Worse.

You Added `will-change` to Fix the Jank. You Made It Worse.

9
Comments
5 min read
You're Animating for Everyone. `prefers-reduced-motion` Fixes That.

You're Animating for Everyone. `prefers-reduced-motion` Fixes That.

13
Comments
6 min read
Stop Losing Promise Errors. `unhandledrejection` Catches Them.

Stop Losing Promise Errors. `unhandledrejection` Catches Them.

11
Comments 3
5 min read
Junior interviews don't test what they used to, and nobody updated you

Junior interviews don't test what they used to, and nobody updated you

9
Comments 4
6 min read
Stop Retrying Immediately. Exponential Backoff Fixes It.

Stop Retrying Immediately. Exponential Backoff Fixes It.

9
Comments 3
6 min read
I Built Cross-Tab Logout. The storage Event Skipped One Tab.

I Built Cross-Tab Logout. The storage Event Skipped One Tab.

8
Comments 3
6 min read
Next.js Streaming Metadata: Why Your `<head>` Looks Incomplete

Next.js Streaming Metadata: Why Your `<head>` Looks Incomplete

9
Comments 2
12 min read
Vue defineModel: The v-model Contract, Explained

Vue defineModel: The v-model Contract, Explained

13
Comments
11 min read
`beforeunload` Can Still Kill Your bfcache. Mount It Only When Dirty.

`beforeunload` Can Still Kill Your bfcache. Mount It Only When Dirty.

7
Comments 2
6 min read
Nuxt 4.5 SSR Streaming: The Route Rules That Disable It

Nuxt 4.5 SSR Streaming: The Route Rules That Disable It

10
Comments
12 min read
Stop Hand-Rolling an Exclusive Accordion. `<details name>` Does It

Stop Hand-Rolling an Exclusive Accordion. `<details name>` Does It

9
Comments
6 min read
React 19.3 ViewTransition: Animate State Without Losing It

React 19.3 ViewTransition: Animate State Without Losing It

11
Comments
13 min read
Your Search Box Lags. Debounce Hides It; `useTransition` Fixes It

Your Search Box Lags. Debounce Hides It; `useTransition` Fixes It

11
Comments 1
5 min read
NestJS 12: Standard Schema Validation Without class-validator

NestJS 12: Standard Schema Validation Without class-validator

7
Comments 1
12 min read
Stop Fixing Headline Gaps With Negative Margins. Use `text-box-trim`

Stop Fixing Headline Gaps With Negative Margins. Use `text-box-trim`

14
Comments
5 min read
`:nth-child(even)` Counts Hidden Rows. `of S` Fixes Your Stripes

`:nth-child(even)` Counts Hidden Rows. `of S` Fixes Your Stripes

8
Comments
5 min read
Vue computed(): What It Caches and When It Reruns

Vue computed(): What It Caches and When It Reruns

7
Comments
10 min read
Your `backdrop-filter` Is Working. Your Background Is Hiding It.

Your `backdrop-filter` Is Working. Your Background Is Hiding It.

8
Comments
6 min read
Why your code review comments sound harsher than you meant

Why your code review comments sound harsher than you meant

10
Comments 3
7 min read
Blocking `<script>` Won't Stop innerHTML XSS. `setHTML()` Will.

Blocking `<script>` Won't Stop innerHTML XSS. `setHTML()` Will.

8
Comments
7 min read
Nuxt Server Routes Explained: How Nitro Builds Your API

Nuxt Server Routes Explained: How Nitro Builds Your API

3
Comments
11 min read
Your 'Save' Button Makes Copies. The File System Access API Doesn't.

Your 'Save' Button Makes Copies. The File System Access API Doesn't.

4
Comments
6 min read
Stop Guessing When Scrolling Stops — Use scrollend

Stop Guessing When Scrolling Stops — Use scrollend

8
Comments
5 min read
Next.js Route Handlers: GET Stopped Caching in 15 — How to Cache in 16

Next.js Route Handlers: GET Stopped Caching in 15 — How to Cache in 16

7
Comments
13 min read
getCurrentPosition() Doesn't Just Check — It Prompts

getCurrentPosition() Doesn't Just Check — It Prompts

9
Comments 1
5 min read
NestJS Guards: CanActivate, ExecutionContext & Reflector

NestJS Guards: CanActivate, ExecutionContext & Reflector

11
Comments 2
12 min read
localStorage Isn't Free — It's Blocking Your Main Thread

localStorage Isn't Free — It's Blocking Your Main Thread

10
Comments
5 min read
JSON.stringify Is Quietly Deleting Your File Uploads

JSON.stringify Is Quietly Deleting Your File Uploads

9
Comments
5 min read
The Background Task That Waited 40 Seconds for 'Idle'

The Background Task That Waited 40 Seconds for 'Idle'

8
Comments
5 min read
Vue Composables: The Shared State Trap (+ Cheat Sheet)

Vue Composables: The Shared State Trap (+ Cheat Sheet)

8
Comments
11 min read
The Dropdown You've Been Faking for a Decade

The Dropdown You've Been Faking for a Decade

8
Comments 4
4 min read
Next.js proxy.ts Explained (with Cheat Sheet)

Next.js proxy.ts Explained (with Cheat Sheet)

8
Comments
10 min read
Stop Writing JavaScript To Fix `100vh` On Mobile

Stop Writing JavaScript To Fix `100vh` On Mobile

11
Comments
5 min read
React Derived State: Why That useState Is Probably a Bug

React Derived State: Why That useState Is Probably a Bug

11
Comments 1
12 min read
Your Browser Is Rejecting Every Drop On Purpose

Your Browser Is Rejecting Every Drop On Purpose

10
Comments 1
5 min read
Nuxt Hydration Mismatch: Why It Happens and How to Fix It

Nuxt Hydration Mismatch: Why It Happens and How to Fix It

9
Comments 1
12 min read
Chrome Already Has The Eyedropper You're Building

Chrome Already Has The Eyedropper You're Building

10
Comments 1
5 min read
NestJS Testing Module: Provider Overrides (with Cheat Sheet)

NestJS Testing Module: Provider Overrides (with Cheat Sheet)

17
Comments 4
11 min read
The CSS Property That Fixes Dark Mode's Ugly White Boxes

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

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

Stop Debouncing Resize. The Browser Already Watches It.

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

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

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

Next.js Parallel & Intercepting Routes: Modals Done Right

13
Comments 2
12 min read
Your Custom Element Is Missing From FormData — ElementInternals Fixes It

Your Custom Element Is Missing From FormData — ElementInternals Fixes It

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

Vue nextTick Explained: How DOM Updates Are Batched

14
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

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

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

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

The Search Highlight That Deletes Your Selection

17
Comments 4
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

15
Comments 5
5 min read
loading...