Version: v5

getResolveOptions

Get resolve options preset to properly resolve files within the project. The preset matches closely Metro's behavior.

  • resolve platform extensions (e.g. file.ios.js)
  • resolve native extensions (e.g. file.native.js)
  • optionally use package exports (exports field in package.json) instead of main fields (e.g. main or browser or react-native)

Parameters

type GetResolveOptions = (
  platform: string,
  options: {
    enablePackageExports?: boolean;
    preferNativePlatform?: boolean;
  }
) => ResolveOptions;

platform

  • Type: string
  • Required: true

Target application platform (e.g. ios or android).

options.enablePackageExports

  • Type: boolean
  • Default: false

Whether to enable Package Exports support. When enabled, uses the exports field in package.json instead of main fields.

Warning

React Native 0.88 requires enablePackageExports: true in your Re.Pack resolver configuration. Its react-native/setup-env and react-native/react-private-interface entry points, as well as @react-native/asset-utils, use package exports.

Enabling package exports can change how existing dependencies resolve. For more details, please refer to the Module Resolution guide.

options.preferNativePlatform

  • Type: boolean
  • Default: true

Whether to prefer native platform over generic platform when resolving extensions. When enabled, Re.pack will try .native.${ext} before .${ext} and after .${platform}.${ext} during resolution.

Info

This matches Metro's preferNativePlatform behavior.

Example

rspack.config.cjs
const Repack = require("@callstack/repack");

module.exports = (env) => {
  const { platform } = env;

  return {
    resolve: {
      ...Repack.getResolveOptions(platform, {
        enablePackageExports: true,
        preferNativePlatform: true,
      }),
    },
  };
};

Need React or React Native expertise you can count on?