Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork149
Closed
Description
Metro bundler inlines(ReactNative.)Platform.OS and(ReactNative.)Platform.select, so that when packaging for one platform, the code for the other platform is optimized away.
So if I had
[@bs.module"react-native"] [@bs.scope"Platform"]externalos:string="OS";if (os==="ios") {Js.log("ios");}else {Js.log("android");};
this would get compiled by BuckleScript to
if(ReactNative.Platform.OS==="ios"){console.log("ios");}else{console.log("android");}
and Metro Bundler would inline ReactNative.Platform.OS and subsequently optimize the Android branch away for an iOS build.
However, with the current Rebolt bindings, I have
switch (Platform.os()) {|IOS(_)=>Js.log("ios")|Android=>Js.log("android")};
which gets compiled by BuckleScript to
varmatch=Platform$Rebolt.os(/* () */0);if(match){console.log("ios");return/* () */0;}else{console.log("android");return/* () */0;}
This prevents the inlining/optimization from working.
Metadata
Metadata
Assignees
Labels
No labels