How to make the engine Hermes only when EAS Build

Current Development Environment

  • Expo SDK 44
  • Bare Workfrow
  • Introduced EAS Build

I Introduced the Hermes for iOS.
The performance was dramatically improved in the released application.
However, it did the opposite in the local environment, slowing things down.

So I wanted to use the Hermes only for EAS Build.
Here is the code I wrote for that.


"android": {
"ios": {
// add
"env": {
  "APP_ENV": "release"


  "expo.jsEngine": "jsc"


import { ConfigPlugin, withPodfileProperties } from '@expo/config-plugins';
import { ExpoConfig } from '@expo/config-types';

const withChangingJsEngine: ConfigPlugin<string> = (config, props) => {
  if (process.env.APP_ENV === 'release') {
    console.log('Changing JS engine');
    return withPodfileProperties(config, (newConfig) => {
      newConfig.modResults.ios = { podfileProperties: { 'expo.jsEngine': props } };
      return newConfig;
  console.log('Not changing js engine in dev mode');
  return config;

export default (config: ExpoConfig): ExpoConfig => {
  const updatedConfig = withChangingJsEngine(config, 'hermes');
  return updatedConfig;

But this does not work as expected.
The build proceeds fine, but the Hermes that should be installed in the pod install phase goes through.

If you have any tips that might help, please let me know.