Great Migrations: Upgrading a Component Library at Scale

Rate this content
Bookmark

At Jumbo Tech Campus we have a distributed model when it comes to our component library. The way we work on our shared codebase has helped is in migrating from Vue2 to Vue3 with the combined efforts of the entire frontend capacity.

This talk has been presented at Vue.js London 2023, check out the latest edition of this JavaScript Conference.

FAQ

The purpose of this talk is to discuss the process of migrating and upgrading a Component Library built in Vue and Nuxt, and to share insights and experiences that can be applied to other organizations.

The presenter of the talk is Johan, a front-end developer at Yumbo.

The analogy used in the talk compares software migrations to nature's great events, specifically the migrations of wildebeests, caribou, and fire ants.

Wildebeests migrate to follow the rain to lush feeding grounds, as their environment cannot sustain the herd's numbers without migrating.

The main reason for migrating from Vue 2 to Vue 3 is the end of life for Vue 2 and the need for continued support and improved developer experience.

Yumbo is a grocery chain in the Netherlands and Belgium with a tech campus where over 450 developers collaborate on building digital products. The migration story revolves around Yumbo's efforts to upgrade its software environment from Vue 2 to Vue 3.

Yumbo uses a distributed approach to maintain and update their component library, allowing every developer with a stake in the library to contribute and collaborate on adding new features, doing maintenance, and keeping it in good shape.

Yumbo faces the challenge of keeping the Vue 2 component library functional while transitioning to Vue 3, ensuring that all dependencies and applications are updated without disrupting ongoing development.

Yumbo ensures that no team is left behind by supporting both Vue 2 and Vue 3 until all teams and applications are ready to fully transition to Vue 3.

Tools and strategies mentioned for the migration process include using Vue Demi to bridge Vue 2 and Vue 3, rewriting or wrapping modules to be compatible with Nuxt 3, and adopting a tech-agnostic approach for APIs to reduce dependencies.

Joran Quinten
Joran Quinten
22 min
15 May, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
This talk explores the migration and upgrading of a Component Library in Vue and Nuxt. It draws inspiration from nature's great migrations and emphasizes the need for collaboration and compatibility. The talk discusses the team setup, including microservices and standardized modules. It highlights the migration from Vuex to Pina or Apollo Clients in micro frontends. The distributed approach to maintaining the component library is emphasized, as well as the use of Vue Demi for upgrading to Vue 3. The talk emphasizes the importance of delivering value and supporting both Vue 2 and Vue 3 in the migration process.

1. Introduction to Migrations and Component Library

Short description:

Thank you for joining me today for this talk about great migrations and upgrading the Component Library. I'll be sharing a story that works for our organization and may inspire you to apply similar approaches in your own company. We'll be upgrading and migrating everything built in Vue and Nuxt. Let's get started. My name is Johan, a front-end developer at Yumbo. Feel free to reach out to me with any questions.

All right. So, thank you for joining me today for this talk about great migrations, upgrading this Component Library thingy. And what I'm going to tell you or the story that I'm going to be sharing is something that works for us, for our organization, and it doesn't necessarily directly apply to your organization, but hopefully you can take some inspiration or some parts of it to apply within your own company or organization.

And what it says, Component Library, here at the title, it's basically about the entire environment that we have because everything that we have is built in Vue and Nuxt. So we'll be upgrading and migrating everything basically during this talk, if you bear with me. So let's get started.

So my name is Johan. As you can see, I'm a front-end developer. I work for Yumbo. I'll explain a bit later about what that is. You can find me on Twitter, you can find me on Mastodon or on my personal webpage. If you have any questions related to this topic or any other topic, feel free to reach out to me after this presentation or just chat with me regarding these topics.

2. Migration Examples from Nature

Short description:

This presentation is inspired by BBC's series about nature's great events, particularly the great migration episode. We will explore various migrations and learn from them. The wildebeest migration is the largest, with over a million beasts traveling 1800 miles. Caribou have the longest migration path, covering 3100 miles each year. Fire ants collaborate to traverse water, while developers face challenges like moving requirements and bug infestations. We will investigate patterns for optimizing migration and define migration as a period of moving.

Now, this whole presentation is sort of inspired by BBC's series about nature's great events, and in this particular case, the great migration episode. You can see here a picture of a young David Attenborough wrangling something that resembles a lizard or something. I was watching these series when I was younger, usually with my dad, so I have very fond memories of this series, and that's why I think it has a nice analogy to what we are doing in software development.

We will be seeing how the pros do it in nature, migrating, and what we can learn from it in our day-to-day job. So, I picked a couple of migrations that stand out for various reasons, and let's take a look at them. I think the most famous one is of course the wildebeest migration. I've written some things down about it because I don't know all of the details by heart, but this is the biggest migration there is. It's actually a super-herd made of wildebeests, zebras, and gazelles, and they are with a million or more than a million beasts migrating. They sort of take a journey that's 1800 miles or 2900 kilometers and it's a round-trip from Tanzania to Kenya and back. And while they are doing this, with the massive scale that they have, they actually play a role in forming or adjusting the landscape. So that's how big this is. And they have to traverse crocodile-infested rivers. They have to overcome droughts. They're preyed upon by lions, and what they're actually doing is they rear calves while they are migrating. If you take a look at the analogy, they are actually pushing stuff to production while migrating. I think this is really an interesting and impressive feat.

And then we have the caribou or reindeer, whatever you want to call them, and they have the longest migration path that we have on land. So they cover up to 3100 miles or 5000 kilometers each year and they move from their rentering grounds to their calving grounds in spring. And then back to their wintering grounds during fall in sort of a circular pattern. So the timing and distance about those migrations can vary on certain factors such as the weather patterns, availability of food and water, and risk of predatories or predators. So this is the longest migration.

And then we have, this is peak collaboration, we have the fire ants in the forests of Brazil, the rainforests, and these can form up to bodies of more than 100,000 ants clinging together and they do this in order to traverse water. And this is an interesting way of moving about, right? So they are experts at collaborating and the ants at the bottom of this body, they need to cling on for dear life in order to avoid being submerged while the ones at the top, they run the risk of being eaten by birds and other predators. And then there is the final bit of the puzzle. This is the elusive pack of developers and they typically move about in scrub teams of various sizes and they have to deal with other dangers such as moving requirements, Friday deployments, and bug infestations, and get up outages. So what we will do is we will investigate patterns for optimizing migration patterns and see if there's anything we can learn from nature. Let's first start with a definition. So what do we mean with a migration? And for the sake of this talk, let's consider this. So it is a period because it doesn't happen instantly, it takes time and effort of moving. Well, the moving could be anything from ants to people or even code.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Design Systems: Walking the Line Between Flexibility and Consistency
React Advanced 2021React Advanced 2021
47 min
Design Systems: Walking the Line Between Flexibility and Consistency
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
Vue: Feature Updates
Vue.js London 2023Vue.js London 2023
44 min
Vue: Feature Updates
Top Content
Watch video: Vue: Feature Updates
The Talk discusses the recent feature updates in Vue 3.3, focusing on script setup and TypeScript support. It covers improvements in defining props using imported types and complex types support. The introduction of generic components and reworked signatures for defined components provides more flexibility and better type support. Other features include automatic inference of runtime props, improved define emits and defined slots, and experimental features like reactive props destructure and define model. The Talk also mentions future plans for Vue, including stabilizing suspense and enhancing computer invalidations.
Towards a Standard Library for JavaScript Runtimes
Node Congress 2022Node Congress 2022
34 min
Towards a Standard Library for JavaScript Runtimes
Top Content
There is a need for a standard library of APIs for JavaScript runtimes, as there are currently multiple ways to perform fundamental tasks like base64 encoding. JavaScript runtimes have historically lacked a standard library, causing friction and difficulty for developers. The idea of a small core has both benefits and drawbacks, with some runtimes abusing it to limit innovation. There is a misalignment between Node and web browsers in terms of functionality and API standards. The proposal is to involve browser developers in conversations about API standardization and to create a common standard library for JavaScript runtimes.
Future of Frontend Frameworks Fireside Chat
React Summit 2024React Summit 2024
28 min
Future of Frontend Frameworks Fireside Chat
Fred K. Schott
Minko Gechev
Ryan Carniato
Daniel Afonso
Aakansha Doshi
Tim Neutkens
6 authors
Signals are being adopted by popular frameworks, enabling code reuse and improved tooling. While merging between frameworks is unlikely, they are learning from each other and adopting shared practices. It is important to embrace the diversity of frameworks and libraries. Instead of merging, focus on standardizing the principles behind frameworks. Consider tradeoffs and benefits when choosing a framework, and explore different technologies to learn new ideas.
Composition vs Configuration: How to Build Flexible, Resilient and Future-proof Components
React Summit 2022React Summit 2022
17 min
Composition vs Configuration: How to Build Flexible, Resilient and Future-proof Components
Top Content
Today's Talk discusses building flexible, resilient, and future-proof React components using composition and configuration approaches. The composition approach allows for flexibility without excessive conditional logic by using multiple components and passing props. The context API can be used for variant styling, allowing for appropriate styling and class specification. Adding variants and icons is made easy by consuming the variant context. The composition and configuration approaches can be combined for the best of both worlds.
Building Cross-Platform Component Libraries for Web and Native with React
React Advanced 2021React Advanced 2021
21 min
Building Cross-Platform Component Libraries for Web and Native with React
Top Content
This Talk discusses building cross-platform component libraries for React and React Native, based on a successful project with a large government-owned news organization. It covers the requirements for React Native knowledge, building cross-platform components, platform-specific components, styling, and the tools used. The Talk also highlights the challenges of implementing responsive design in React Native.

Workshops on related topic

Build a Data-Rich Beautiful Dashboard With MUI X's Data Grid and Joy UI
React Summit 2023React Summit 2023
137 min
Build a Data-Rich Beautiful Dashboard With MUI X's Data Grid and Joy UI
Top Content
WorkshopFree
Sam Sycamore
Siriwat (Jun) Kunaporn
2 authors
Learn how to put MUI’s complete ecosystem to use to build a beautiful and sophisticated project management dashboard in a fraction of the time that it would take to construct it from scratch. In particular, we’ll see how to integrate the MUI X Data Grid with Joy UI, our newest component library and sibling to the industry-standard Material UI.
Table of contents:- Introducing our project and tools- App setup and package installation- Constructing the dashboard- Prototyping, styling, and themes - Joy UI features- Filtering, sorting, editing - Data Grid features- Conclusion, final thoughts, Q&A
Learn To Use Composables: The Swiss Army Knife Of Vue Developers
Vue.js Live 2024Vue.js Live 2024
163 min
Learn To Use Composables: The Swiss Army Knife Of Vue Developers
Workshop
Juan Andrés Núñez Charro
Juan Andrés Núñez Charro
Composables (composition functions) are stateful/stateless functions that can leverage Vue's reactivity API, decoupling it from components.This shift in perspective opens the possibility for tackling common scenarios in a new and creative way. In this workshop, you will learn how to solve typical problems every Vue developer faces, using composables:
- Data store;- Component cross-communication;- Utility functions (DOM, API, etc);And more.