Powered by technologies such as React and GraphQL, we see frontend applications reach a level of scale and complexity that was traditionally associated with backend engineering and service architectures. But the browser is also a unique execution environment: All parts of the system share the same runtime, and all parts of the system are not only supposed to provide meaningful APIs to each other, but also to expose a fast, delightful UI to the user. For engineering teams stepping into modern frontend development, it hence becomes critical to distinguish between patterns that can be transferred over from the backend, and patterns that need to be adapted, or dismissed altogether.
About 2 years ago, Jira started its transition towards a modern, React-based Single Page Application. What began with one team of absolute React experts quickly turned into a multi-team, multi-geo program – and just as quickly, maintaining the health and scalability of our frontend codebase became a top priority, and one of the biggest challenges, of the Jira engineering team.
In this talk, we’ll be sharing some of the lessons that Atlassian has learned over the past 2 years – many of them, the hard way – along with the tooling that we have developed. We’ll be talking about our transition from an inside-out model to an outside-in model for integrating legacy and modern code, our approach to providing architectural guidance and consistency across 300 engineers, and our philosophy and tooling for managing a mono-repo of more than 1M lines of JavaScript code.