Hello, I'm Stanko, a software engineer in Belgrade, writing mostly about JavaScript and React.

Get scrollbar width in JavaScript

2 Comments

Another onliner I love, that returns body scrollbar width. If scrollbar is not shown it will return zero (including mobile devices).

function getScrollbarWidth() {
  return window.innerWidth - document.documentElement.clientWidth;
}

Click on the button to try it yourself:

Browser support

Tested on:

  • Windows: IE9, IE10, IE11, Edge
  • MacOS: Safari, Firefox, Chrome, Opera
  • iOS: Safari, Chrome
  • Android: Chrome

Simple JavaScript API wrapper

3 Comments

For handling API calls I have a small snippet I’m copying from project to project. I decided to clean it up, make more generic and share it. It is intended to be a starting point, so you might want to customize it to your custom needs.

What it does?

It is a simple wrapper around If you need a polyfill isomorphic-fetch is a great one.

  • For successful requests it will parse the response and return it.
  • When It detects errors based on request’s HTTP status. it will throw a custom error with status code, error message and response (parsed if it is a JSON).
  • If request never gets resolved, same custom error will be thrown but response will be set to null and status code to REQUEST_FAILED.

Please note that function will return a Promise so you need to handle how it resolves.

Read more

React Window decorators

Two days ago I released two npm packages, window-scroll-manager and react-window-decorators.

Scroll manager

Plx uses the same scroll manager so I extracted it to the standalone package. is just a simple wrapper around scroll event, that broadcasts custom window-scroll event once per requestAnimationFrame. Idea comes from MDN.

React decorators

or higher order components are the bees knees, as they bring easy way to track window scroll and resize events in React. They will track and inject props directly into React components. Check the demo.

Read more

Firefox 57 CPU usage is insane

3 Comments

This is a sad rant :(

I love Firefox (and Mozilla too) and have never switched to . Although I use Chrome for development. But few days ago I switched to Opera, because new Firefox’s (aka Quantum) CPU usage is insane.

Firefox :(

Disabling extensions didn’t help, it just hogs all available resources. MacOS is giving me “Service Battery” warning when Firefox is running. And battery last about four times(!) shorter.

Read more

Blog redesign

Muffin Man is back! This time with new visual identity.

This was long overdue, but new design took me Mostly because of the trillion things I’m working on. Now I can get back to writing.

Alogn with the new design, some other things got updated too, hopefully making content easier to browse. To name a few:

  • Archive is now one page with categories accordion (every category used to have a dedicated page)
  • You can now find related posts under each post (instead of the latest ones)
  • Search results are now navigable using arrows

I ditched custom Jekyll plugins to be able to use GitHub to automatically build the whole thing. Some of them got rewritten to Liquid.

Hope you like it!