{"id":41456525,"url":"https://github.com/iteratehq/react-native-iterate","last_synced_at":"2026-01-23T15:39:03.986Z","repository":{"id":38819870,"uuid":"338908411","full_name":"iteratehq/react-native-iterate","owner":"iteratehq","description":"React Native Iterate SDK - In-app user research made easy","archived":false,"fork":false,"pushed_at":"2025-10-24T19:53:27.000Z","size":5712,"stargazers_count":7,"open_issues_count":14,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-19T18:39:24.726Z","etag":null,"topics":["android","feedback","ios","react-native","surveys","user-research"],"latest_commit_sha":null,"homepage":"https://iteratehq.com","language":"TypeScript","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/iteratehq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2021-02-14T21:45:05.000Z","updated_at":"2025-10-24T19:53:31.000Z","dependencies_parsed_at":"2025-03-26T15:31:29.021Z","dependency_job_id":"61b669e1-8ba0-4a02-bfd3-38cc28571279","html_url":"https://github.com/iteratehq/react-native-iterate","commit_stats":{"total_commits":163,"total_committers":5,"mean_commits":32.6,"dds":"0.47239263803680986","last_synced_commit":"da303b9d99e8e19a652fa3182ac69ccd5087bf0e"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/iteratehq/react-native-iterate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iteratehq%2Freact-native-iterate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iteratehq%2Freact-native-iterate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iteratehq%2Freact-native-iterate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iteratehq%2Freact-native-iterate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iteratehq","download_url":"https://codeload.github.com/iteratehq/react-native-iterate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iteratehq%2Freact-native-iterate/sbom","scorecard":{"id":496968,"data":{"date":"2025-08-11","repo":{"name":"github.com/iteratehq/react-native-iterate","commit":"25e9cacf1bd2a891b437073c48b77572aae7bdc7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":9,"reason":"Found 10/11 approved changesets -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: example/android/gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/iteratehq/react-native-iterate/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/iteratehq/react-native-iterate/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/iteratehq/react-native-iterate/ci.yml/main?enable=pin","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"39 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-3q56-9cc2-46j4","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27","Warn: Project is vulnerable to: GHSA-4www-5p9h-95mh","Warn: Project is vulnerable to: GHSA-9gqv-wp59-fq42","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-6vfc-qv3f-vr6c","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-cchq-frgv-rjh5","Warn: Project is vulnerable to: GHSA-g644-9gfx-q4q4","Warn: Project is vulnerable to: GHSA-4vvj-4cpr-p986","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T20:40:15.103Z","repository_id":38819870,"created_at":"2025-08-19T20:40:15.103Z","updated_at":"2025-08-19T20:40:15.103Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28694779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T14:15:13.573Z","status":"ssl_error","status_checked_at":"2026-01-23T14:09:05.534Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","feedback","ios","react-native","surveys","user-research"],"created_at":"2026-01-23T15:39:03.363Z","updated_at":"2026-01-23T15:39:03.973Z","avatar_url":"https://github.com/iteratehq.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n![Iterate for React Native](https://iterate-assets.s3.amazonaws.com/clients/iterate-react-native-banner.png)\n\n# Iterate for React Native\n\n[![build](https://img.shields.io/circleci/build/github/iteratehq/react-native-iterate)](https://github.com/iteratehq/react-native-iterate) \n[![maintainability](https://img.shields.io/codeclimate/maintainability/iteratehq/react-native-iterate)](https://codeclimate.com/github/iteratehq/react-native-iterate)\n[![version](https://img.shields.io/github/v/tag/iteratehq/react-native-iterate?label=version)](https://github.com/iteratehq/react-native-iterate/releases)\n[![license](https://img.shields.io/github/license/iteratehq/react-native-iterate?color=%23000000)](https://github.com/iteratehq/react-native-iterate/blob/master/LICENSE.txt) \n\n[Iterate](https://iteratehq.com) surveys put you directly in touch with your app users to learn how you can change for the better—from your product to your app experience.\n\nRun surveys that are highly targeted, user-friendly, and on-brand. You’ll understand not just what your visitors are doing, but why.\n\n## Platforms Supported\n\n- [x] iOS\n- [x] Android\n\n## Install\n\nWith yarn\n\n```\n$ yarn add react-native-iterate\n```\n\nWith npm\n\n```\n$ npm install --save react-native-iterate\n```\n\n**Install peer dependencies**\n\nWe rely on only one peer dependency, if you already have it in your app you can skip this step.\n\n- [react-native-webview](https://github.com/react-native-webview/react-native-webview) - used to display the survey\n\nWith yarn\n\n```\n$ yarn add react-native-safe-area-context react-native-webview\n```\n\nWith npm\n\n```\n$ npm install --save react-native-safe-area-context react-native-webview\n```\n\n**Install storage facility**\n\nWhen you initialize Iterate you provide it with a storage facility that's used to save the API key as well as any additional user data set by calling the `identify` method. We recommend using an encrypted storage facility like [react-native-encrypted-storage](https://github.com/emeraldsanto/react-native-encrypted-storage), however you can also use [async-storage](https://github.com/react-native-async-storage/async-storage) or provide your own, the only requirement is that it complies with our StorageInterface.\n\n```Typescript\nexport interface StorageInterface {\n  getItem(key: string): Promise\u003cstring | null\u003e;\n  setItem(key: string, value: string): Promise\u003cvoid\u003e;\n  removeItem(key: string): Promise\u003cvoid\u003e;\n}\n```\n\n\nWith yarn\n\n```\n$ yarn add react-native-encrypted-storage\n```\n\nWith npm\n\n```\n$ npm install --save react-native-encrypted-storage\n```\n\n**Install safe area provider**\n\nOn mobile devices the safe area represents the portion of the view that is suitable for UI to be displayed. Rather than requiring an additional peer dependency, you pass in your own method of providing the safe area. We recommend you use [react-native-safe-area-context](https://github.com/th3rdwave/react-native-safe-area-context), however you can provide your own method that conforms to the interface `() =\u003e {top: number, bottom: number, left: number, right: number}`\n\n\nWith yarn\n\n```\n$ yarn add react-native-safe-area-context\n```\n\nWith npm\n\n```\n$ npm install --save react-native-safe-area-context\n```\n\n**Link native dependencies**\n\nFrom react-native 0.60 autolinking will take care of the link step and you can safely skip\n\nReact Native modules that include native Objective-C, Swift, Java, or Kotlin code have to be \"linked\" so that the compiler knows to include them in the app.\n\n```\n$ react-native link react-native-webview\n```\n\nLink your storage facility\n```\n$ react-native link react-native-encrypted-storage\n```\n\nLink your safe area provider\n```\n$ react-native link react-native-safe-area-context\n```\n\n**Install pods**\n\nFor iOS you need to run pod install to complete the installation. Within the `ios` library of your app, run the following\n\n```\n$ pod install\n```\n\n## Usage\n\nWithin your app, surveys are shown in response to _events_. An event can be anything from viewing a screen, clicking a button, or any other user action. You use the Iterate SDK to send events to Iterate, then from your Iterate dashboard you create surveys that target those events.\n\n**Quick start**\n\nCreate your [Iterate](https://iteratehq.com) account if you haven't already.\n\n1. Create a new survey and select \"Install in your mobile app\"\n2. Go to the \"Preview \u0026 Publish\" tab and copy your SDK API key\n3. Call Iterate.Init with your apiKey, safeArea function, and storage, then wrap your App in the `\u003cSafeAreaProvider\u003e` (if using react-native-safe-area-context) and `\u003cIterateProvider\u003e` components\n\n```JSX\nimport Iterate from 'react-native-iterate';\nimport SecureStorage from 'react-native-encrypted-storage';\nimport { SafeAreaProvider, useSafeAreaInsets } from 'react-native-safe-area-context';\n\nconst App = () =\u003e {\n  React.useEffect(() =\u003e {\n    Iterate.init({\n      apiKey: apiKey,\n      safeArea: useSafeAreaInsets,\n      storage: SecureStorage,\n    });\n  }, []);\n\n  return (\n    \u003cSafeAreaProvider\u003e\n      \u003cIterateProvider\u003e\n        { // Your application views }\n      \u003c/IterateProvider\u003e\n    \u003c/SafeAreaProvider\u003e\n  )\n}\n\nexport default App;\n```\n\n4. Implement events\n\nHere's an example of an event being fired when the user views the activity feed screen\n\n```JSX\nimport Iterate from 'react-native-iterate';\n\nconst ActivityFeed = () =\u003e {\n  useEffect(() =\u003e {\n    Iterate.sendEvent('viewed-activity-feed');\n  }, []);\n\n  // ...rest of component\n}\n```\n5. Create your survey on iteratehq.com and target it to that event\n6. Publish your survey and you're done 🎉\n\n## Previewing your survey\n\nYou'll likely want to preview your survey before publishing it so you can test that everything works correctly. When previewing a survey you'll be able to see a survey before it's published. When previewing a survey all targeting options for that survey are ignored (e.g. rate limiting, targeting user properties), the only thing you need to do is trigger the event that your survey is targeting and it will show up.\n\n1. In the \"Preview \u0026 Publish\" tab select 'React Native' and copy the preview code.\n2. Implement into your application, this can be done once in any component that's rendered before the event you're targeting\n\n```JSX\nuseEffect(() =\u003e {\n  Iterate.preview('your-survey-id');\n}, []);\n```\n\n## Recommendations\n\nWhen implementing Iterate for the first time, we encourage you to implement events for _all_ of your core use cases which you may want to target surveys to in the future. e.g. sign up, purchased, viewed X screen, tapped notification, etc. This way you can easily launch new surveys targeting these events without needing to instrument a new event each time.\n\n## Custom fonts\n\nCustom fonts that are available in your app bundle can be used in the Iterate survey view by passing both the filenames (from your `assets/fonts` folder) and the fonts' postscript names to the `Iterate.shared.configure` method, like this:\n\n```typescript\n    Iterate.init({\n      apiKey: apiKey,\n      safeArea: useSafeAreaInsets,\n      storage: SecureStorage,\n      buttonFont: {\n        filename: 'WorkSans-Regular.ttf',\n        postscriptName: 'WorkSans-Regular',\n      },\n      surveyTextFont: {\n        filename: 'Merriweather-Regular.ttf',\n        postscriptName: 'Merriweather-Regular',\n      },\n    });\n```\n\nThe font specified in the `buttonFont` parameter will be used in all survey interface buttons (question responses, previous / next buttons, etc). The font specified in `surveyTextFont` will be used for all other survey text (question prompts, explanatory copy, etc).\n\nTrue Type fonts and Open Type Fonts are supported.\n\n## Associating data with a user\n\nUsing the `identify` method, you can easily add 'user properties' to a user that can be used to target surveys to them and associate the information with all of their future responses. We recommend setting the `external_id` (needs to be a string) which represents your internal id for the user, this allows us to associate this user across multiple platforms and sessions'\n\n```JSX\nuseEffect(() =\u003e {\n  Iterate.identify({\n    email: 'example@email.com',\n    external_id: '12abc34',\n    is_subscriber: true,\n    joined: new Date(),\n  });\n}, []);\n```\n\nYou can also associate 'response properties' with the user's responses to a specific survey (not associated with any future surveys they fill out), by passing an object to the `sendEvent` method.\n\n```JSX\nuseEffect(() =\u003e {\n  Iterate.sendEvent('viewed-activity-feed', {\n    selected_product_id: 12345,\n    timestamp: 140002658477\n  });\n}, []);\n```\n\n\nFor more information see our [help article](https://help.iteratehq.com/en/articles/4457590-associating-data-with-a-user-or-response).\n\n## Event callbacks\n\nIf you need access to the user's responses on the client, you can use the `onResponse` method to pass a callback function that will return the question and response\n\n```JSX\nuseEffect(() =\u003e {\n  Iterate.onResponse((response, question, survey) =\u003e {\n    // Your logic here\n  });\n}, []);\n```\n\nIf you need access to other events on the survey (dismiss, survey-complete, etc), you can use the `onEvent` method to pass a callback function that will fire with each of the events listed below\n\n```JSX\nuseEffect(() =\u003e {\n  Iterate.onEvent((event, data) =\u003e {\n    // Your logic here\n  });\n}, []);\n```\n\n| Event | Data | Notes |\n| ------------- | ------------- | ------------- |\n| 'dismiss'  | `{ source: 'prompt' \\| 'survey', progress?: { completed: number, total: number, currentQuestion?: Question; }, survey: Survey }`  | Progress contains data about how far the user was in the survey when they dismissed. `completed` is number of questions they've completed (regardless of if they responded to the question or skipped it). `total` is the total number of questions in the survey. `currentQuestion` is the question they were on when they dismissed the survey.\n| 'displayed'  | `{ source: 'prompt' \\| 'survey', survey: Survey }`  |\n| 'response'  | `{ response: Response, question: Question, survey: Survey }` |\n| 'survey-complete'  | `{ survey: Survey }`  | Called once when the user reaches the 'thank you' screen\n\n\n## Clearing data\n\nTo clear all data Iterate has stored (user api key, any user properties stored by calling the `identify` method, etc) call the `reset` method. This is commonly called when you log a user out of your app.\n\n```JSX\nconst logout = useCallback(() =\u003e {\n  Iterate.reset()\n\n  // Your other logout logic here\n}, []);\n```\n\n## Supporting Markdown in the prompt\n\nTo support Markdown in the prompt, you'll need to provide a Markdown renderer. We recommend you use [react-native-markdown-display](https://github.com/iamacup/react-native-markdown-display), however you can provide your own component that is an `React.ElementType` and accepts the markdown string as it's children.\n\n\n```JSX\nimport Markdown from 'react-native-markdown-display';\n\n Iterate.init({\n    apiKey: apiKey,\n    safeArea: useSafeAreaInsets,\n    storage: SecureStorage,\n    markdown: Markdown\n  });\n```\n\n## Survey eligibility and frequency\n\nBy default surveys are only shown once per person and user's can only see at most 1 survey every 72 hours (which is configurable). You can learn more about how [eligibility and frequency works](https://help.iteratehq.com/en/articles/2835008-survey-eligibility-and-frequency).\n\n## Troubleshooting\n\nIf you have any issues you can head over to our [help center](https://help.iteratehq.com) to search for an answer or chat with our support team.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiteratehq%2Freact-native-iterate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiteratehq%2Freact-native-iterate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiteratehq%2Freact-native-iterate/lists"}