Sander Korf
  • Portfolio
  • Resume

Sander Korf

Dutch Full Stack AI Engineer helping businesses cut costs through intelligent automation. 13+ years turning expensive manual processes into systems that work 24/7. Based in Amsterdam, available for freelance projects.

Navigation

  • Portfolio
  • Resume

Legal

  • Cookies
  • Privacy Policy
  • Terms and Conditions

Blog

Algolia

  • Algolia InstantSearch INP and object identity
  • Algolia merch by Sanity _type, not title
  • Algolia InstantSearch search key, not admin

Vercel

  • Next.js empty Suspense fallbacks wreck CLS P95
  • Vercel Workflows: skip closed eToro legs

eToro

  • eToro deploy vs rotate: idle cash not rotate
  • eToro search 404: query fields, not ticker
  • eToro v2 opens at-most-once, settlement
  • eToro LLM overlay ±10pp: critic cannot veto

Next.js

  • next-intl useTranslate skip links above fold
  • next-intl owns Klaviyo nl-NL email copy

Firebase & Expo

  • Staging deep links must not hijack production
  • Turn off Worklets Bundle Mode for EAS SHA-1
  • Reclaim Firebase orphan without password wipe

Centra & Klaviyo

  • Centra to Klaviyo tags need a plugin contract

About

  • Full Stack AI Engineer in Amsterdam

© 2026 Sander Korf. All rights reserved

94719489

  • Applied AI
  1. Home
  2. Blog
  3. Turn off Worklets Bundle Mode for EAS SHA-1

Turn off Worklets Bundle Mode for EAS SHA-1

My EAS build kept dying during Metro SHA-1 because worklets bundle mode was on by mistake. I turned it off and the cloud build could finish.

Sander KorfPublished August 19, 20262 min read
expoeasmetroreanimated

This was a mobile consumer app on Expo

Expo. EAS Build. Metro bundler. Reanimated / react-native-worklets for UI-thread work. The shopper never heard of SHA-1. They just wanted a TestFlight build that existed.

What they would notice if it failed

EAS red. Metro dying while it hashes the worklet graph. A local expo start that looks fine because your laptop never ran the same transform. CI that cannot ship a binary. The app in production is last week's binary, which is a product decision you did not mean to make.

The puzzle: Bundle Mode is not free

Worklets Bundle Mode (bundleMode: true on react-native-worklets/plugin) compiles worklets into a separate bundle. Metro then has to SHA-1 that graph. On EAS that step can fail. Expo 54 also likes eager imports. Eager imports have been enough to set globalThis._WORKLETS_BUNDLE_MODE as if you opted in, even when you did not.

I did not need Bundle Mode. I needed a build. The plugin default is false. I made that default explicit so Expo tree-shaking and eager imports could not "help."

// babel.config.js
module.exports = function (api) {
	api.cache(true);
	return {
		presets: ['babel-preset-expo'],
		plugins: [['react-native-worklets/plugin', { bundleMode: false }]],
	};
};

If you are not using worklets at all, babel-preset-expo can take worklets: false so the plugin never loads. I still wanted Reanimated. I just did not want the extra bundle.

After the flag, clear Metro (npx expo start --clear) and rerun EAS. The SHA-1 step is allowed to be boring again. Fancy worklet packaging can wait until a build is not the blocker.


Happy coding!
Sander