As software engineers, we all know the exhilaration of creating something remarkable with code. React Native, the powerhouse framework for building cross-platform mobile applications, has just unleashed a wave of excitement in its 0.72 release with two game-changing features: Symlink Support (Beta) and Package Exports Support (Beta). These features are like secret ingredients that add a dash of magic to your development process, making coding more fun and efficient than ever before.
Symlink Support (Beta): The Monorepo Marvel
Imagine a world where setting up monorepos and using pnpm becomes a breeze. No more tedious workarounds or headaches—React Native 0.72 introduces Symlink Support, and it’s here to make your life as a developer easier.
Symlink support is a long-awaited feature in Metro, the JavaScript bundler used by React Native. In this beta release, it enables React Native to work seamlessly with monorepo setups and pnpm, eliminating the need for complicated workarounds. So, what’s the fuss about?
In a nutshell, symlinks allow you to create symbolic links within your project. They point to other files or directories, making it appear as if they exist in multiple locations. This is incredibly handy for managing shared code across multiple projects, which is precisely what monorepos aim to achieve. With symlink support, you can effortlessly share and reuse code between different parts of your project.
Let’s break it down with a practical example:
Imagine you’re working on a large-scale mobile app project that consists of several smaller modules or packages. With symlink support, you can link these modules together, allowing changes in one module to instantly reflect across your entire project. No more manual copying or syncing of code—React Native 0.72 automates this process, saving you time and reducing the chances of errors.
While it’s in beta to collect feedback and ensure a smooth developer experience across various workflows, the React Native team plans to make symlinks the default option in the 0.73 release. Get ready to embrace a world where managing complex projects feels like a walk in the park.
Package Exports Support (Beta): A Gateway to the Wider Ecosystem
In the world of npm packages, the “main” field in a package.json file used to rule the roost. But not anymore! React Native 0.72 introduces Package Exports Support, a modern alternative that empowers npm packages to define their public API with precision.
Think of it as a passport to the wider JavaScript ecosystem. By enabling Package Exports Support in your Metro config, you make your React Native app compatible with the broader world of JavaScript development. This also includes compatibility with the new “react-native” community condition, opening up opportunities for collaboration and integration with other libraries and tools.
But what exactly does Package Exports Support bring to the table?
Traditionally, the “main” field in package.json files defined the entry point to an npm package. While this worked well for Node.js, it wasn’t always suitable for React Native, which often required a more nuanced approach to package imports. Package Exports offers a solution to this problem by allowing package authors to specify their package’s public API more explicitly.
Let’s illustrate this with a scenario:
Suppose you’re using a third-party npm package in your React Native project. With Package Exports Support, the package author can now declare precisely which functions, classes, or components are part of the public API. This eliminates ambiguity and helps you make more informed decisions about what to import from the package.
Additionally, the “react-native” community condition ensures that packages that take advantage of Package Exports are seamlessly integrated into the React Native ecosystem. This means fewer compatibility issues, smoother updates, and a more harmonious development experience.
React Native 0.72 has truly embraced the future of JavaScript development with Symlink Support and Package Exports Support. As a software engineer, these features will not only make your coding endeavors more enjoyable but also supercharge your productivity. So, roll up your sleeves, dive into the world of React Native 0.72, and let your coding creativity flow!
enable features with
const config = { // ... resolver: { unstable_enableSymlinks: true, unstable_enablePackageExports: true, }, };
Quick Links
Legal Stuff