Jurek traces how a React Native project can grow from a simple app structure into a monolith divided by screens, hooks, and helpers. That approach can work for a small project, but becomes difficult for larger teams: builds take longer, defects are harder to trace, and teams can conflict when changing shared code.
Feature Driven Design: Microfrontends’ Best Friend (Chase App)
Speaker
Sandra Jurek, design system lead at Chase UK, explains how feature-driven design supports microfrontend architecture at React Native EU 2023, hosted by Callstack.
Chase’s shared packages had confusing exports and cyclic dependencies, which made behavior and builds unpredictable. Moving files to break cycles reduced some problems but grew the project to more than 80 packages, making ownership and testing difficult. Changes to core packages could require coordinated releases across nearly the whole project.
Jurek proposes grouping the project around product areas such as Mobile Home, Mobile Chat, and Mobile Accounts. Teams can own those areas, while shared flows and utilities are organized by their feature origins, such as Shared Payments or Shared Onboarding. She says this approach reduces package count and relationships.
A payment flow can be reused inside account closure, while its origin remains Shared Payments rather than the feature that launched it. The same principle applies to utilities: a UK mobile number sanitizer first used in onboarding belongs with that feature even if servicing later uses it. This makes code easier to locate and ownership clearer.
Jurek says feature-driven organization gives teams clearer CI errors, stronger ownership, and room to decide when a feature is ready to release. It also creates a shared vocabulary for developers, designers, and product owners. Packages can be deployed with fewer internal dependencies, reducing the burden on teams that consume them.
Takeaways
- Keep a monolith simple for small projects, but reassess it as teams and features grow.
- Track and reduce package cycles; breaking them by creating more packages can increase maintenance costs.
- Use product areas to guide package boundaries and make ownership visible.
- Place reusable flows and utilities according to their feature origin so teams can find and maintain them.
- Aim for packages that can be tested and released with few internal dependencies.
Mentioned in this talk
Search inside this talk
What was claimed 9
- works atSandra Jurek works at Chase UK
“I’ve been working for Chase for over four years now.”
YouTube Unverified1 source· Talk
- role atSandra Jurek is design system lead at Chase UK
“My job at Chase is design system lead”
YouTube Unverified1 source· Talk
- metricChase UK: Over 1.6 million users in less than a year and a half from launch
“We managed to get over 1.6 million users in less than a year and a half from launch.”
YouTube Unverified1 source· Talk
- metricChase UK: More than 200 years of history
“a company with over 200 years of history”
YouTube Unverified1 source· Talk
- uses
“we’re built with React Native”
YouTube Unverified1 source· Talk
- feature
Lease End customer messaging application: Its architecture splits the application into packages that teams can develop and deliver independently.Its architecture splits the application into packages that teams can develop and deliver independently.“splitting the whole application into smaller chunks”
YouTube Unverified1 source· Talk
- featureFeature-driven design: Organizes app areas and shared utilities around product features, clarifying ownership and package placement.
“It helped us organize the entire project.”
YouTube Unverified1 source· Talk
- feature
Accounts: A squad is responsible for the Accounts feature area.“We’ve got a squad responsible for Accounts and Mobile Accounts.”
YouTube Unverified1 source· Talk






