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.

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.

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.

Convex

Convex

adopt

webapp

frameworks

Convex currently offers the best AI-boosted development experience we’ve found. Coding agents can deliver a full-stack React app on Convex out of the box without MCP servers, which makes it a very compelling platform for delivering end-to-end web apps as fast as possible.

Digital Ocean Apps

Digital Ocean 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.

Prisma

Prisma

hold

webapp

libraries

An ORM with excellent developer experience. It doesn’t abstract too much, produces efficient queries, and provides strict typing for all DB access alongside solid migrations. We’ve used it extensively against Postgres, but Drizzle now has the upper hand and is our default for new projects.

Chakra

Chakra

hold

webapp

styling

It served us well for Web Apps, but we’ve settled on Tailwind + ShadCN, which give us less abstraction and easier customisation. We would not start a new project on Chakra.

Render.com

Render.com

hold

webapp

platforms

Similar to Heroku, moderately priced, and it handles the boring ops work that repeats itself in every project. Lets us stand up scalable web apps with Postgres + Redis — production and staging environments, automatic deployments and distributed logging — in a few hours. We now prefer Digital Ocean Apps for its more lenient pricing, and Render still lacks object storage, which is a big gap for us.

Remix

Remix

hold

website

webapp

framework

We’ve trialed Remix and Next.js remains our preferred option. Given the amount of API churn and the project’s shifting direction, we do not consider it a stable choice for new 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.