We want this community to be friendly and respectful to each other. Please follow our Code of Conduct in all your interactions with the project.
To get started with the project, run yarn up in the root directory to install the required dependencies for flash-list and our fixture app:
yarn upThis project uses
yarnas a package manager. While it's possible to run individual commands withnpm, please refrain from using it, especiallynpm install.🙅
While developing, you can run the fixture app to test your changes. To see your changes done in flash-list inside the example app, we recommend to open a terminal and run the following command:
yarn build --watchThis way, flash-list gets rebuilt on any Javascript/Typescript change in its codebase.
If you change any native code, then you'll need to rebuild the example app.
To start the packager:
yarn startTo run the fixture app on Android:
yarn run-androidTo run the example app on iOS:
yarn run-iosTo run the web sample:
yarn run-webTo fix possible formatting errors, run the following:
yarn lint --fixFormatting errors will also be automatically fixed if you use Visual Studio Code IDE with the recommended plugins
Remember to add tests for your change if possible. Run the unit tests by:
yarn testWe also have an e2e screenshot test suite built on top of Detox. You can find the e2e tests here. You can run them with:
run-e2e-ios
# or on android with
run-e2e-androidUsually, the screenshots should not change. However, if you do expect change in the UI, you will need to remove the appropriate image in this folder and re-run the tests again.
The repo contains a documentation website build with Docusaurus. Please make sure that your changes are reflected in the documentation, if it's API or configuration changes. Any improvements to documentation itself are also welcomed.
Source files for documentation can be found in ./documentation/docs folder.
To start working with documentation and run it locally:
cd documentation && yarnyarn start
Now local website is running at http://localhost:3000
We use TypeScript for type checking, ESLint with Prettier and @shopify/eslint-plugin for linting and formatting the code, and Jest for testing.
Please take some time to correctly fill our pull request template and detail the proposed changes. This will help reviewers to better understand the context of your PR and provide valuable insights.
When you're sending a pull request:
- Prefer small pull requests focused on one change.
- Update the documentation if your PR changes the API.
- Follow the pull request template when opening a pull request.
- If your PR is a new feature and not a bug fix, consider opening an issue describing your idea. This ensures you get feedback from the maintainers and don't write code that might not be used.
Releases are done by Shopify engineers following the steps on RELEASE.md.