Dominik Ferber

I'm a freelance Software Engineer and Consultant specialising in React . Since 2015 I've successfully helped enterprise and small companies from all over the world with their frontend work.

Get in touch if you need help with your project

Projects & Publications


Added renderProp to enzyme v3.8.0

Some time ago my coworker Tobi and I built additional test helpers for Airbnb's enzyme. Our most used helper called renderProp removes the overhead of testing render props.

After our helpers gained some traction one of enzyme's contributors reached out to us and I migrated renderProp to enzyme itself. I'm happy that our little helper has made it into the official enzyme package, which got downloaded almost 6 million times last month!


Curious about how npm's download counts work, I ended up building which lets you view the download history of any package published to npm.

Aside from showing statistics of packages, it can also compare authors. Check out these examples: enzyme vs react-testing-library, the migration from babel-core to @babel/core or the total downloads of my packages

Show architecture details

I took the chance of building a small application to experiment with different frontend technologies. I wrote this project three times: in plain JavaScript, in choo and then finally in preact. Aside from trying out new frontend technologies, I also used the lovely Parcel to bundle the site.

Cloudflare Workers are a new technology simliar to AWS lambda which allow running code on demand. As they use V8 isolates instead of node, they start faster than other cloud functions. They are also deployed around the world automatically, so response times are low.

The project ended up more challening than I thought at first. It was a ton of fun nonetheless and I'm very excited to see where Cloudflare Workers are headed.


Test a Render Prop!

enzyme is a hugely popular library for testing React components. While contracting for Commercetools, me and my teammates found it a bit inconvenient to test render props with enzyme - and we had plenty of them after their epic rise in popularity. My coworker Tobi and I built an extension for enzyme which removes the overhead of testing render props called @commercetools-frontend/enzyme-extensions.

I wrote the "Test a Render Prop!" article as a homage to the hugely popular "Use a render prop!" article. It is supposed to be the missing testing section of the original.

The developers behind enzyme have since reached out to us and we helped integrate the renderProp test helper of enzyme-extensions into the v3.8.0 release of enzyme, which I'm very excited about!

iOS Game


react-native allows React developers to write iOS applications. I was really curious about development of native applications, so I set out to build a mobile game in my spare time. After around three months, the game was completed. I explored a lot more than I initially had set out for. The game featured notifications, group chat, a friend system, camera access and image upload. It was powered by RethinkDB and node.js in the backend.

My highlight was that it got accepted into the App Store. It received a few downloads from friends, and we played plenty of matches together and sent hundreds of messages over the next few months.

Unfortunately, the application is no longer available as I did not continue to pay the fee for the Apple Developer Program. Building the application was a very enriching experience and I learned a lot from it!


Minimal Browser Window

I needed a minimal browser window for a mockup but nothing out there fit my taste, so I created my own. Feel free to download and reuse.


Enabling assets for Server-Side Rendering in Webpack

This aricle shows how to ensure consistent assets paths when using server-side rendering with assets.

I pioneered fake-file-loader, fake-url-loader and fake-style-loader to enable server-side rendering of assets through Webpack. The functionality got replicated in the offical webpack loaders later, which allowed me to deprecate these packages.


Linting Meteor Applications

This article will introduce you to code linting. It shows how linters are useful, how to set them up and how to integrate them into Meteor projects, Continuous Integration and your editor. It also introduces eslint-plugin-meteor, a tool I created specifically for linting Meteor projects.

This was my last big article of the Meteor series. The tool I created, which this article is about, is currently receiving over 20k monthly downloads, and has been downloaded over half a million times in total.


Real-World ES6 Examples in Meteor

This article shows practical examples of how ES6 eases the day-to-day development in Meteor. It helped educate many developers about the new language features. I also gave a spontaneous talk about it at a Meteor meetup in Munich. The article received over 10k views since then.


ES6 in Meteor

JavaScript as we use it today is based on the ECMAScript 5 standard. All commonly used browsers and node.js support it. The next version of ECMAScript (ES) is going to be ES6.

This article shows how to enable new JavaScript features in Meteor. It received almost 15k views since I wrote it in 2015. My goal of this article was to help the Meteor community to adopt ES6.


Meteor Daily

Meteor Daily was a daily digest of everything happening around Meteor. I scraped all related news and published a digest of them almost every day from 8th of August 2014 until 29th of March 2015. The project had over 13k page views since its inception. I eventually stopped using Meteor as I wanted more control over the stack, and so the projected ended as well.


Singapore Blog

When I lived in Singapore in 2014, I blogged about our stay there. I built the blog myself to keep friends and family updated about us.

Bachelor Thesis

Development of a Classroom Response System

Many universities use systems to actively involve students during class. In addition to long-established hardware-based CRS, there are more and more web-based solutions being developed, which allow students to participate by using their own smart devices in order to vote on questions asked by their teacher.

In this paper, which was my bachelor thesis, I outline how to develop a web-based Classroom Response System which can be used by professors during lectures.

I also spoke about my learnings of developing a Meteor application at the Munich Node.js User Group meetup.

About me

I graduated from with a B.Sc. in Computer Sciences. After that I lived in Singapore for 6 months. Then I co-founded a company in Munich, supported by the EXIST scholarship for founders. Since 2015, Iā€™m traveling the world while working as a freelance Software Engineer helping clients build web applications.


I currently have - - - packages published on npm, which have been downloaded - - - times in the last 30 days. I wrote - - - articles on Medium using - - - words. They have been clapped for - - - times and they received over 50k views.

On GitHub, I currently have - - - public repositories, - - - public gists and opened - - - issues. I wrote - - - issue comments and opened - - - pull requests. I starred - - - and contributed to - - - repos. I am following - - - people and have - - - followers.

I tweeted - - - times on Twitter. I'm following - - - people and have - - - followers. I am part of - - - lists and liked - - - tweets.

When I'm not coding I love to travel around. I've been to 28 countries so far. I post my travel photos to Instagram. I currently have - - - posts there. I have - - - followers and follow - - - accounts. This is where I've been recently:

Work with me

As a consulant and frontend developer I help my clients build web applications. Over the last years I gained experience in versatile parts of the frontend. I worked on feature teams, frontend infrastructure and as the intersection of developers and designers. The work ranged from highly technical infrastructure setup to creative work like building a Design System.

I'd love to get to know your web application to see how I can help out. I work both remotely and in-house. I usually work with React, React Native, Apollo, GraphQL, Webpack, node, and databases and services like Prisma, MongoDB and RethinkDB.

Send an email so we can find out what we can achieve together šŸ˜Š