Description
[WIP umbrella issue for discussion/ideas, to help surface proposals]
What counts as a React platform?
Is using react-reconciler enough to count as a platform? Or does react-test-renderer
count, for the case of react-sketchapp
?
Will Metro be an explicit requirement, or will Webpack/ be supported as entrypoint bundlers?
- Some runtime environments may be in sandboxes where running bundlers like Metro aren't appropriate, such as in design software plugins, where file extensions are nice as a universally accepted standard across bundlers, especially with Babel extension preferences.
- Should file extensions remain a stable/supported default for out-of-tree platforms?
How should imports work?
- Is
import { ... } from 'react-native';
a safe pattern for out-of-tree platforms? - How can we make sure that props are types without
tsconfig
hacks?
Proposal
Standardise platform-specific imports around react-native-ios
, react-native-windows
, or @react-native/ios
.
Support react-native
as a common API surface across platforms, or have react-platform
/react-primitives
as a common API layer that maps to react-native-windows
, etc. Or have react-primitives
for react-reconciler
platforms that don't have the full Metro/Fabric setup (e.g. react-primitives
View
import aliases to react-native-<platform>
<View>
, and react-native
for those that do.