{"id":28391501,"url":"https://github.com/react-native-community/react-native-circleci-orb","last_synced_at":"2025-06-25T21:31:29.994Z","repository":{"id":34484886,"uuid":"173779870","full_name":"react-native-community/react-native-circleci-orb","owner":"react-native-community","description":"A CircleCI Orb to Simplify Testing your React Native App","archived":false,"fork":false,"pushed_at":"2024-12-29T11:41:50.000Z","size":882,"stargazers_count":179,"open_issues_count":14,"forks_count":79,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-05-31T20:05:04.750Z","etag":null,"topics":["android","circleci","circleci-orbs","detox","integration-testing","ios","react-native","testing"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/react-native-community.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-04T16:21:42.000Z","updated_at":"2025-05-23T09:36:27.000Z","dependencies_parsed_at":"2024-12-29T12:23:49.360Z","dependency_job_id":"c70756b3-2130-43a6-98aa-18fc7f1feefd","html_url":"https://github.com/react-native-community/react-native-circleci-orb","commit_stats":null,"previous_names":[],"tags_count":69,"template":false,"template_full_name":null,"purl":"pkg:github/react-native-community/react-native-circleci-orb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/react-native-community%2Freact-native-circleci-orb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/react-native-community%2Freact-native-circleci-orb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/react-native-community%2Freact-native-circleci-orb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/react-native-community%2Freact-native-circleci-orb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/react-native-community","download_url":"https://codeload.github.com/react-native-community/react-native-circleci-orb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/react-native-community%2Freact-native-circleci-orb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261956009,"owners_count":23235996,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","circleci","circleci-orbs","detox","integration-testing","ios","react-native","testing"],"created_at":"2025-05-31T09:39:21.954Z","updated_at":"2025-06-25T21:31:29.988Z","avatar_url":"https://github.com/react-native-community.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# React Native CircleCI Orb\n\n[![CircleCI Orb][orb-version-badge]][orb-page]\n\nA [CircleCI Orb](https://circleci.com/orbs/) to simplify testing your React Native app.\n\n## Why?\nSetting up CircleCI to test your React Native app correctly is hard. You need to consider using the correct machine type, installing the correct dependencies, running the correct commands, and correctly setting up caching to speed up builds. All of this is complicated and involves a lot of trial and error.\n\nWith this Orb we provide simple reusable building blocks which you can use to do the right thing easily.\n\n## Overview\nFirst, we recommend reading the [Using Orbs](https://circleci.com/docs/2.0/using-orbs/) guide from the CircleCI documentation to get an overview of how to use Orbs.\n\nThis Orb provides three different categories of tools to help you build and test your React Native app on CircleCI:\n\n* **Executors**: Machines which are configured for use with React Native.\n* **Commands**: Individual tasks which you can piece together in your own jobs to perform tasks like installing dependencies, building an APK, or running Detox tests.\n* **Jobs**: Groups of commands which are typically used together as a stage in a pipeline.\n\n## Setup\nFirstly, as this is a 3rd Party Orb, you need to go into your organisations settings, press on \"Security\", and enable usage of 3rd Party Orbs.\n\nYou will also need to ensure that you have a MacOS plan enabled if you want to build and test your iOS app, or if you want to test your Android app. Open Source projects can contact CircleCI to ask them to enable it and private projects need to select a payment plan.\n\n## Documentation\n[You can read the full documentation here](https://circleci.com/orbs/registry/orb/react-native-community/react-native).\n\n## Android\n\nAdd this task in your \u003cexample\u003e/app/build.gradle\n\n```gradle\ntask downloadDependencies() {\n  description 'Download all dependencies to the Gradle cache'\n  doLast {\n    configurations.findAll().each { config -\u003e\n      if (config.name.contains(\"minReactNative\") \u0026\u0026 config.canBeResolved) {\n        print config.name\n        print '\\n'\n        config.files\n      }\n    }\n  }\n}\n```\n\n## Example\n\nHere is a full example of how the Orb can be used in a CircleCI workflow to build and test a React Native app:\n\n```yaml\n# Orb support is from version \u003e= 2.1\nversion: 2.1\n\n# Make sure you use the latest version of the Orb!\norbs:\n  rn: react-native-community/react-native@7.1.0\n\n# Custom jobs which are not part of the Orb\njobs:\n  checkout_code:\n    executor: rn/linux_js\n    steps:\n      - checkout\n      - persist_to_workspace:\n          root: .\n          paths: .\n  analyse_js:\n    executor: rn/linux_js\n    steps:\n      - attach_workspace:\n          at: .\n      - rn/yarn_install\n      - run:\n          name: Run ESLint\n          command: yarn eslint\n      - run:\n          name: Flow\n          command: yarn flow\n      - run:\n          name: Jest\n          command: yarn jest\n\nworkflows:\n  test:\n    jobs:\n      # Checkout the code and persist to the Workspace\n      # Note: This is a job which is defined above and not part of the Orb\n      - checkout_code\n\n      # Analyze the Javascript using ESLint, Flow, and Jest\n      # Note: This is a job which is defined above and not part of the Orb\n      - analyse_js:\n          requires:\n            - checkout_code\n\n      # Build the Android app in debug mode\n      - rn/android_build:\n          name: build_android_debug\n          project_path: \"android\"\n          build_type: debug\n          requires:\n            - analyse_js\n\n      # Build and test the Android app in release mode\n      # Note: We split these into seperate jobs because we can build the Android app on a Linux machine and preserve the expensive MacOS executor minutes for when it's required\n      - rn/android_build:\n          name: build_android_release\n          project_path: \"android\"\n          build_type: release\n          requires:\n            - analyse_js\n      - rn/android_test:\n          detox_configuration: \"android.emu.release\"\n          requires:\n            - build_android_release\n\n\n      # Build the iOS app in release mode and do not run tests\n      - rn/ios_build:\n          name: build_ios_release\n          project_path: ios/Example.xcodeproj\n          device: \"iPhone 11\"\n          build_configuration: Release\n          scheme: Example\n          requires:\n            - analyse_js\n\n      # Build and test the iOS app in release mode\n      - rn/ios_build_and_test:\n          project_path: \"ios/Example.xcodeproj\"\n          device: \"iPhone 11\"\n          build_configuration: \"Release\"\n          scheme: \"Example\"\n          detox_configuration: \"ios.sim.release\"\n          requires:\n            - analyse_js\n```\n\nThis is what the final workflow will look like:\n\n![Example React Native CircleCI Orb Workflow](.github/example_workflow.png)\n\n## License\nThe Orb is released under the MIT license. For more information see [`LICENSE`](https://github.com/react-native-community/react-native-circleci-orb/blob/main/LICENSE).\n\n[orb-version-badge]:https://badges.circleci.com/orbs/react-native-community/react-native.svg\n[orb-page]:https://circleci.com/orbs/registry/orb/react-native-community/react-native\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freact-native-community%2Freact-native-circleci-orb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freact-native-community%2Freact-native-circleci-orb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freact-native-community%2Freact-native-circleci-orb/lists"}