RSSAmplifier

Blog

Serhii Shramko's Blog

Senior Software Engineer sharing guides on JavaScript, TypeScript, React, and Next.js.

shramko.devRSS feed ↗35 posts

Latest posts

How to Fix MissingSharp Error in Astro.js on Vercel

Fix the [MissingSharp] Could not find Sharp error when deploying Astro.js to Vercel. Step-by-step Sharp image service setup and configuration guide.

Build Your Own Link Tree with Astro.js and Vercel

Build a custom link tree with Astro.js and deploy it on Vercel. Step-by-step tutorial with TypeScript, analytics setup, and performance optimization tips.

What Is Astro? The Complete Framework Guide for 2026

Master the Astro framework with this hands-on guide. Islands Architecture, Content Collections, View Transitions, and client directives with code examples.

Introducing the new shramko.dev

A deep dive into building my developer portfolio with Next.js 16, React 19, and Tailwind CSS 4. Learn about the tech stack, design decisions, and features behind 900+ commits.

Shiki Class-Based Themes

Replace Shiki's bloated inline dual-theme styles with class-based CSS extraction using transformerStyleToClass and next-mdx-remote in Next.js.

Total Build Time Lies

I spotted a build regression, shipped what I thought was the fix, and the numbers didn't move. Turns out the metrics were lying too — Next.js reports batch timing, not page timing.

The early return pattern in JavaScript

Learn the early return pattern (guard clauses) in JavaScript and TypeScript. Reduce nesting, improve readability, and write cleaner functions with real-world examples.

Elements & Children Props

Learn how React elements work and how passing children as props can optimize performance by preventing unnecessary re-renders.

Semantic Versioning in npm

A friendly, practical guide to SemVer in npm. Learn versioning rules, avoid dependency chaos, and manage updates with confidence.

Conventional Commits

Master Conventional Commits to write clear, structured commit messages. Learn the format, types like feat and fix, and how to automate changelog generation.

Mastering HTML Class Naming: Boosting CSS Efficiency

Discover the art of crafting clean HTML class names with BEM methodology. Learn to create maintainable, scalable, and SEO-friendly CSS code.

Difference between absolute and relative URL in HTML

Understand when to use absolute vs relative URLs in HTML. Clear examples showing how each type works, their pros and cons.

for...in vs for...of Loops

Understand the key differences between for...in and for...of loops in JavaScript. Learn when to use each for iterating over arrays, objects, and iterables.

Dispatch table in javascript

Replace messy switch statements with dispatch tables in JavaScript. Learn this clean code pattern for handling multiple conditions with maintainable code.

SEO Audit with AI: 56 Posts, One Afternoon

I used Cursor AI to audit SEO across 56 blog posts in one afternoon. Meta descriptions, broken links, and alt text — all fixed systematically.

How to add SSH keys to your GitHub account

Learn how to add SSH keys to your GitHub account. Boost security and ease your workflow by connecting your local machine to GitHub repositories.

My "every programmer should know" list - 2025

Curated list of the best resources, blogs, and websites every developer should know in 2025. Essential reading for staying up-to-date.

Ignore files in Git without adding them to .gitignore

Learn about Git's hidden alternatives to .gitignore for managing file exclusions locally without affecting your team's workflow.

Generic Type Parameters in TypeScript

Learn TypeScript generic type parameter naming conventions. Understand when to use T, K, V and when descriptive names like TKey make your code more readable.

Custom Hooks Pitfalls

Learn about performance risks in React custom hooks, how they cause unexpected re-renders, and strategies to manage state efficiently.

React Re-Renders

Dive into the mechanics of React re-renders — learn what causes them, how they impact performance, and how to manage them effectively.

GraphQL Certified – How I earned my certification

My journey to getting Apollo GraphQL certification for free. Learn about the exam structure, preparation tips, and how to earn your credential.

Why Are JavaScript Naming Conventions Important?

Master JavaScript naming conventions with this guide. Learn best practices for naming variables, functions, and classes to write cleaner code.

Discriminated Unions in TypeScript

Discover how discriminated unions in TypeScript help you write cleaner, safer code. Learn what they are, how to use them, and why they're great!

How to decrease deployment time by 44% with pnpm

Migrate from npm to pnpm and cut your deployment time by 44%. Step-by-step guide covering installation, lockfile conversion, and CI/CD configuration.

Unsubscribe from Email Newsletters Immediately

Stop letting unwanted emails pile up. Learn why unsubscribing from newsletters immediately saves time, reduces distractions, and keeps your inbox focused.

Node Version Manager

Learn how to install and use Node Version Manager (NVM) to switch between Node.js versions effortlessly. Manage multiple Node versions for different projects.

Cross-browser testing

Learn how to test your website across different browsers and devices using BrowserStack. Ensure cross-browser compatibility without maintaining a device lab.

Postgres connect to database with URL

Learn how to connect to PostgreSQL using a connection URL string. Simple guide for Node.js, DataGrip, or any client supporting URL-based database connections.

JavaScript 101: Arrays

Master JavaScript array methods with this beginner-friendly guide. Learn map, filter, reduce, find, and other essential methods with practical examples.

PHPStorm Allow Network Connections on Startup

Fix the "allow network connections" popup appearing every time PHPStorm starts on macOS. Quick codesign solution to stop repeated permission requests.

How to create a grid with flexbox in React

Learn how to build a reusable flexbox-based Grid component in React using BEM methodology and clsx for clean class management.

How to fix "__dirname is not defined in ES module scope"

Fix the "__dirname is not defined in ES module scope" error in Node.js. Recreate __dirname and __filename using import.meta.url.

Expressions vs Statements

Learn the difference between expressions and statements in JavaScript. Understanding this distinction helps you write better code and avoid syntax errors.

How to use ESLint with TypeScript

Step-by-step guide to configuring ESLint with TypeScript. Set up linting rules, integrate with your IDE, and catch errors before they reach production.