👋
I started doing open-source when I was 19 years old (12 years ago). I worked for 3 years non-stop on JSBlocks — it was a failure
Why sponsor me? 🤷
There are other people that have made a bigger impact on the open-source community, why sponsor me?
- You use one of my libraries.
- You like my writings and want to see more.
- I try to follow some principles when doing open-source. Maybe you like them?
- You like Nota (the app I'm building with @erusev) and what to support its development.
- You want to support unpopular contributors because you don't like the "rich getting richer" situation, Power Law distribution, and the Pareto principle.
If you don't want to sponsor me, I keep a list of open-source contributors worth sponsoring that you can consider instead.
Also, I do consulting and per-project work (see One-time tiers).
What I am working on
I'm currently focusing on:
main-thread-scheduling— Consistently responsive apps while staying on the main thread. The library aims to bring innovation to how you make your apps responsive and performant.use-local-storage-state. React hook that persists data in local storage. It has the same API asuseState(). A small and easy-to-use library with more than 150k downloads per month.use-session-storage-state. Same as above but for session storage.
Additionally, I have repositories that I've already written but still haven't open-sourced:
element-inspect— A tool that replaces DevTools Inspect Element.eslint-config-strictest— An extremely strict ESLint configuration. However, it needs a lot more work to become usable by other people. This configuration is one of the reasons the production app I am building has close to zero runtime exceptions.keyboard-shortcut— Work more easily with keyboard shortcuts. There are a lot of libraries that try to deal with keyboard shortcuts. Here are a few benefits of my approach:- Uses modern API-s
KeyboardEvent.codeandKeyboardEvent.key - Really small.
- Modular. It creates an object
KeyboardShortcutthat has.code,.cmd.ctrl,.alt,.shiftproperties. You can extend from there (or use my other libraries):check-shortcut— Check if thekeydownevent satisfies a predefined keyboard shortcut.use-shortcut— The same as above but as a React hook.pretty-shortcut— Print shortcut like macOS, or Windows, or Linux, or Electron would.
- Uses modern API-s
simple-spawn— A simple Promised based abstraction overspawn(). I previously usedexecabut these days it does so much more than just abstract thespawn()method. It has become heavy and complicated to understand what options you need to set.react-queue— Inspired by Batching makes it difficult to perform imperative actions like focus · Issue #18402 · facebook/react. I have created a solution to the problem that I extensively use.virtualized-virtual-list— A simple virtualized list. The benefit over react-window is that it's a lot smaller and with a lot simpler API — this also means it's more limited but it gets the job done in 90% of the cases with just 10% of the code.infinite-loop-protection— An AST transformer that adds code in loops so that your app never freezes because of an infinite loop. Includes a Webpack plugin.p-signal— I spend months of research to find the best way to cancel async functions. I think I found the most optimal solution. I have already been using it for a year and I like it a lot.closure— Withclosure()I avoid usingletstatements. Since I discovered it, I have been using it almost every day. I will also write an article about it when I release this library.
1 sponsor is funding astoilkov’s work.
Featured work
-
astoilkov/main-thread-scheduling
Fast and consistently responsive apps using a single function call
TypeScript 262 -
astoilkov/use-local-storage-state
React hook that persists data in localStorage
TypeScript 736 -
astoilkov/jsblocks
Better MV-ish Framework
JavaScript 2,786 -
astoilkov/console.message
Console messages for cool kids
JavaScript 767
Select a tier
$3 a month
SelectConsider me a friend — write to me at hello@astoilkov.com and I will answer like a friend would — thoroughly. Regardless if it's for a hard life situation or struggling with a work problem.
$6 a month
SelectConsider me a friend — write to me at hello@astoilkov.com and I will answer like a friend would — thoroughly. Regardless if it's for a hard life situation or struggling with a work problem.
$12 a month
SelectConsider me a friend — write to me at hello@astoilkov.com and I will answer like a friend would — thoroughly. Regardless if it's for a hard life situation or struggling with a work problem.
$24 a month
SelectConsider me a friend — write to me at hello@astoilkov.com and I will answer like a friend would — thoroughly. Regardless if it's for a hard life situation or struggling with a work problem.
$48 a month
SelectConsider me a friend — write to me at hello@astoilkov.com and I will answer like a friend would — thoroughly. Regardless if it's for a hard life situation or struggling with a work problem.