Published onNovember 17, 2024Be careful with useSyncExternalStoredevreactDont't make the same mistake as I did
Published onNovember 12, 2024Bluesky later: Schedule Bluesky post in the future for FREEdevblueskyopen-sourceI made this scheduler
Published onNovember 2, 2024Implementing Exclusive Relationships in PostgreSQL and PrismadevpostgresprismaA Real-World Example with Triggers
Published onOctober 31, 2024Instructions for v0 and GPT to generate high quality React codedevaireactThis instructions make v0 a much better code companion
Published onOctober 16, 2024On-the-fly feature flag in Next.js with Google SheetsdevnextjsIt's simple yet performant!
Published onOctober 11, 2024Running Long Jobs with Queues in Next.js using Bull and RedisdevnextjsOffload those long running tasks to background workers without third party services!
Published onOctober 10, 2024How to prevent re-render in React with Tailwind CSSdevnextjsreacttailwindSometimes all you need is just CSS and HTML. No JavaScript needed.
Published onOctober 6, 2024Code based routing in Next.jsdevnextjsFor those who hate the file-based routing in Next.js
Published onSeptember 29, 2024SSR-friendly Custom React Hook for Local Storage Read and WritedevnextjsreactI learned something new about window's storage event!
Published onSeptember 28, 2024How to manipulate search params in Next.js easilydevnextjsreactIt's not that simple!
Published onSeptember 24, 2024How to reset the state of useActionState in ReactdevreactIt's kinda weird that the state cannot be reseted easily
Published onSeptember 23, 2024How to protect Next.js App Router's page with authorization checkdevreactnext.jstypescriptWhen we don't want anyone to be able to access the page
Published onSeptember 22, 2024How to create infinite scroll with server action and useActionState in Next.jsdevreactnext.jstypescriptNo fetching, no useState, and no API endpoint
Published onSeptember 15, 2024How to deploy a single file website to VerceldevvercelNo build steps, no 3rd party dependencies, just a single file
Published onSeptember 10, 2024Interesting behaviour of useTransition in Next.jsdevnextjsreactI just found out about its two use cases
Published onSeptember 4, 2024How to Show Task Sequence Progress with React Suspense and RSC in Next.jsdevnextjsWithout useState, useEffect, client side fetch, or any other networking library
Published onAugust 28, 2024The new TypedSQL in Prisma: Raw query with type safetydevprismaRaw dogging your SQL query safely!
Published onAugust 27, 2024How to deploy App Store and Beta versions of React Native iOS app from Azure DevOps pipelinedevreact-nativeiosSo testers can install both App Store and Beta versions of your app
Published onAugust 17, 2024How to add comment on table and column in PostgresdevpostgresI was just wondering if it's possible and it turns out it is
Published onAugust 10, 2024How to deploy React Native iOS app to TestFlight from Azure DevOps pipelinedevreact-nativeiosThis is just a guide for my future self to deploy quickly
Published onAugust 7, 2024Closure vs Function in JavaScriptdevjavascriptUnderstanding this will help you avoid subtle memory issues in JavaScript
Published onAugust 4, 2024Subtle memory issues in JavaScript thanks to closuresdevjavascriptI found out that setTimeout can accept more than two arguments
Published onJuly 29, 2024How to generate fake data in Postgres with faker_fdwdevdockerpostgresMake your staging or development database look like production
Published onJuly 23, 2024How to run pg_cron via DockerfiledevdockerTo quickly have a cron job in Postgres
Published onJuly 10, 2024What every developer needs to dodevEspecially when you are new to software development
Published onJuly 7, 2024Demistifying cache in Next.jsdevnextjsThe difference between cache and unstable_cache in Next.js
Published onJuly 2, 2024Pull Request Best Practices: Name Nitpicking is OKdevpull-requestIt's not always nitpicking, sometimes it's needed!
Published onJuly 1, 2024The unintuitive default behaviors in Next.js 14 App RouterdevnextjsMany fell victims to this questionable choice of default behaviors
Published onJune 18, 2024Simplify data fetching with RSC, Suspense, and use API in Next.jsdevnextjsThe new use API combined with React Server Components (RSC) and Suspense can simplify data fetching in Next.js
Published onJune 12, 2024How to render zoomable image with Shadcn UI and Tailwind CSS in Next.jsdevnextjstailwindWith Shadcn UI and Tailwind CSS, you can easily render zoomable image.
Published onJune 10, 2024Making a User-Friendly, Smart, and Secure AI Assistant ChatbotdevnextjsaiVercel AI SDK and gpt-4o make it easy to build a user-friendly and natural-sounding AI chatbot.
Published onJune 7, 2024How to correctly display a list of languagesdevtypescriptjavascriptMany got this wrong.
Published onJune 3, 2024The new maxAutomaticRoundtrips in Vercel AI SDKdevaiIt simplifies tool calling and feeds the result back to the model
Published onMay 27, 2024Simple i18n for Next.js is smarter nowdevnextjscliNow I can finally replace i18next from my projects!
Published onMay 22, 2024Simple Internationalization for Next.js with Plurals SupportdevnextjscliNew update!
Published onMay 20, 2024How to easily secure Next.js projectsdevnextjsVery useful when you just want to demo your project
Published onMay 16, 2024How to correctly split a string into words in JavaScriptdevtypescriptOr why you should stop using the split function!
Published onMay 14, 2024Internationalization for Next.js Without HassledevnextjscliAnd also type-safe with zero overhead!
Published onMay 13, 2024Stop using environment variable directly in your TypeScript codedevnextjscliAfter that, stop writing the code to validate the environment variable.
Published onMay 9, 2024How to unit test Next.js API routedevnextjstestvitestmswTurned out it's not that hard!
Published onMay 7, 2024How to use a page or website screenshot as an Open Graph imagedevcliopen-sourceFor free!
Published onMay 6, 2024How to have animated nav tabs with React and Tailwind CSSdevnextjsreacttailwindJust like the one in Vercel's dashboard
Published onMay 3, 2024How to Feed the Function Call Result Back to the Model with Vercel AI SDKdevaiTo get a better response from the model
Published onApril 30, 2024How to clone only specific folder in Git repodevgitWhen you don't need the whole repo.
Published onApril 29, 2024How I accidentally increase Vercel usagedevnextjsvercelYou shouldn't make the same mistake as I did
Published onApril 25, 2024React Strict Mode and Race ConditiondevtypescriptI actually caught a bug thanks to Strict Mode
Published onApril 24, 2024How to cancel fetch on demand OR with timeoutdevtypescriptDon't trust what ChatGPT says
Published onApril 23, 2024You don't need useState in ReactdevreacttypescriptJust like you don't need useEffect
Published onApril 17, 2024server-only package is empty?!devnextjsThen how can it prevent a client component from using it?
Published onApril 16, 2024Understanding Layout and Template Next.js App RouterdevnextjsIt's not that simple
Published onApril 15, 2024Overcoming Next.js' Search Params Limitation in LayoutsdevnextjsNot many people know about this but parallel routes is awesome
Published onApril 9, 2024Should you use Vercel?devvercelcoolifyAnd alternatives tools for self-hosting your app
Published onMarch 29, 2024A Simple Guide to Using section-* in HTML Forms for AutocompletedevhtmlPrevent the browser from mixing up your form fields when using autocomplete.
Published onMarch 28, 2024How to have multiple root layouts in Next.js with App RouterdevnextjsDifferent routes in Next.js with App Router can have different root layouts.
Published onMarch 26, 2024Temporal Dead Zone in JavascriptdevjavascriptOr how I learned more about variable declaration in Javascript
Published onMarch 20, 2024Populate Postgres database with fake datadevpostgresDirectly from the database itself
Published onMarch 19, 2024A few words on "A few words on testing"devAgree on some, disagree on the others
Published onMarch 8, 2024Using generator function in ReactdevnextjsreactTo get sequence of values predictably
Published onMarch 7, 2024The main problem with Next.js 14 nowdevnextjsreactThat makes it feels unstable
Published onMarch 6, 2024The Quality That Delights: OTP auto fill inputdevphilosophyOr as the Japanese said, 魅力的品質
Published onFebruary 29, 2024The power of two random choicesdevstatisticsphilosophyBetter than select one in random
Published onFebruary 28, 2024You should start using with and at methods in JavascriptdevjavascriptBecause it's awesome
Published onFebruary 27, 2024Did you know about sparse array in Javascript?devjavascriptI didn't, but now I know
Published onFebruary 26, 2024How to use Open Props with Tailwind CSSdevtailwindcssSpice up the animation!
Published onFebruary 5, 2024Make CLI app with ReactdevtypescriptreactcliWhy not right? React is cool!
Published onJanuary 31, 2024Reuse include in Prisma Query with TypeScript satisfiesdevnextjstypescriptTo avoid repetition!
Published onJanuary 30, 2024Making Your Code Endure Beyond Your TenuredevEvery code becomes legacy when it's written.
Published onJanuary 29, 2024How to close a dialog on success or render an error with Remix fetchersdevremixBased on Ryan Florence tweet
Published onJanuary 26, 2024Basic visitor count using Next.js middleware and Vercel KVdevnextjsLike, very basic
Published onJanuary 24, 2024Enhancing User Experience with Background Tasks in Vercel Edge MiddlewaredevnextjsHave you heard of waitUntil?
Published onJanuary 23, 2024Slash Through Complexity using Occam's RazordevphilosophyThe simplest solution is often the correct one
Published onJanuary 22, 2024Cron job in PostgreSQLdevdatabasepostgresWhen you need to periodically update your database
Published onJanuary 19, 2024Gall's Law: Unraveling the Secrets to Successful Programming ProjectsdevphilosophyStart simple
Published onJanuary 18, 2024Checking File Existence Efficiently Using Range RequestsdevJust a byte. No need for everything.
Published onJanuary 17, 2024Stop torturing yourself working alone. Talk with others.devIt's gonna save a lot of time
Published onJanuary 16, 2024Understanding dangerouslySetInnerHTML in React: Use Cases and RisksdevtypescriptreactIs it really dangerous?
Published onJanuary 15, 2024How Understanding the Chesterton Fence Can Make You a Better Programmer!devphilosophyDon't blindly remove that safe guard
Published onJanuary 12, 2024Understanding the Subtleties of JavaScript's eval: Local vs. Global ExecutiondevtypescriptIt's weird syntax, I know
Published onJanuary 11, 2024How You're Falling for Parkinson's Law Without Even RealizingdevphilosophyThe law applies to programming world too
Published onJanuary 10, 2024Async Local Storage in Node.jsdevtypescriptIt's like React's Context but for Node.js
Published onJanuary 9, 2024What is "async" must be await-eddevtypescriptSubtle bug that could cause you headache
Published onJanuary 8, 2024Another day, another React Hydration errordevpull-requestreactnext.jstypescriptThis time because of timezone
Published onJanuary 4, 2024Must remember when using Next.js App Routerdevopen-sourcenextjsHere's one thing you must never forget when using Next.js App Router.
Published onNovember 22, 2023Updated Next Secure Download to Next.js 14 with App Routerdevopen-sourceNow using the new App Router and also have a new icon
Published onNovember 15, 2023Serve a password-protected file for FREEdevopen-sourceA Next.js project to serve a password-protected download link
Published onNovember 11, 2023How to return JSX from React Server Actionsdevpull-requestreactnext.jstypescriptA simple example of how to return JSX from a server action
Published onSeptember 5, 2023Use single state instead of threedevpull-requestreactUse single state instead of multiple states
Published onSeptember 4, 2023Use <Link> instead of router.pushdevpull-requestreactnext.jsIt's better to use Link component when possible in Next.js
Published onSeptember 3, 2023What is Discriminated Union in TypeScript?devpull-requestreactnext.jstypescriptA short example of discriminated union
Published onAugust 21, 2023Early return for unhappy pathdevpull-requestreactnext.jstypescriptA pattern I like is to return early for unhappy paths in a function
Published onAugust 9, 2023Use Tailwind's Arbitrary Variantdevpull-requestreactnext.jstypescripttailwind
Published onDecember 7, 2020How to track the traffic of views and clones of Github RepositorydevTips and methods for tracking views and clones traffic on GitHub repositories.
Published onMay 5, 2020[Dev Note] Using Environment Variables in NextJS Safely and ConvenientlynextjsdevreactA developer's guide on using environment variables in NextJS effectively, updated for version 9.4.
Published onApril 17, 2020[Dev Note] How to Write Tests for React App ComfortablydevtestreactInsights into comfortable and effective test-writing for React applications, highlighting various use cases.
Published onOctober 20, 2019Learning Microcopy from Apple Style GuidedevInsights into microcopy and copywriting, inspired by the Apple Style Guide, with a focus on user experience.
Published onOctober 6, 2019[Dev Note] Testing React component which contains async codereactdevDiscusses testing React components with asynchronous code, focusing on fetching data upon first component mount.
Published onMay 7, 2019Configuring New MacdevA guide on setting up a new Mac Mini, focusing on personal preferences and essential configurations.
Published onFebruary 9, 2019[Dev Note] Edit Git Commit Message and Cypress test crashes with DroneiodevcypressPractical tips on editing Git commit messages and addressing Cypress test crashes with Drone.io.
Published onDecember 2, 2018Type-Safe Localization for React App Using FlowdevreactDiscusses creating type-safe localization for React apps with Flow, motivated by Switzerland's multilingual context and focusing on popular React internationalization libraries.