<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>All In Developer</title><description>Practical notes on TypeScript, Node tooling, git and Docker — short fixes, patterns and lessons from day-to-day development.</description><link>https://all1n.dev/</link><language>en</language><item><title>🙃 verbatimModuleSyntax doesn&apos;t remove your imports, it keeps them</title><link>https://all1n.dev/posts/2026-10-16-verbatim-module-syntax-keeps-imports/</link><guid isPermaLink="true">https://all1n.dev/posts/2026-10-16-verbatim-module-syntax-keeps-imports/</guid><description>TypeScript drops imports only used as types by default. verbatimModuleSyntax turns that off and keeps what you wrote, even imports of type-only packages.</description><pubDate>Fri, 16 Oct 2026 09:00:00 GMT</pubDate></item><item><title>🐳 Slimming a production Strapi 5 Docker image from 3.2 GB to 867 MB</title><link>https://all1n.dev/posts/2026-10-04-slim-strapi-5-docker-image/</link><guid isPermaLink="true">https://all1n.dev/posts/2026-10-04-slim-strapi-5-docker-image/</guid><description>Most of a production Strapi image is admin build tooling and frontend libraries the server never loads. Deploy only the app, drop webpack and delete the rest.</description><pubDate>Sun, 04 Oct 2026 05:45:04 GMT</pubDate></item><item><title>🎯 Overloading on a branded type</title><link>https://all1n.dev/posts/2026-09-25-overloading-on-a-branded-type/</link><guid isPermaLink="true">https://all1n.dev/posts/2026-09-25-overloading-on-a-branded-type/</guid><description>An overload set gives the branded argument a precise return type and the unbranded one a nullable type, so parsed callers skip dead checks.</description><pubDate>Fri, 25 Sep 2026 13:00:00 GMT</pubDate></item><item><title>⚖️ When to use branded types, and when not to</title><link>https://all1n.dev/posts/2026-09-25-branded-types-good-bad-use-cases/</link><guid isPermaLink="true">https://all1n.dev/posts/2026-09-25-branded-types-good-bad-use-cases/</guid><description>Branding pays off for the Invalid Date hole, sanitization, money, ids and validated values. It is noise in one module or on mutable types.</description><pubDate>Fri, 25 Sep 2026 11:00:00 GMT</pubDate></item><item><title>🏷️ Branded types in TypeScript</title><link>https://all1n.dev/posts/2026-09-25-typescript-branded-types/</link><guid isPermaLink="true">https://all1n.dev/posts/2026-09-25-typescript-branded-types/</guid><description>TypeScript compares types by shape, so swapping a user id and a post id compiles. A brand makes them distinct and leaves nothing at runtime.</description><pubDate>Fri, 25 Sep 2026 09:00:00 GMT</pubDate></item><item><title>🧩 Import ESM-only types from a CommonJS TypeScript project</title><link>https://all1n.dev/posts/2026-09-03-import-esm-only-packages-from-commonjs-typescript/</link><guid isPermaLink="true">https://all1n.dev/posts/2026-09-03-import-esm-only-packages-from-commonjs-typescript/</guid><description>A CommonJS file resolves an ESM-only package through the require condition, so its types go missing. The resolution-mode attribute fixes it.</description><pubDate>Thu, 03 Sep 2026 09:00:00 GMT</pubDate></item><item><title>🩹 Migrate from patch-package to pnpm patch</title><link>https://all1n.dev/posts/2026-06-17-migrate-patch-package-to-pnpm-patch/</link><guid isPermaLink="true">https://all1n.dev/posts/2026-06-17-migrate-patch-package-to-pnpm-patch/</guid><description>Migrate patch-package patches to pnpm patch in a few steps: the diff stays the same, only the paths inside the patch change.</description><pubDate>Wed, 17 Jun 2026 09:30:00 GMT</pubDate></item><item><title>🧶 Implicit CLSX in React</title><link>https://all1n.dev/posts/2021-12-01-implicit-clsx-in-react/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-12-01-implicit-clsx-in-react/</guid><description>Patch React so className accepts arrays and objects like Vue class bindings, without importing clsx in every app component.</description><pubDate>Wed, 01 Dec 2021 22:56:33 GMT</pubDate></item><item><title>☢️ HTML Comment in React</title><link>https://all1n.dev/posts/2021-11-25-html-comment-in-react/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-11-25-html-comment-in-react/</guid><description>JSX does not allow HTML comments. For learning purposes, here is how to trick React into rendering a real HTML comment node.</description><pubDate>Thu, 25 Nov 2021 23:26:03 GMT</pubDate></item><item><title>🎄 Render in Vue, 16+ ways</title><link>https://all1n.dev/posts/2021-11-19-render-in-vue-16-ways/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-11-19-render-in-vue-16-ways/</guid><description>Sixteen ways to render something in Vue 3, from templates to render functions and JSX, with a full example repository to try.</description><pubDate>Fri, 19 Nov 2021 10:57:24 GMT</pubDate></item><item><title>🥑 Put your React on a diet</title><link>https://all1n.dev/posts/2021-10-22-put-your-react-on-a-diet/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-10-22-put-your-react-on-a-diet/</guid><description>Swap React for Preact in a Create React App project without ejecting, by installing preact/compat under the React names.</description><pubDate>Fri, 22 Oct 2021 01:02:15 GMT</pubDate></item><item><title>🗜️ Optimal Tuple vs Record</title><link>https://all1n.dev/posts/2021-10-13-tuple-vs-record-optimization/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-10-13-tuple-vs-record-optimization/</guid><description>Should a function return a tuple or an object? Compare how each one minifies, and which is smaller in the production bundle.</description><pubDate>Wed, 13 Oct 2021 12:42:36 GMT</pubDate></item><item><title>🧬 JSX at lowest level</title><link>https://all1n.dev/posts/2021-10-07-jsx-at-lowest-level/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-10-07-jsx-at-lowest-level/</guid><description>JSX looks like HTML in JavaScript, but it compiles to React.createElement or jsx calls. A look at what JSX really turns into.</description><pubDate>Thu, 07 Oct 2021 07:50:21 GMT</pubDate></item><item><title>↪️ Next.js, Universal and Nuxt.js static redirects</title><link>https://all1n.dev/posts/2021-10-04-next-js-universal-and-nuxt-js-static-redirects/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-10-04-next-js-universal-and-nuxt-js-static-redirects/</guid><description>Next.js, Nuxt.js and Angular Universal need a server for redirects. On a static site, use HTML pages with a meta refresh.</description><pubDate>Mon, 04 Oct 2021 07:15:47 GMT</pubDate></item><item><title>🍂 Remove gone git branches</title><link>https://all1n.dev/posts/2021-09-30-remove-gone-git-branches/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-09-30-remove-gone-git-branches/</guid><description>A git alias that fetches with prune and deletes every local branch whose remote is gone, usually after a merged pull request.</description><pubDate>Thu, 30 Sep 2021 08:54:36 GMT</pubDate></item><item><title>🔍 Bookmarklets + Browser Search Engine</title><link>https://all1n.dev/posts/2021-09-28-bookmarklets-browser-search-engine/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-09-28-bookmarklets-browser-search-engine/</guid><description>Add custom search engines to the browser address bar, write bookmarklets, then combine both to run scripts from a query.</description><pubDate>Tue, 28 Sep 2021 16:43:50 GMT</pubDate></item><item><title>🔺 Flat React Doom Pyramid in 1LOC</title><link>https://all1n.dev/posts/2021-09-22-flat-react-doom-pyramid-in-1loc/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-09-22-flat-react-doom-pyramid-in-1loc/</guid><description>Context providers pile up into a deeply nested pyramid at the app root. Flatten them as a list with reduceRight in one line.</description><pubDate>Wed, 22 Sep 2021 21:10:26 GMT</pubDate></item><item><title>🔐 Private Route in React Router v6</title><link>https://all1n.dev/posts/2021-09-21-private-route-in-react-router-v6/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-09-21-private-route-in-react-router-v6/</guid><description>Private routes in React Router v5 wrapped Route and Redirect in a custom component. Here is the same guard with the v6 beta.</description><pubDate>Tue, 21 Sep 2021 22:52:53 GMT</pubDate></item><item><title>🔧 Git remote readd alias</title><link>https://all1n.dev/posts/2021-07-13-git-remote-readd-alias/</link><guid isPermaLink="true">https://all1n.dev/posts/2021-07-13-git-remote-readd-alias/</guid><description>A git alias that removes a remote and adds it back with the same URL, dropping its stale remote branches in one command.</description><pubDate>Tue, 13 Jul 2021 22:44:54 GMT</pubDate></item><item><title>🚧 Configure MSW in NX</title><link>https://all1n.dev/posts/2020-06-22-configure-msw-in-nx/</link><guid isPermaLink="true">https://all1n.dev/posts/2020-06-22-configure-msw-in-nx/</guid><description>Set up Mock Service Worker in an Nx monorepo: install msw, generate the service worker file and add it to the app assets.</description><pubDate>Mon, 22 Jun 2020 10:12:11 GMT</pubDate></item><item><title>🐏 How React memoization works</title><link>https://all1n.dev/posts/2020-03-31-how-react-memoization-kind-of-works/</link><guid isPermaLink="true">https://all1n.dev/posts/2020-03-31-how-react-memoization-kind-of-works/</guid><description>JSX creates new children elements on every render, so React.memo alone does not help. Memoize the children with useMemo too.</description><pubDate>Tue, 31 Mar 2020 15:50:09 GMT</pubDate></item><item><title>🔥 How to merge a pull request</title><link>https://all1n.dev/posts/2020-03-03-how-to-merge-a-pull-request/</link><guid isPermaLink="true">https://all1n.dev/posts/2020-03-03-how-to-merge-a-pull-request/</guid><description>GitHub offers merge commit, squash and merge, and rebase and merge. When to use each, based on the pull request commits.</description><pubDate>Tue, 03 Mar 2020 12:48:25 GMT</pubDate></item><item><title>🗂️ What is the folder structure of project/library working on?</title><link>https://all1n.dev/posts/2019-09-26-mind-sharing-folder-structure-of-project-library-working-on/</link><guid isPermaLink="true">https://all1n.dev/posts/2019-09-26-mind-sharing-folder-structure-of-project-library-working-on/</guid><description>How I lay out the folders of an app and of a library, following the Angular style guide, with the tree output of each one.</description><pubDate>Thu, 26 Sep 2019 08:48:05 GMT</pubDate></item><item><title>🦥 React.lazy without a default export</title><link>https://all1n.dev/posts/2019-05-24-react-lazy-without-default-export/</link><guid isPermaLink="true">https://all1n.dev/posts/2019-05-24-react-lazy-without-default-export/</guid><description>React.lazy expects a module with a default export. Map a named export to default inside the dynamic import to lazy load it.</description><pubDate>Fri, 24 May 2019 10:08:13 GMT</pubDate></item><item><title>🔀 TypeScript function overloading</title><link>https://all1n.dev/posts/2019-03-28-typescript-function-overloading/</link><guid isPermaLink="true">https://all1n.dev/posts/2019-03-28-typescript-function-overloading/</guid><description>One implementation, several call signatures: how to write them for functions, methods, constructors and statics, and the rules that pick one.</description><pubDate>Thu, 28 Mar 2019 08:58:38 GMT</pubDate></item><item><title>🔗 Don&apos;t return early from React.Component when using React.createRef</title><link>https://all1n.dev/posts/2018-12-03-don-t-return-early-from-react-component-when-using-react-createref/</link><guid isPermaLink="true">https://all1n.dev/posts/2018-12-03-don-t-return-early-from-react-component-when-using-react-createref/</guid><description>A note proposed for the React docs: return early from render in a React.Component and a React.createRef ref may never attach.</description><pubDate>Mon, 03 Dec 2018 15:16:57 GMT</pubDate></item><item><title>💪🏼 Typed fetch Response in TypeScript</title><link>https://all1n.dev/posts/2018-11-23-typed-fetch-response-in-typescript/</link><guid isPermaLink="true">https://all1n.dev/posts/2018-11-23-typed-fetch-response-in-typescript/</guid><description>The fetch Response type in lib.dom.d.ts returns any from json(). Extend it with a generic TypedResponse for typed payloads.</description><pubDate>Fri, 23 Nov 2018 15:49:14 GMT</pubDate></item><item><title>🗄️ Create own React.Fragment</title><link>https://all1n.dev/posts/2018-08-16-create-own-reactfragment/</link><guid isPermaLink="true">https://all1n.dev/posts/2018-08-16-create-own-reactfragment/</guid><description>Stuck on a React version older than 16.2, with no fragments? A Fragment just returns its children, so you can write your own.</description><pubDate>Thu, 16 Aug 2018 12:16:13 GMT</pubDate></item><item><title>♻️ Override DOM input typed character</title><link>https://all1n.dev/posts/2018-07-17-override-dom-input-typed-character/</link><guid isPermaLink="true">https://all1n.dev/posts/2018-07-17-override-dom-input-typed-character/</guid><description>A QR code scanner types as a US keyboard, so other layouts get wrong text. Catch keypress and map each key back to EN-US.</description><pubDate>Tue, 17 Jul 2018 11:05:00 GMT</pubDate></item><item><title>🪆 Nesting and overriding new React Context API</title><link>https://all1n.dev/posts/2018-07-06-nesting-and-overriding-new-react-context-api/</link><guid isPermaLink="true">https://all1n.dev/posts/2018-07-06-nesting-and-overriding-new-react-context-api/</guid><description>How react-router v4 nests React context to override parent route info for children, and how to do it with the Context API.</description><pubDate>Fri, 06 Jul 2018 07:55:54 GMT</pubDate></item></channel></rss>