Type-Level Hangman in TypeScript
Implementing a Hangman game entirely at the type level using TypeScript’s type system.
Articles on front-end development with React and Angular.
Implementing a Hangman game entirely at the type level using TypeScript’s type system.
A look at popular React tour libraries, their features, and limitations.
Building a toast component in React can be done in various ways. We'll explore how popular React libraries implement toast notifications, comparing their features, component API and implementation details.
If you use Jotai for state management in your React application, you may want to test your atoms. Let's discuss possible scenarios where testing atoms is necessary and how to do it.
Building a tabs component in React can be done in various ways. In this article, we will explore how different component libraries implement tabs and discuss important considerations to keep in mind.
StyleX is Meta's compiler for styling web apps that powers Facebook, Instagram and other Meta apps. Let's explore the features and limitations of StyleX.
I recently migrated my website from NextJS to Eleventy.
Angular recently released version 17. We'll take a look at the APIs that were introduced in this and previous major versions and how well they play with TypeScript.
Let's talk about hooks that are not just used by component but use components themselves. This lets us co-locate state and UI.
In this article we'll learn how to write component stories in uncontrolled and controlled mode, that properly work together with args and controls in Storybook.
Polymorphic React components are very common and useful, but also tricky to implement and limited in what type-safety they provide. We'll talk about the problems and see an alternative approach using an asChild prop.
Reducers are not only useful for global state management. They can also be used for local component state. And compared to plain useReducer() we can reduce boilerplate code by adapting the API of modern reducer libraries like Redux Toolkit (RTK).
In this article we'll build a styling foundation for a React application using vanilla-extract, a CSS-in-JS library. We'll create a global theme, a CSS reset, utility classes, a polymorphic box component and multi-variant components.
Building complex reactive forms in Angular that require a lot of cross-field validation and triggering side effects isn't an easy task. In this article we'll see one possible way of building such a form using the form service approach.
Every React project looks a bit different. There are so many ways to structure frontend projects. In this article we'll discuss three different project structures.
Writing type safe code using TypeScript highly improves code quality and developer experience. But people often break out of type safety, writing code that isn't strictly type safe anymore. Here are a few tips & tricks for using TypeScript.
Visual Studio Code provides a lot of configuration options. I show you a few of my favorite settings.
Managing state in frontend application is hard. From local component state with performance issues to global state management with its own trade offs, there are many different ways for handling state. But is global state management really the right way to share state between components?
Slots are a way to pass elements to a component and let them render in a specific location, like a header or footer. Let's find out how we can create a slot API in React.
vanilla-extract is a CSS-in-JS library that generates static CSS files at build time. Let's integrate vanilla-extract in a React app with create-react-app.
Form controls with multiple validators often have a separate message for each possible error. The conditional rendering of these error messages is a bit cumbersome by default. Let's find a better way by building a custom directive.
Angular Reactive Forms are great for building forms. For a large form it's often a good idea to split it up into multiple components. We'll find an easy and maintainable way to do that and we'll use strictly typed forms to make our approach type-safe.
Let's build an HTML validator for an Eleventy site. It will validate all generated pages to make sure they are valid HTML. Any errors will be reported in the terminal.
An Angular library helps share code across projects. This guide shows how to create a library with subentry points, manage dependencies, and add a showcase app.
React Hooks are great and I really miss them in Angular. What if Angular had hooks? We could build hooks for state management, subscription handling and even reactive state. So let's build Angular Hooks!
Most translation libraries are focused on static text and do not allow you to build dynamic translations that include links and buttons - but this is a common use case. We'll build an Angular Component that lets you inject any HTML and even Angular Components and Directives into your translations.
Learn how to use the Repository pattern for Angular HTTP Services. The pattern will make your services reusable and easier to test.
SCAM is alternative approach for sharing components between your Angular feature modules. Learn how to apply it and what the benefits are compared to the usual SharedModule approach.
Using CSS Media Queries in your component is one way of making them responsive. But Media Queries are based on the browser width/height which makes your component less reusable in different contexts. We can move the responsibility to the parent by creating component variants.
Stitches is a CSS-in-JS library for React. Let's use the framework-agnostic core of Stitches in Angular to style components. We'll also make it reactive using RxJS.
In a previous article we implemented a reactive form in Angular with child components. Now we'll learn how to initialize the form with data fetched by an API and how to convert the form values back to a data object.
React accepts a single string as className. What if you want to set multiple classes or based on some condition? Let's build a utility function to make class names chainable, conditional and type-safe.
Angular Reactive Forms are a great feature to build forms. When building a large form, you may want to split it up into multiple components. Let's see how this can be done in Reactive Forms. We'll take a look at different approaches and implement one of them.
In React data flows one-way, from top to bottom. It does not support two-way data binding for good reasons. However, we can use Hooks to implement a pseudo two-way data binding.