TECHNOLOGY RADAR

The technology radar presents our “blessed” technologies, and other technologies that may become some of our blessed technologies - and some that we explicitly want to avoid. We call it the Technology Radar like Thoughtworks and other tech companies just for familiarity.

Hero

The Four Rings

adopt

We use these when they are appropriate for the type of the project. We’ve used them extensively and they’ve proven to be very successful choices for the appropriate projects.

trial

Things nearly certain to be worth using at least in the future, and may end up replacing some of our adopted technologies. Can be used in new projects where the risk can be controlled.

assess

Worth exploring with the goal of understanding. Not yet for any customer projects.

hold

Things we’ve trialed and used, but we would not like to use them in new projects.

The Radar

Typescript

Typescript

adopt

languages

We try to stick to a single language. We use Typescript for everything. We know many more, but regardless we’ll do everything with Typescript where it is good enough.

ReactJS

ReactJS

adopt

frontend

For Web and Mobile. We continue to assess other options as serious ones pop up, but nothing much better, and its ecosystem has ever shown up.

NodeJS

NodeJS

adopt

backend

We'll use NodeJS as a default choice for backends. We keep one eye on Deno; and another on Bun. We may use those but basic Node remains our standard choice.

NextJS

NextJS

adopt

frameworks

websites

We use this for websites. It has the needed features like SSR, SSG, ISG, and a routing architecture which is a perfect fit for websites. No need to poke around with the build.

Prisma

Prisma

adopt

webapp

libraries

An ORM with excellent developer experience. It doesn’t abstract too much and produces efficient queries. Provides strict typing for all DB access and solid DB migrations. We use it to access Postgres. Currently Drizzle has the upper hand here; and we default to Drizzle over Prisma.

Postgres

Postgres

adopt

webapp

datastores

Databases come and go, except Postgres, it always stays because it is solid and extensible for most use cases.

Redis

Redis

adopt

webapp

datastores

Great for Caching and Queueing. Sometimes as a message bus.

Tailwind

Tailwind

adopt

webapp

website

styling

It’s easy to pick up. It has very little abstraction. It produces CSS as external style sheets which are important for Website projects.

ShadCN

ShadCN

adopt

webapp

styling

ShadCN is a collection of accessible and customizable React components built with Tailwind CSS, offering a foundation for building modern, consistent UI designs.

Render.com

Render.com

adopt

webapp

platforms

Similar to Heroku, but it’s moderately priced and will do the boring OPS work for us that repeats itself in every project. Let’s us create scaleable web apps with postgres + redis with prodution and staging environments and automatic deployments, distributed logging an in a few hours. We currently prefer Digital Ocean Apps due to more lenient pricing; also Render still lacks object storage which is a huge gap.

Vercel.com

Vercel.com

adopt

website

platforms

Serverless deployment platform. Great for websites when paired with NextJS. Global CDN. Automated website performance monitoring built in.

Figma

Figma

adopt

tools

UX/Design tool of choice. Good for communicating ideas.

OpenAI Codex

OpenAI Codex

adopt

tools

Used along with Cursor and Claude Code. This is a fast developing space and the preferred AI coding tools may change every other week.

Claude Code

Claude Code

adopt

tools

One of the AI coding tools preferred along with Codex and Cursor.

Cursor

Cursor

adopt

tools

One of the AI coding tools preferred along with Claude Code and Codex.

React Native

React Native

adopt

mobileapp

frameworks

When Mobile, then React Native

Storyblok

Storyblok

adopt

website

datastores

Headless CMS with a Visual Editor. It’s extensible enough for most our use cases in websites and has among the best user experiences for content editors.

Sanity

Sanity

adopt

website

datastores

Pairing Sanity with Shopify projects is a great choice because of their excellent integration.

Framer Motion

Framer Motion

adopt

frontend

libraries

Modern, react-oriented, and battle-tested in our production-grade projects animation framework. Creating a bit more complicated animations with this tool feels like a breeze ;-)

Conventional 
commits

Conventional 
commits

adopt

tools

The way we structure our commit messages ( https://conventionalcommits.org/ ).

Vite

Vite

adopt

webapp

website

tools

We usually don’t have a need to muck about with build tools since we always base our projects on frameworks that make the build tool choice for us, but Vite is on the radar when it’s not an option.

Hydrogen

Hydrogen

adopt

e-commerce

frontend

frameworks

Released by Shopify enables you to build a custom, headless, and optimized-for-performance e-commerce experience. Greatly aligns with our company tech stack.

T3 App Stack

T3 App Stack

adopt

webapp

frameworks

Currently our go-to for full-stack apps. We prefer to architect our apps as single full-stack deployables with back- and frontend in the same codebase when it makes sense, which is almost always in our projects, and T3 is a very good fit.

Digital Ocen Apps

Digital Ocen Apps

adopt

website

platforms

Many PaaS providers have per-developer pricing which rubs us and our clients the wrong way. Digital Ocean has a wide feature set and decent pricing; without the unreasonable per-developer pricing model.

Astro

Astro

adopt

frameworks

website

We find Astro to be superior in certain use-cases, particularly when content is crucial and optimal performance is needed to satisfy SEO gods.

Drizzle

Drizzle

adopt

webapp

libraries

Drizzle ORM is a lightweight, TypeScript-first Object-Relational Mapping library designed for simplicity, type safety, and seamless integration with modern JavaScript and SQL workflows.

ThreeJS + React-Three

ThreeJS + React-Three

trial

website

libraries

Our default choice when we need full programmatic control of anything webgl/3d. We do not use this often enough though so it's mostly been employed in minor one-off cases.

BunJS

BunJS

trial

tools

Super fast all-in-one Javascript runtime. We can use it but currently the advantages aren't enough to dethrone NodeJS as the default choice in client projects.

PayloadCMS

PayloadCMS

trial

website

datastores

Payload CMS is a NextJS process-hosted, TypeScript-based headless content management system that offers extensive customization, robust APIs, and a developer-friendly experience. We've actively trialed it, but are a bit cautious after the acquisition by Figma.

Oxygen

Oxygen

assess

e-commerce

platforms

Fastest way to deploy Hydrogen storefronts.

BlitzJS

BlitzJS

hold

webapp

frameworks

Fullstack JS framework. Built on top of React/NextJS/Prisma/Postgres. We used it as our “Ruby on Rails” for Web Applications. It’s mostly an opinionated collection of libraries on top of NextJS and very productive, but has been surpassed in support and popularity by the T3 stack which we prefer now.

Chakra

Chakra

hold

webapp

styling

We're putting Chakra UI on a little break for our Web Apps. It's been great, but there are some cool new ways to style apps popping up. Time to see what's out there and keep things fresh!

Remix

Remix

hold

website

webapp

framework

We’ved trialed Remix and Next.js remains our preferred option. Since Remix has had an incredible amount of API churn and are moving towards their own React fork; we do not consider it a wise or stable choice for future projects.

SolidJS

SolidJS

hold

website

frontend

frameworks

Keeping our eye on this if we’d get a specific use case, but its ecosystem is too minimal, nor does its advantages bring enough value considering its disadvantages in comparison to React.

VueJS

VueJS

hold

webapp

frontend

We’ve trialed VueJS and deduced there is no reason to use it over React. For our engineers and projects, it’s worse in all regards.

Flutter

Flutter

hold

mobileapp

frameworks

We’ve trialed this when the use case seemed to be a fit. We find it has too many rough edges and it diverges too much from our core JS foundation.

NestJS

NestJS

hold

webapp

frameworks

backend

We rarely need pure backend frameworks. If we did, we’d explore other options before trialing NestJS again. E.g. Moleculer, AdonisJS, or just plain express.

We may have used other popular technologies,
but we don't have a single project using them left and
would never consider using them again.

Things like Angular, GatsbyJS, Redux or MongoDB
are so far in the back mirror that we've
dropped them off the "hold" section completely.