WhoBuilt

How to scale teams, product development, and release process with Re.Pack

Jul 8, 2023· 55 min· 579 views·Watch on YouTube

Speakers

Callstack’s React Native expert Akash Hujinski hosts Mike Pishkawa, Head of Technology, and Chris Pavlák, Head of Business Development, as they explain how Re.Pack and Module Federation can help large React Native teams ship features independently, with examples from MoMo and an automotive company.

Why large apps slow teams down

Mike Pishkawa describes how growing features, teams, and markets can increase planning, testing, and maintenance work. In large apps, teams may block each other through shared resources, communication, onboarding conflicts, and unclear ownership. He calls multipurpose apps with many features super apps, citing WeChat, Grab, Uber, Revolut, Allegro, and Facebook.

Re.Pack for independent delivery

Mike explains that Re.Pack uses webpack and Module Federation to split an app into separately built modules that teams can develop and deploy independently. The host app can select module versions, and Re.Pack signs remote JavaScript bundles. This approach can support dynamic feature delivery, but it requires deployment infrastructure and does not lazily load native code.

Two real-world use cases

Chris Pavlák presents MoMo, a Vietnamese e-wallet with millions of users, as an existing super app that adopted Re.Pack to reduce team conflicts, support partner-built mini apps, and deliver features dynamically. He says MoMo reduced its app size to around 300 MB, compared with WeChat at around 600 MB. An automotive company used Re.Pack from the start to share features across white-label app variants and offer features according to subscriptions.

Fit, setup, and operational trade-offs

Mike says this architecture is generally suited to large teams, around 30 or more front-end engineers, and needs an infrastructure team. Re.Pack can be added to an existing React Native project through its init command, but it is not recommended solely to reduce bundle size. The Q&A covers version compatibility, alternatives to Metro, offline preloading, error handling, and configurable bundle caching.

Takeaways

  • Consider module federation when teams sharing a large app routinely block one another.
  • Let the host app select compatible mini app versions, with infrastructure support for releases.
  • Use dynamic delivery to tailor features to users or subscriptions, while accounting for native code in the host app.
  • Evaluate Re.Pack against team and release problems; bundle size alone may not justify it.
  • Design offline behavior deliberately: preload needed modules and handle load failures in the app.

Mentioned in this talk

Search inside this talk

What was claimed 14

Related talks