Comments (9)
Would this also mean we can somehow exclude flipper entirely for non-development builds?
That's the plan. In the same way the use_frameworks
isn't exposed unless you've enabled the associated build property, flipper would only be enabled if the build property was enabled.
I've also split your comment into its own issue; that sounds like a bug if it's still being rolled into the app and blocking the build.
from expo-community-flipper.
Branch and diff: expo/expo@main...jakobo:expo:expo-build-plugins/flipper
This is kind of a rough first pass at the expo SDK changes
- Plugin
- Uses an
Omit<>
trick I learned a month or two ago for the typing that gives us typeahead for "known" strings while still allowing an arbitrary string type. Otherwise"enabled" | "disabled" | string
is just a verbose way of writingstring
.
- Uses an
- iOS
Changesuse_frameworks
to not be called unless the build property is explicitly set. Previously, it was callinguse_frameworks!
with nil linkage which would still create the conflict with flipper- Adds a local
expo_flipper
that starts in the explicit disabled state, and then optionally upgrades it to eitherenabled
or a specific version string. It does not allow specifying RSpec, Folly, etc as that's well beyond the common use case - Adds a test that ensures you cannot have a
useFrameworks
andflipper
set on the iOS config at the same time
- Android
- Uses a safe
withGradleProperties
mod, applying the changes only if the flipper config for android is set, and only if it is set to "enabled" - Disabling flipper in Android is now a huge set of gradle changes, and its unlikely the FB or Flipper teams are going to ever have a flag like we have with Podfiles
- Uses a safe
Some references on how/why we need to make the Podfile changes the way we did:
- https://github.com/facebook/react-native/blob/main/scripts/react_native_pods.rb - how the arguments are read in to
use_react_native
- https://github.com/facebook/react-native/blob/main/scripts/cocoapods/flipper.rb - turns out
FlipperConfiguration.*
is more complex than it appears at first glance
from expo-community-flipper.
Would be good to add the official support to the README! I only knew about it from Twitter...
https://twitter.com/jakobo/status/1629531998262837249?s=20
Thanks for all your hard work @jakobo.
from expo-community-flipper.
Nice!
Would this also mean we can somehow exclude flipper entirely for non-development builds? Currently, even if I exclude the config plugin, the iOS build fails (I assume because it does something fancy when finding react-native-flipper
in node_modules
or something. Is it the auto-linker's "fault"?).
from expo-community-flipper.
wow, that's awesome! thanks for picking up this quickly!
Changes use_frameworks to not be called unless the build property is explicitly set. Previously, it was calling use_frameworks! with nil linkage which would still create the conflict with flipper
i think this is not quite true. as we have the tail if
in
use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
from expo-community-flipper.
i think this is not quite true. as we have the tail if in
Chatted with Kudo via discord, as he had a working ruby repl. The if statement properly nulifies the entire line (my original understanding was that it was a conditional for the linkage prop, which is incorrect in ruby). Will revert the changes tied to use_frameworks based on his feedback.
edit Branch updated, and changeset for use_frameworks removed.
from expo-community-flipper.
Is there any breaking chances to how a dev client is built moving forward? or can we still rely on the FLIPPER_DISABLED flag?
from expo-community-flipper.
@rlam3 To keep max backwards compatibility for the merge, I think it's worth keeping the FIPPER_DISABLE
(deprecated and to remove in SDK49), but also support the semi-official NO_FLIPPER
flag from the official Podfile template ref.
This way we're trending towards matching the templates & code found through searching up issues here or on google.
edit Updated the branch with the config change for review: expo/expo@main...jakobo:expo:expo-build-plugins/flipper#diff-f771467c60e6353ad16c2d884089d1203b9babb0002664af5328194029853f14R20
from expo-community-flipper.
I've got some time this week to get the release out. It'll be a readme change and then running npm deprecate
on v48.x, plus updating & closing relevant tickets plus a pinned issue pointing to the new docs.
Thanks for the nudge @nandorojo ❤️
from expo-community-flipper.
Related Issues (20)
- Getting "Failed to resolve plugin for module "expo-community-flipper" only on production build HOT 12
- EAS build fails - 'FBDefines/FBDefines.h' file not found HOT 19
- Notice: iOS Flipper Known Compatibility Issues HOT 2
- All contributors Setup HOT 12
- Expo SDK 47 Support HOT 5
- iOS including Flipper When Plugin Not in app.json HOT 21
- Version Version 47.0.0 causing plugin conflict error HOT 4
- Using 'expo-community-flipper' plugin doesn't work HOT 3
- Expo 47 with Hermes build? HOT 6
- Podfile Syntax Error HOT 3
- Discussion: Use js-flipper instead? HOT 1
- iOS: Failure to build with --configuration Release HOT 14
- SDK 47 with v47.0.2 still not working HOT 3
- Expo prebuild fails on SDK 48 HOT 1
- Flipper Support in Expo SDK 48+
- No option to remove Flipper for Release HOT 2
- Should react-native-flipper dependency be specified in package.json? HOT 1
- iOS builds fail with SDK 48 HOT 10
- Flipper starts web bundling
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from expo-community-flipper.