-
Notifications
You must be signed in to change notification settings - Fork 24.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move HelloWorld template to a single index.js entry point #15312
Conversation
Use `index.js` as the entry point in the HelloWorld template instead of the separate `index.android.js` and `index.ios.js` files.
Update references to index.android.js/index.ios.js in the docs.
index.js -> App.js
📄 Thanks for your contribution to the docs! Attention: @facebook/react-native Generated by 🚫 dangerJS |
This is great! I'm slightly concerned that this may make writing different code for iOS and Android less discoverable, but that's something we can address by updating the Platform Specific Code docs. Does this affect projects that use |
This HelloWorld template is used by Also It's true that getting rid of separate |
The navigation template is layered on top of the HelloWorld template when you run The navigation template itself seems to be a bit outdated right now, it's using an older version of react-navigation which isn't compatible with React 16, so I couldn't run it for now. It should work once upgraded. |
@hramos has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator. |
Summary: This change (initially discussed in expo/create-react-native-app#26) moves the HelloWorld project template from two nearly identical entry points (`index.android.js` and `index.ios.js`) to a single, minimal `index.js` entry point. The root component is created in `App.js`. This unifies the project structure between `react-native init` and Create React Native App and allows CRNA's eject to use the entry point from the HelloWorld template without any hacks to customize it. Also examples in the docs can be just copy-pasted to `App.js` the same way in both HelloWorld and CRNA apps without having to first learn about `AppRegistry.registerComponent`. * Created a new project from the template using `./scripts/test-manual-e2e.sh` and verified that: * The app builds, starts and runs both on Android and iOS. * Editing and reloading changes works. * The new files (`index.js`, `App.js`, `__tests__/App.js`) get created in the project folder. <img width="559" alt="screen shot 2017-08-01 at 19 10 51" src="https://user-images.githubusercontent.com/497214/28835171-300a12b6-76ed-11e7-81b2-623639c3b8f6.png"> <img width="467" alt="screen shot 2017-08-01 at 19 09 12" src="https://user-images.githubusercontent.com/497214/28835180-33d285e0-76ed-11e7-8d68-2b3bc44bf585.png"> <!-- Thank you for sending the PR! If you changed any code, please provide us with clear instructions on how you verified your changes work. In other words, a test plan is *required*. Bonus points for screenshots and videos! Please read the Contribution Guidelines at https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md to learn more about contributing to React Native. Happy contributing! --> Closes facebook/react-native#15312 Differential Revision: D5556276 Pulled By: hramos fbshipit-source-id: 068fdf7e51381c2bc50321522f2be0db47296c5e
This change (initially discussed in expo/create-react-native-app#26) moves the HelloWorld project template from two nearly identical entry points (
index.android.js
andindex.ios.js
) to a single, minimalindex.js
entry point. The root component is created inApp.js
. This unifies the project structure betweenreact-native init
and Create React Native App and allows CRNA's eject to use the entry point from the HelloWorld template without any hacks to customize it. Also examples in the docs can be just copy-pasted toApp.js
the same way in both HelloWorld and CRNA apps without having to first learn aboutAppRegistry.registerComponent
.Test plan:
./scripts/test-manual-e2e.sh
and verified that:index.js
,App.js
,__tests__/App.js
) get created in the project folder.