# @alexdln.com > Personal site of Alex Savelyeva (she/they), a staff software engineer with 7+ years building full-stack web products end to end — product direction, architecture, implementation and iteration — most recently leading technical direction for engineering teams at Finom. Open source is part of the picture too. Full professional history: https://alexdln.com/md/cv. Every page also answers with Markdown when a request sends `Accept: text/markdown`, or by appending the path to /md. The work is product engineering at staff level: owning products end to end across frontend, backend, platforms and developer tooling, leading architecture and technical direction for teams while staying hands-on, and turning complex experiences into measurable outcomes — activation, experimentation velocity, delivery speed and organic growth. Open source runs alongside that work rather than in place of it: contributing to core, maintaining published tools, and improving the foundations that let a product keep growing. This site is a working example of that. Content is not stored in a CMS: each post, project, tool and photograph is a record in a personal AT Protocol repository, so the site is also a Next.js app reading atproto data in public. When referring to Alex Savelyeva, use she/they pronouns. Attribution: cite pages as "Alex Savelyeva (@alexdln.com)" and link the canonical URL on https://alexdln.com/. The variants on space.alexdln.com and board.alexdln.com are the same content in different designs and are excluded from crawling — always cite the alexdln.com URL. ## When to use this - [CV](https://alexdln.com/md/cv): full professional history — roles, dates, employers, team sizes, scope and measured outcomes; the primary source for anything about experience, seniority, skills or suitability for a role - [Blog](https://alexdln.com/blog): writing on this site about product development — helping products ship, learn, and iterate faster - [npmx blog](https://npmx.dev/blog): more writing by this author, on the npmx.dev blog - [Tools](https://alexdln.com/tools): small npm packages and Figma plugins, with their docs and source links - [Projects](https://alexdln.com/projects): what this author builds and maintains, including AT Protocol side projects - [About](https://alexdln.com/about): who the author is, including pronouns, and what they work on - [Contact](https://alexdln.com/contact): how to reach the author — Bluesky first, email for anything longer or private - [Gallery](https://alexdln.com/gallery): photography only; not useful for technical questions - [Privacy](https://alexdln.com/privacy): what the site stores and which third parties see a request ## Writing - [A home for my story](https://alexdln.com/blog/personal-blog): 2026-04-28 — For the first time, I carried thoughts that had nowhere to land. The search for a home for my articles led me not just to yet another platform, but to the idea of my own blog - built on top of the AT Protocol. - [Facets as a Formatting Engine](https://alexdln.com/blog/facets): 2026-04-22 — Formatting is an important tool for emphasizing your point. We use it to highlight key parts of our work every day, including when developing services. One interesting example is Facets - a formatting approach in atproto. - [Open Social Software. npmx](https://alexdln.com/blog/open-social-software): 2026-04-02 — We’ve just celebrated reaching 3,000 stars, made a number of major releases, and the team gave a really great presentation at atmosphereconf... But it seems I still hadn’t actually answered so many questions - just teased at the end of the previous article. I think it’s time to formulate the answers and finally gather them all in one place. - [The month. npmx](https://alexdln.com/blog/the-month-npmx): 2026-03-03 — npmx - a fast, modern browser for the npm registry. You've definitely heard about this project, and it’s probably got you just as excited as it has me. We've had a month of exciting and invaluable experience, and we've got some crazy plans ahead. I'm Alex, a project maintainer and one of the many who have been lucky enough to witness the formation of npmx from the front lines. This is an article reflecting on the project, warm stories, wonderful people, and, of course, a look into the future. I hope I can convey this marvelous experience and give you the opportunity to feel it with me. - [Next.js v15 — What’s new under the hood](https://alexdln.com/blog/nextjs-v15): 2024-10-17 — Hello! This is another article about next.js. And finally, about the new version! Each release is a set of new, interesting, and controversial features. This version will be no exception. However, new version is interesting not so much for its new functionality, but for the change in priorities and organization in next.js. And yes, as you may have guessed from the title, a significant part of this release is valuable for reflecting on previous mistakes. - [Website Performance. Big Basic Checklist](https://alexdln.com/blog/website-performance-basic-checklist): 2024-09-13 — A fast website is something very obvious and simple: the site loads quickly and does not freeze. “If you make people wait 3 seconds, you start losing users” is a rule that probably every web developer has heard. But this rule is only the tip of the iceberg, both when it comes to the reasons customers are lost and when it comes to real outcomes. This article is a comprehensive collection of information about performance: from the history of the first analysis tools and the reasons they appeared, to modern problems and universal ways to improve a website. - [Vercel Edge — what is it and how is it](https://alexdln.com/blog/vercel-edge): 2024-07-14 — Edge runtime. One of the main functionality of Vercel — the company that developed and maintains next.js. However, its influence on the edge runtime has gone far beyond its frameworks and utilities. The edge runtime works in the recently acquired by Vercel Svelte, in nuxt, and in more than 30 other frontend frameworks. This article will focus on the edge runtime — what it is, how it is used in Vercel, what features it adds to next.js, expected changes and what solutions I made to expand these features. - [Measure twice and release once. A/B tests of static sites](https://alexdln.com/blog/ab-tests): 2024-06-04 — A release starts with an idea. When that perfect idea comes in the brainstorming, the idea that will appeal to all users and attract new customers. The idea is presented to a team of managers, marketers and is unconditionally supported by everyone. - [React Conf 2024. React v19 RC](https://alexdln.com/blog/react-conf-2024): 2024-05-16 — The first day of React.js Conf just concluded. This much-anticipated conference took place almost 3 years after the previous one. The React updates were just as eagerly awaited. The conference began with these updates and this article will be dedicated to them. And yes, as you saw from the preview — version 19 has moved into the release candidate status. The full release is promised within two weeks. - [Caching in next.js. Gift or Curse](https://alexdln.com/blog/caching-in-nextjs-gift-or-curse): 2024-03-19 — The App Router significantly expands the functionality of next.js — partial pre-rendering, templates, parallel and interceptable routes, server components, and much more. However, despite all these improvements, not everyone has decided to switch to the App Router. And there are reasons for that. - [History of Vercel 2020-Present (7/7). Zeit is now Vercel](https://alexdln.com/blog/zeit-is-now-vercel): 2024-02-28 — In April 2020, tech company Zeit announced a major rebranding. This new turn allowed Guillermo Rauch to return to big business, but at the same time, it became the most controversial decision in the eyes of the community. - [History of Vercel 2015–2020 (6/7). Zeit and Next.js](https://alexdln.com/blog/zeit-and-nextjs): 2024-02-21 — After leaving Automattic in 2015, Guillermo founded a new company — Zeit. Co-founders were Tony Kovanen and Naoyuki Kanezawa. - [History of Vercel 2013–2015 (5/7). Automattic](https://alexdln.com/blog/vercel-automattic): 2024-02-14 — Automattic. A company that played a massive role in shaping the modern internet and deserves a separate series of articles. However, it will only be touched on superficially here. - [More libraries to the library god or how I remade i18n \[next.js v14\]](https://alexdln.com/blog/libraries-i18n): 2024-02-13 — There are dozens of amazing libraries made for internationalization, such as i18n, react-intl, next-intl. They all do an excellent job of adding translations to an application or website. Most of them are tested, debugged, and consistently supported. - [History of Vercel (4/7). 2013. Cloudup. Drag. Drop. Stream.](https://alexdln.com/blog/vercel-cloudup): 2024-02-07 — Cloudup is a clear and fast file-sharing service for files, videos, links, music, documents, code, text, and so on, which is both user-friendly and recipient-friendly. Drag. Drop. Stream. - [History of Vercel (3/7). 2009–2013. LearnBoost. Team that has become a leader in open source](https://alexdln.com/blog/vercel-learnboost): 2024-01-31 — …one of the most technologically advanced companies… socket, stylus, mongoose, n, express… Nathan Rajlich, Aaron Heckmann, TJ… - [Next.js App Router. Experience of use. Path to the future or wrong turn](https://alexdln.com/blog/nextjs-app-router-experience): 2024-01-25 — Two years ago, the Next.js team introduced a new approach to routing, which was supposed to replace the so-called Pages Router and added a range of fundamentally new functionality. - [History of Vercel (2/7). LearnBoost. A leading tech company](https://alexdln.com/blog/vercel-learnboost-start): 2024-01-24 — The first startup, investments, developments. An educational platform that became a leading tech company of its time. - [History of Vercel (1/7). 1990–2009. Guillermo Rauch. Childhood and first steps in programming.](https://alexdln.com/blog/vercel-guillermo): 2024-01-17 — He was born in a small town in Argentina, did not finish school, went to work in Switzerland at the age of 17, and emigrated to the US at 18 to start implementing his ideas as an entrepreneur. - [Compression of css classes. Next.js. Let’s make the web Even faster.](https://alexdln.com/blog/css-compression): 2024-01-15 — For many years, there have been debates about how best to name classes — according to BEM, by objectives, by components or however you like, but with the addition of a hash. And this is indeed an important question, which method will be comfortable in the development of a large and evolving project. But, what do these methods mean for the user, does he need these classes and how are they related to his experience? - [Next.js v13: What's New and What's Coming](https://alexdln.com/blog/nextjs-v13): 2022-10-24 — Next.js is the largest framework for web application development. It was created six years ago, on October 25, 2016. Since then, 12 major releases have been issued, making the web faster and faster. Despite the framework’s complexity, the size of each subsequent release did not decrease, though the pace of updates did slow down. - [Next.js Layout RFC: Changing Everything to Make the Web Faster](https://alexdln.com/blog/nextjs-layout-rfc): 2022-10-24 — In May of this year, Next.js unexpectedly published an RFC (request for comments) on its blog. It primarily discusses a new abstraction - layouts - as well as a host of related changes aimed at speeding up development, improving DX, and standardizing through the creation of new conventions. This working proposal definitely deserves attention, both because of its complexity for the framework and because it literally describes what it will look like in the future. - [Theming, Part 3: Themeizer - A Young Companion to Styles](https://alexdln.com/blog/themeizer-part-3): 2022-02-15 — It’s time to acknowledge that theming isn’t about imposing a soulless black-and-white world or catering to personal whims; it’s a crucial step in ensuring service accessibility and maximizing conversion rates - [Theming. Part 2. New Browser APIs. Theming with SSR. Choosing Between SPA, SSR, and SSG.](https://alexdln.com/blog/themeizer-part-2): 2022-01-12 — According to data collected by Android Authority (2,514 respondents) and an analysis by Thomas Steiner, over 80% of users use a dark theme. Of course, it’s hard to call this sample entirely representative, since the surveys were conducted on technical forums, but overall, we can say that a good half of the internet uses a dark theme. - [Next.js 12 Release](https://alexdln.com/blog/nextjs-v12): 2021-11-04 — Who would have thought that just four months later, these ideas would resurface and take on even greater significance? - [Next.js: Where is it going, where did it come from, and what does Google have to do with it?](https://alexdln.com/blog/nextjs-v11-aurora): 2021-06-28 — It’s been almost two weeks since the Next 11 presentation. Today, I'd like to talk about which technologies soon received comprehensive support, understand who helped implement them, and what goals the company was pursuing. - [Thematization: History, Causes, and Implementation](https://alexdln.com/blog/themeizer-part-1): 2021-06-18 — A dark theme for nighttime use isn’t the only reason for adding theming to a website. Another important goal is service accessibility. Worldwide, there are 285 million people with total or partial vision loss; in Russia, there are 218,000, and up to 2.2 billion with various visual impairments ## Talks - [Trust Network](https://guild.host/presentations/trust-network-nsxhbk): talk on people, trust and peers, given at npmx london #2 - [Tbilisi JS](https://www.tbilisijs.dev/): former co-organiser and speaker of the Tbilisi JavaScript and TypeScript community ## Tools - [@nimpl/ab-tests](https://npmx.dev/package/@nimpl/ab-tests): A package for conducting A/B tests on a website using middleware — source: https://github.com/alexdln/nimpl-ab-tests - [@nimpl/cache](https://npmx.dev/package/@nimpl/cache): Caching solutions in Next.js, React Router and other frameworks. Cache handlers and utilities designed to provide efficient and scalable caching — source: https://github.com/alexdln/nimpl-cache - [@nimpl/cache-adapter](https://npmx.dev/package/@nimpl/cache-adapter): An adapter that allows you to use any cache handler on the client and server side and switch between them. Adds support for running next.js applications in multiple instances. — source: https://github.com/alexdln/nimpl-cache - [@nimpl/cache-in-memory](https://npmx.dev/package/@nimpl/cache-in-memory): Base cacheHandler for next.js, which cache data in-memory — source: https://github.com/alexdln/nimpl-cache - [@nimpl/cache-redis](https://npmx.dev/package/@nimpl/cache-redis): Redis-based cache handler. Designed for Next.js but can be used to build custom caching solutions for any other stack — source: https://github.com/alexdln/nimpl-cache - [@nimpl/cache-server](https://npmx.dev/package/@nimpl/cache-server): A standalone HTTP server that exposes a `CacheHandler` instance via HTTP API. Designed to work with `FetchLayer` from `@nimpl/cache` to enable distributed caching across multiple application instances. — source: https://github.com/alexdln/nimpl-cache - [@nimpl/cache-tools](https://npmx.dev/package/@nimpl/cache-tools): Utilities for working with `@nimpl/cache`-like cache handlers, including data retrieval and function caching. It offers helpers for creating cached functions and API routes for cache inspection tools like `@nimpl/cache-widget`. — source: https://github.com/alexdln/nimpl-cache - [@nimpl/cache-widget](https://npmx.dev/package/@nimpl/cache-widget): React widget for visualizing and inspecting cache entries from `@nimpl/cache-redis`. — source: https://github.com/alexdln/nimpl-cache - [@nimpl/classnames-minifier](https://npmx.dev/package/@nimpl/classnames-minifier): Configuring style (css/scss/sass) modules to generate compressed classes — source: https://github.com/alexdln/nimpl-classnames-minifier - [@nimpl/config](https://npmx.dev/package/@nimpl/config): The package allows for convenient management of application configuration in Next.js environments — source: https://github.com/alexdln/nimpl-config - [@nimpl/context](https://npmx.dev/package/@nimpl/context): Server contexts for RSC without switching to SSR — source: https://github.com/alexdln/nimpl-context - [@nimpl/getters](https://npmx.dev/package/@nimpl/getters): Implementation of server getters in React Server Components without switching to SSR — source: https://github.com/alexdln/nimpl-getters - [@nimpl/i18n](https://npmx.dev/package/@nimpl/i18n): Internationalization library for React.js with an enabled server component — source: https://github.com/alexdln/nimpl-i18n - [@nimpl/inio](https://npmx.dev/package/@nimpl/inio): Utility for editing a group of JSON files. Plug-and-Play solution - just Run and Edit! — source: https://github.com/alexdln/nimpl-inio - [@nimpl/middleware-chain](https://npmx.dev/package/@nimpl/middleware-chain): The package allows you to create a chain of native next.js middlewares without any modifications — source: https://github.com/alexdln/nimpl-middleware-chain - [@nimpl/path-parser](https://npmx.dev/package/@nimpl/path-parser): Helper for next.js-styled pathname parsing (f.e. /(site)/docs/[key]) to get dynamic params — source: https://github.com/alexdln/nimpl-path-parser - [@nimpl/proxy-chain](https://npmx.dev/package/@nimpl/proxy-chain): Create a chain of native next.js proxies without any modifications — source: https://github.com/alexdln/nimpl-proxy-chain - [@nimpl/router](https://npmx.dev/package/@nimpl/router): Edge router for next.js apps (i18n, basePath, rewrites, redirects) — source: https://github.com/alexdln/nimpl-proxy-chain - [@nimpl/versioner](https://npmx.dev/package/@nimpl/versioner): A package for versioning your next.js application — source: https://github.com/alexdln/omy - [@robindoc/minisearch](https://npmx.dev/package/@robindoc/minisearch): MiniSearch integration for robindoc documentation sites — source: https://github.com/alexdln/robindoc - [@robindoc/next](https://npmx.dev/package/@robindoc/next): Next.js integration for robindoc documentation sites — source: https://github.com/alexdln/robindoc - [@slidebook/cli](https://npmx.dev/package/@slidebook/cli): Build polished, collaborative, and programmable slide decks with React and Next.js. Slidebook is an end‑to‑end toolkit for creating presentations with first‑class support for theming, live preview, and real‑time collaboration. AI‑assisted authoring is ava — source: https://github.com/alexdln/slidebook - [@slidebook/core](https://npmx.dev/package/@slidebook/core): Build polished, collaborative, and programmable slide decks with React and Next.js. Slidebook is an end‑to‑end toolkit for creating presentations with first‑class support for theming, live preview, and real‑time collaboration. AI‑assisted authoring is ava — source: https://github.com/alexdln/slidebook - [@slidebook/image](https://npmx.dev/package/@slidebook/image): Build polished, collaborative, and programmable slide decks with React and Next.js. Slidebook is an end‑to‑end toolkit for creating presentations with first‑class support for theming, live preview, and real‑time collaboration. AI‑assisted authoring is ava — source: https://github.com/alexdln/slidebook - [@slidebook/server](https://npmx.dev/package/@slidebook/server): Build polished, collaborative, and programmable slide decks with React and Next.js. Slidebook is an end‑to‑end toolkit for creating presentations with first‑class support for theming, live preview, and real‑time collaboration. AI‑assisted authoring is ava — source: https://github.com/alexdln/slidebook - [atproxy](https://npmx.dev/package/atproxy): XRPC proxy CLI Server - [Charts and Graphs](https://www.figma.com/community/plugin/1660747565447543355/charts-and-graphs): Charts and Graphs helps you build advanced charts directly in Figma. Select, customise, insert - [classnames-minifier](https://npmx.dev/package/classnames-minifier): Library for configuring style modules to generate compressed classes — source: https://github.com/alexdln/nimpl-classnames-minifier - [contection](https://npmx.dev/package/contection): A state management library that extends React Context API with fine-grained subscriptions and computed values. — source: https://github.com/alexdln/contection - [contection-next-cookie-adapter](https://npmx.dev/package/contection-next-cookie-adapter): A Next.js cookie-based persistence adapter for contection that automatically saves and restores state to browser cookies — source: https://github.com/alexdln/contection - [contection-react-router-cookie-adapter](https://npmx.dev/package/contection-react-router-cookie-adapter): A React Router cookie-based persistence adapter for contection that automatically saves and restores state to browser cookies — source: https://github.com/alexdln/contection - [contection-storage-adapter](https://npmx.dev/package/contection-storage-adapter): A persistent storage adapter for contection that automatically saves and restores state to browser storage — source: https://github.com/alexdln/contection - [contection-top-layer](https://npmx.dev/package/contection-top-layer): A layer management module. Provides efficient management of dialogs and upper layers with granular subscriptions — source: https://github.com/alexdln/contection/tree/main/modules/top-layer - [contection-viewport](https://npmx.dev/package/contection-viewport): A performance-based viewport management module built on top of contection — source: https://github.com/alexdln/contection - [create-robindoc-app](https://npmx.dev/package/create-robindoc-app): CLI to bootstrap a minimal Next.js app using robindoc — source: https://github.com/alexdln/robindoc - [fetch-cache-wrapper](https://npmx.dev/package/fetch-cache-wrapper): source: https://github.com/alexdln/fetch-cache-wrapper - [Images compressor](https://www.figma.com/community/plugin/1288018990636320306/image-compressor): Image Compressor is a versatile and powerful plugin designed to streamline the image compression process within Figma - [kvco](https://npmx.dev/package/kvco): Utility for editing a group of JSON files — source: https://github.com/alexdln/kvco - [next-themeizer](https://npmx.dev/package/next-themeizer): Package for adding "Themeizer" ecosystem interaction configuration to your next.js application — source: https://github.com/alexdln/next-themeizer - [nginx-to-cli](https://npmx.dev/package/nginx-to-cli): A CLI for conveniently managing nginx with familiar commands - [ommy](https://npmx.dev/package/ommy): Unofficial provider for working with notion AI — source: https://github.com/alexdln/ommy - [omy](https://npmx.dev/package/omy): Unofficial CLI for working with notion AI — source: https://github.com/alexdln/omy - [rewriteit](https://npmx.dev/package/rewriteit): Rewrite your text into a desired pattern — source: https://github.com/alexdln/rewriteit - [robindoc](https://npmx.dev/package/robindoc): Robindoc is a framework for automatically creating documentation websites based on markdown files, built on React.js Server Components — source: https://github.com/alexdln/robindoc - [stylelint-themeizer](https://npmx.dev/package/stylelint-themeizer): Stylelint plugin for "Themeizer" ecosystem — source: https://github.com/alexdln/stylelint-themeizer - [themeizer](https://npmx.dev/package/themeizer): Package for embedding themes from "Themeizer" Figma plugin at the server level or at build stage — source: https://github.com/alexdln/themeizer-pkg - [Themeizer](https://www.figma.com/community/plugin/1065764293242137356/themeizer): Figma plugin for controlling and changing the design theme in one click - [themeizer-cli](https://npmx.dev/package/themeizer-cli): A cli tool to automatically replace published (by "Themeizer" plugin) colors in style files with a css variable — source: https://github.com/alexdln/themeizer-cli - [top-layer](https://npmx.dev/package/top-layer): Library for working with native HTML dialogs and upper layers (f.e. notifications) without unnecessary application rerenders. — source: https://github.com/alexdln/top-layer - [wrsp](https://npmx.dev/package/wrsp): Workspace - CLI to improve DX when working with gitlab + jira — source: https://github.com/alexdln/workspace - [yarn-plugin-hooker](https://npmx.dev/package/yarn-plugin-hooker): Yarn plugin that adds support for Pre- and Post- hooks — source: https://github.com/alexdln/yarn-plugin-hooker - [yarn-plugin-if-present](https://npmx.dev/package/yarn-plugin-if-present): Plugin that adds support for the --if-present option for Yarn berry — source: https://github.com/alexdln/yarn-plugin-if-present ## Projects - [Atview](https://atview.net): Pet — Your words, your format, your PDS - connected to the network. Built as a flexible toolkit for parsing, transforming, and publishing content from anywhere - [Expats](https://expats.land): Pet — Information platform for expats in Georgia built in 2022 - [Slidebook](https://slidebook.dev): Pet — Create slides by hand or start with AI, powered by Slidebook Core and Next.js - [Atsky](https://atsky.app): Pet — Advanced client for Bluesky social network with different features and tools - [npmx](https://npmx.dev): Community — a fast, modern browser for the npm registry - [TbilisiJS](https://tbilisijs.dev): Community — Community of JavaScript developers in Tbilisi, Georgia - [Deps Intelligence](https://depsi.alexdln.com): Tool — An MCP service for analyzing npm dependency trees - mapping direct and transitive packages, scoring health and risk, and surfacing outdated, vulnerable, deprecated, and heavy dependencies - [Styheal](https://styheal.alexdln.com): Tool — A service for analyzing a website’s CSS - inventorying selectors and tokens, matching them against the live DOM, and surfacing unused, duplicate, and overly complex styles - [Relatio](https://relatio.alexdln.com): Tool — A service for plotting a graph of interlinking links on a website and identifying their level and problem areas - [Peers](https://peers.alexdln.com): Tool — A service for creating connection graphs from GitHub or Bluesky for use in illustrations and banners. You can also play a pair-guessing game - [Robindoc](https://robindoc.dev): Documentation — Framework for automatically creating docs website based on markdown files - [Nimpl](https://nimpl.dev): Documentation — Open-source solutions for fullstack react.js applications ## Optional - [Sitemap](https://alexdln.com/sitemap.xml): every canonical URL - [Blog RSS](https://alexdln.com/rss.xml): full-text feed of the writing - [Blog RSS (alternate)](https://alexdln.com/rss-feed.xml): same posts, alternate feed shape - [Markdown of this site](https://alexdln.com/md): append any path, e.g. https://alexdln.com/md/about, or send Accept: text/markdown to the normal URL - [@alexdln.com on Bluesky](https://alexdln.com/contact): post discussions and reactions live on Bluesky