Wix engineering blog tells the story of our daily challenges and our way of solving them. You can read about architecture, scaling, mobile and web development, management and more. All written by our very own Wix engineers. But there’s more.
You can find even more valuable content on working at scale, solving robust challenges and creating highly efficient code. In case you missed it - introducing our Wix Engineering Medium publication.
Check out these featured Medium technical articles. You can find many many more on our Medium publication. And yes, all written by our very own Wix engineers.
Continually Growing Your Engineering Skills While Scaling the Organization - The Unique Wix Engineering Culture - Aviva Peisach
Aviva Peisach, our Head of backend engineering, shared the recipe for our secret sauce - our unique formula of investing 20% of our engineering time in professional and community growth. Learn how having a lively and vibrant engineering community gives each and every member of our teams an opportunity to grow and have access to the brilliant minds and experience of our talented and passionate engineers. Read Here.
How We Managed to Reduce our Latency by 3 Times - David Abramzon
Have you ever had performance issues with a big microservices architecture? In this article David Abramzon shares his personal story on how we managed to reduce latency in the Wix authorization system 3-fold, ending up with single-digit (in ms) responses consistently.
4 Microservices Caching Patterns at Wix - Natan Silnitsky
Wix handles a huge amount of traffic. More than 500 billion HTTP requests and more than 1.5 billion Kafka business events per day. Caching responses and events is critical to having the best performance and resilience for Wix’s 2,000 microservices. Read Natan Silnitsky’s article to understand how we do it.
There’s nothing like a first impression - How to successfully onboard developers - Dalia Simons
Onboarding is an important part of engineering recruiting that is commonly overlooked. Covid-19 days made this even more challenging — how do we onboard workers when we’re not physically in the same office? - Read Dalia Simons's article.
You can also listen to her podcast interview Onboarding Through a Pandemic.
How Skaffold Enabled Me to Deliver Features 10 Times Faster - Matan Cohen
How many times have you started a new microservice/consumer/module, and asked yourself: “How am I going to build the environment to test it? Check that it’s actually working?”
In this article, by Matan Cohen, you will get answers, and more.
How to Instantaneously Install NPM Packages While Supporting Multi-version and Avoiding Duplications - Schachar Levin
Have you ever waited five or more minutes for 1Gb of NPM packages to download just to write three lines of code? We have. It doesn’t scale.
Watch Schachar Levin’s talk to find the solution we implemented to face this challenge.
React Apollo vs Redux + REST: Implementing the same feature twice - Gytis Vinclovas
Two different client stacks - Redux with REST calls and the React Apollo with GraphQL. Read Gytis Vinclovas’ article to understand his experience, benefits and drawbacks of using one versus the other.
What is in your Testing Scope? - Olga Beregnaya
A Testing Scope is a list of product features, product parts, or product-related integrations that must be tested in order to reliably assess the quality of the product. However, It seems that not everyone clearly understands what it is and how to define it well: What should be included and what should be ignored? How detailed should the scope be? Do I have to align it with my stakeholders? What if the deadline is coming, and I don’t have enough time to test even the business-critical areas? All that in Olga Beregnaya's article.
My Website is Slow, Now What - Dan Shappir
You built a great-looking, feature-rich website. But it also has a big problem: it’s just too slow.
As a result, your visitors are frustrated, and your bounce rate is high. So now, what do you do?
Watch Dan Shappir’s talk where he explains what web performance actually means, and how to measure and improve the performance of your website.
Detox: Writing Stable Test Suites - Rotem Meidan
Detox promises stable E2E tests, though often you may find yourself wondering why a test is flaky. No framework is free of issues, but we found that by following some ground rules, tests can get pretty stable, and if they are not, by using some built in tools, it’s pretty easy to identify the culprit.
In this article by Rotem Meidan, we establish these ground rules, and go over some common issues, and the tools we use in order to solve them.
Growing Object Oriented Software Guided by Tests - TL;DR - Nir Orman
Nir Orman with a quick summary of the first chapter from the book "Growing Object Oriented Software Guided by Tests" by Steve Freeman and Nat Pryce.
6 Event-Driven Architecture Patterns — Part 1 - Natan Silnitsky
The data-streams team, which Natan Silnitsky is part of, are in charge of Wix’s event-driven messaging infrastructure that’s used by more than 2,000 microservices.
During his tenure with the data-streams team, Natan implemented or witnessed implementations of several key patterns of event-driven messaging designs that have facilitated creating a robust distributed system that can handle increasing traffic and storage needs. Read all about it in Natan Silnitsky’s article.
Configure Local Environment Using Dotfiles - Zachi Nachshon
If you’re afraid from the day that you’ll have to recreate your local environment, this is the post for you!
Automate the local environment setup using a dedicated dotfiles repository to store all your favourite shell scripts, must-have utilities and application and custom OS settings.
A no-brainer approach to create a local environment from scratch, read this article by Zachi Nachshon, to find out how.
Behaviour Driven Development with Scala and Cucumber - Aurimas Degutis
Computer users and programmers see computer systems from different perspectives. Programmers must think of all the possible events that might happen in the computer system and write instructions so that computers and other programmers can understand how to handle and manage them. There’s a lot of details to consider for a programmer to write an instruction. A user doesn’t care about programming details, all they care about is that their computer behaves in a way that allows them to achieve certain goals. Because of those different perspectives of users and programmers, it’s difficult for them to understand each other and each other's point of view on the same requirements, problems and solutions. This imposes a communication barrier between the user and the programmer, since these same problems and solutions can be communicated and understood differently by each side.
Read this article by Aurimas Degutis to understand how to bridge this communication gap by using a specification language called Gherkin, which doesn’t just help both users and programmers understand system behaviour - it can also act as Automated Acceptance Tests with the help of Cucumber.
The Full React Native Layout Cheat Sheet - Dror Biran
Do you find yourself going back to React Native layout docs again and again, struggling to understand and master the difference between all the different props? Justify vs align, relative vs absolute, items vs content - it all could be very confusing.
Read this article by Dror Biran for a visual guide of all of the important props and lots of interactive playgrounds to test things.
React Native Animations — Zero to Hero - Ethan Sharabi
In this article by Ethan Sharabi, we cover basic-advanced topics of RN Animations and dive into a real use-case issue Wix had and how we solved it.
Everything you need to know before an interview for a QA position at Wix Engineering - Migle Paskauske
Migle Paskauske with an article full of tips that will help you prepare for your next online QA interview.
Mobile App Architecture - React Native VS Native - Idan Ratzabi
What are the differences and similarities between Native and React Native development? How to use the native knowledge as a base for React Native development? Read Idan Ratzabi’s article to find out.
Two mistakes in React.js we keep making over and over again - Yaroslav Serhieiev
If you had a chance to spend a whole two weeks, freestyle, on hunting down performance issues in a large-scale React Native app, what would you find out? Yaroslav Serhieiev’s article lists typical mistakes in writing Class Components in React Native that can kill component update performance.
React Native at Wix — Open Source - Guy Carmeli
This article by Guy Carmenli is part of a series of blog posts which aims to shed some light at and share our experience of working with React Native at Wix. You can find the whole series in this article.
White Screen of Death — How to Handle Errors in React Native? - Lidor Dafna
Since React v16, a JS error that was not caught will result in an unmounting of the whole React component tree — i.e. the user will get a white screen of death (WSOD).
Many React Native developers are familiar with these white screens. However, from the user’s point of view, getting a white screen is really frustrating, since that user has no clue why he or she is getting this screen. Let’s figure out how to fix it in Lidor Dafna’s article.
For more engineering updates and insights: