{"id":28318187,"url":"https://github.com/jairajjangle/react-native-tree-multi-select","last_synced_at":"2026-04-02T16:59:42.079Z","repository":{"id":179007393,"uuid":"662706519","full_name":"JairajJangle/react-native-tree-multi-select","owner":"JairajJangle","description":"Super-fast tree view with multi-selection capabilities, using checkboxes and search filtering.","archived":false,"fork":false,"pushed_at":"2026-03-29T18:48:40.000Z","size":5370,"stargazers_count":107,"open_issues_count":1,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-29T20:31:59.292Z","etag":null,"topics":["checkbox-treeview","expo","react-checkbox-tree","react-native","react-native-checkbox","react-native-checkbox-list","react-native-tree","react-native-tree-checkbox","react-native-tree-select","react-native-tree-view","react-tree-view","tree-checkbox","tree-select","tree-view","treeview"],"latest_commit_sha":null,"homepage":"","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/JairajJangle.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://www.paypal.com/paypalme/jairajjangle001/usd","https://github.com/JairajJangle/OpenCV-Catalogue/blob/master/.github/Jairaj_Jangle_Google_Pay_UPI_QR_Code.jpg"],"liberapay":"FutureJJ","ko_fi":"futurejj","github":null,"patreon":null,"open_collective":null,"tidelift":null,"community_bridge":null,"issuehunt":null,"otechie":null}},"created_at":"2023-07-05T17:55:30.000Z","updated_at":"2026-03-28T19:06:47.000Z","dependencies_parsed_at":"2024-05-13T15:49:06.533Z","dependency_job_id":"eb00fd7e-8ebb-43a6-a751-d345af2f7070","html_url":"https://github.com/JairajJangle/react-native-tree-multi-select","commit_stats":null,"previous_names":["jairajjangle/react-native-tree-multi-select"],"tags_count":77,"template":false,"template_full_name":null,"purl":"pkg:github/JairajJangle/react-native-tree-multi-select","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JairajJangle%2Freact-native-tree-multi-select","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JairajJangle%2Freact-native-tree-multi-select/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JairajJangle%2Freact-native-tree-multi-select/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JairajJangle%2Freact-native-tree-multi-select/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JairajJangle","download_url":"https://codeload.github.com/JairajJangle/react-native-tree-multi-select/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JairajJangle%2Freact-native-tree-multi-select/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31310984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["checkbox-treeview","expo","react-checkbox-tree","react-native","react-native-checkbox","react-native-checkbox-list","react-native-tree","react-native-tree-checkbox","react-native-tree-select","react-native-tree-view","react-tree-view","tree-checkbox","tree-select","tree-view","treeview"],"created_at":"2025-05-25T07:12:06.580Z","updated_at":"2026-04-02T16:59:42.061Z","avatar_url":"https://github.com/JairajJangle.png","language":"TypeScript","funding_links":["https://www.paypal.com/paypalme/jairajjangle001/usd","https://github.com/JairajJangle/OpenCV-Catalogue/blob/master/.github/Jairaj_Jangle_Google_Pay_UPI_QR_Code.jpg","https://liberapay.com/FutureJJ","https://ko-fi.com/futurejj","https://github.com/sponsors/JairajJangle","https://liberapay.com/FutureJJ/donate"],"categories":[],"sub_categories":[],"readme":"# react-native-tree-multi-select\n\n⚡️Super-fast Tree view with multi-selection capabilities, using checkboxes and search filtering.\n\n[![npm version](https://img.shields.io/npm/v/react-native-tree-multi-select)](https://badge.fury.io/js/react-native-tree-multi-select) [![License](https://img.shields.io/github/license/JairajJangle/react-native-tree-multi-select)](https://github.com/JairajJangle/react-native-tree-multi-select/blob/main/LICENSE) [![Workflow Status](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml/badge.svg)](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml) [![cov](https://raw.githubusercontent.com/JairajJangle/react-native-tree-multi-select/gh-pages/badges/coverage.svg)](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml) ![Android](https://img.shields.io/badge/-Android-555555?logo=android\u0026logoColor=3DDC84) ![iOS](https://img.shields.io/badge/-iOS-555555?logo=apple\u0026logoColor=white) ![Web](https://img.shields.io/badge/-Web-555555?logo=google-chrome\u0026logoColor=0096FF) [![GitHub issues](https://img.shields.io/github/issues/JairajJangle/react-native-tree-multi-select)](https://github.com/JairajJangle/react-native-tree-multi-select/issues?q=is%3Aopen+is%3Aissue) ![TS](https://img.shields.io/badge/TypeScript-strict_💪-blue) [![Known Vulnerabilities](https://snyk.io/test/github/jairajjangle/react-native-tree-multi-select/badge.svg)](https://snyk.io/test/github/jairajjangle/react-native-tree-multi-select) [![Expo Snack](https://img.shields.io/badge/Expo%20Snack-555555?style=flat\u0026logo=expo\u0026logoColor=white)](https://snack.expo.dev/@futurejj/react-native-tree-multi-select-example) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/react-native-tree-multi-select) [![Sponsor](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?style=flat\u0026logo=github-sponsors)](https://github.com/sponsors/JairajJangle)\n\n\n\u003cdiv style=\"display: flex; justify-content: space-around;\"\u003e\n  \u003cimg src=\"https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExNHFleDNleTZsMXVoMjk1YnlpdXFtanZyZGprMDkwcDdteGhqYTNhcCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/L0w26RrC32gdfWZ8Ux/giphy.gif\" alt=\"Expand/collapse demo\" style=\"border: 1px solid gray;\" /\u003e\n  \u003cimg src=\"https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExdGxuZHNqaGhrZmdyZzRtY21icHNtbHZoM3N4aHlyMDFxZjJrd25rMyZlcD12MV9pbnRtZXJuYWxfZ2lmX2J5X2lkJmN0PWc/KY6Y0gkSPYAFxffL8r/giphy.gif\" alt=\"Search demo\" style=\"border: 1px solid gray;\" /\u003e\n  \u003cimg src=\"https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExdXI4aWxpazdhaDk2MDk1a3BpaHphcmVoY2FpNGw3aHExZ3hwYmY3OSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/ZXtvX5eqGzoCuD3hus/giphy.gif\" alt=\"Customization demo\" style=\"border: 1px solid gray;\" /\u003e\n\u003c/div\u003e\n\n## Installation\n\nUsing yarn:\n\n```sh\nyarn add react-native-tree-multi-select\n```\n\nusing npm:\n\n```sh\nnpm install react-native-tree-multi-select\n```\n\nDependencies that need to be installed for this library to work:\n\n1. [@shopify/flash-list](https://github.com/Shopify/flash-list)\n3. **Icon Library** (One of the following):\n   - **For Expo Apps (including Expo Go)**: No additional setup is needed. This library automatically uses `@expo/vector-icons`, which is included in the Expo SDK.\n   - **For Non-Expo React Native Apps**: Install [react-native-vector-icons](https://github.com/oblador/react-native-vector-icons) (`\u003e=7.1.0`) to enable icon support.\n\nMake sure to follow the native-related installation instructions for these dependencies if you are using bare workflow.\n\n## **Highlighted Features**\n\n- ⚡ **Fast**: Designed with performance in mind for smooth scrolling and quick selections.\n- 🛠️ **Highly Customizable**: Modify styles, behavior, and use your custom list component to suit your application's needs.\n- 🔍 **Filterable**: Quickly filter through tree nodes and option to select and un-select only the filtered tree nodes.\n- ✅ **Well Tested**: Comprehensive test coverage to ensure reliability and stability.\n- 📚 **Well Documented**: Detailed documentation to get you started and an example app to demo all the features.\n- 🌳 **Multi-Level Selection**: Select individual nodes or entire branches with ease.\n- 📦 **Supports Large Datasets**: Efficiently handles large trees without much performance degradation.\n- 🔒 **TypeScript Support**: Full TypeScript support for better developer experience.\n- 💻 **Cross-Platform**: Works seamlessly across iOS, Android, and web (with React Native Web).\n\n## Usage\n\n```tsx\nimport {\n  TreeView,\n  type TreeNode,\n  type TreeViewRef\n} from 'react-native-tree-multi-select';\n\n// Refer to the Properties table below or the example app for the TreeNode type\nconst myData: TreeNode[] = [...];\n\nexport function TreeViewUsageExample(){\n  const treeViewRef = React.useRef\u003cTreeViewRef | null\u003e(null);\n  \n  // It's recommended to use debounce for the search function (refer to the example app)\n  function triggerSearch(text: string){\n    // Pass search text to the tree along with the keys on which search is to be done(optional)\n    treeViewRef.current?.setSearchText(text, [\"name\"]);\n  }\n  \n  // Callback functions for check and expand state changes:\n  const handleSelectionChange = (\n      _checkedIds: string[],\n      _indeterminateIds: string[]\n  ) =\u003e {\n      // NOTE: Handle _checkedIds and _indeterminateIds here\n  };\n  const handleExpanded = (expandedIds: string[]) =\u003e {\n    // NOTE: Do something with updated expandedIds here\n  };\n\n  // Expand collapse calls using ref\n  const expandAllPress = () =\u003e treeViewRef.current?.expandAll?.();\n  const collapseAllPress = () =\u003e treeViewRef.current?.collapseAll?.();\n  const expandNodes = (idsToExpand: string[]) =\u003e treeViewRef.current?.expandNodes?.(\n    idsToExpand\n  );\n  const collapseNodes = (idsToCollapse: string[]) =\u003e treeViewRef.current?.collapseNodes?.(\n    idsToCollapse\n  );\n\n  // Multi-selection function calls using ref\n  const onSelectAllPress = () =\u003e treeViewRef.current?.selectAll?.();\n  const onUnselectAllPress = () =\u003e treeViewRef.current?.unselectAll?.();\n  const onSelectAllFilteredPress = () =\u003e treeViewRef.current?.selectAllFiltered?.();\n  const onUnselectAllFilteredPress = () =\u003e treeViewRef.current?.unselectAllFiltered?.();\n  const selectNodes = (idsToExpand: string[]) =\u003e treeViewRef.current?.selectNodes?.(\n    idsToSelect\n  );\n  const unselectNodes = (idsToCollapse: string[]) =\u003e treeViewRef.current?.unselectNodes?.(\n    idsToUnselect\n  );\n  \n  return(\n    // ... Remember to keep a fixed height for the parent. Read Flash List docs to know why\n    \u003cTreeView\n      ref={treeViewRef}\n      data={myData}\n      onCheck={handleSelectionChange}\n      onExpand={handleExpanded}\n    /\u003e\n  );\n}\n```\n\n### Properties\n\n#### TreeViewProps`\u003cID = string\u003e`\n\n*The `TreeViewProps` interface defines the properties for the tree view component.*\n\n| Property                           | Type                                                         | Required | Description                                                  |\n| ---------------------------------- | ------------------------------------------------------------ | -------- | ------------------------------------------------------------ |\n| `data`                             | [TreeNode](#treenodeid--string)`\u003cID = string\u003e[]`     | Yes      | An array of `TreeNode` objects                               |\n| `onCheck`                          | `(checkedIds: ID[], indeterminateIds: ID[]) =\u003e void` | No       | Callback when a checkbox state changes                       |\n| `onExpand`                         | `(expandedIds: ID[]) =\u003e void`                           | No       | Callback when a node is expanded                             |\n| `preselectedIds`                   | `ID[]`                                                  | No       | An array of `id`s that should be pre-selected                |\n| `preExpandedIds`                   | `ID[]`                                                  | No       | An array of `id`s that should be pre-expanded                |\n| `selectionPropagation`     | [SelectionPropagation](#selectionpropagation) | No       | Control Selection Propagation Behavior. Choose whether you want to auto-select children or parents. |\n| `initialScrollNodeID` | `ID` | No       | Set node ID to scroll to intiially on tree view render. |\n| `indentationMultiplier`            | `number`                                                     | No       | Indentation (`marginStart`) per level (defaults to 15)       |\n| `treeFlashListProps`               | [TreeFlatListProps](#treeflatlistprops)                      | No       | Props for the flash list                                     |\n| `checkBoxViewStyleProps`           | [BuiltInCheckBoxViewStyleProps](#builtincheckboxviewstyleprops) | No       | Props for the checkbox view                                  |\n| `CheckboxComponent`                | `ComponentType\u003c`[CheckBoxViewProps](#checkboxviewprops)`\u003e`   | No       | A custom checkbox component. |\n| `ExpandCollapseIconComponent`      | `ComponentType\u003c`[ExpandIconProps](#expandiconprops)`\u003e`       | No       | A custom expand/collapse icon component                      |\n| `ExpandCollapseTouchableComponent` | `ComponentType\u003c`[TouchableOpacityProps](https://reactnative.dev/docs/touchableopacity#props)`\u003e` | No       | A custom expand/collapse touchable component                 |\n| `CustomNodeRowComponent`           | `React.ComponentType\u003c`[NodeRowProps](#noderowpropsid--string)`\u003cID\u003e\u003e` | No       | Custom row item component                                    |\n\n##### Notes\n\n- The `ID` type parameter allows flexibility in specifying the type of node identifiers (e.g., `string`, `number`, or custom types).\n- ℹ️ If `CustomNodeRowComponent` is provided then below props are not applied:\n  1. `indentationMultiplier`\n  1. `checkBoxViewStyleProps`\n  1. `CheckboxComponent`\n  1. `BuiltInCheckBoxViewStyleProps`\n  1. `ExpandCollapseIconComponent`\n  1. `ExpandCollapseTouchableComponent`.\n  \n- ⚠️ If the tree view doesn't scroll if rendered in a complex nested scroll view/s then try setting the `renderScrollComponent` value in  `treeFlashListProps` to `ScrollView` from `react-native-gesture-handler`.\n\n---\n\n#### TreeNode`\u003cID = string\u003e`\n\n*The `TreeNode` interface defines the properties for individual item of the tree view*\n\n| Property        | Type                     | Required | Description                                                  |\n| --------------- | ------------------------ | -------- | ------------------------------------------------------------ |\n| `id`            | `ID` (default: `string`) | Yes      | Unique identifier for the node                               |\n| `name`          | `string`                 | Yes      | The display name of the node                                 |\n| `children`      | `TreeNode\u003cID\u003e[]`         | No       | An array of child `TreeNode\u003cID\u003e` objects                     |\n| `[key: string]` | `any`                    | No       | Any additional properties for the node \u003cbr /\u003e(May be useful to perform search on) |\n\n---\n\n#### TreeViewRef`\u003cID = string\u003e`\n\n*The `TreeViewRef` interface defines the properties for the ref object of the tree view component*\n\n| Property              | Type                                                  | Description                                                  |\n| --------------------- | ----------------------------------------------------- | ------------------------------------------------------------ |\n| `selectAll`           | `() =\u003e void`                                          | Selects **all** nodes                                        |\n| `unselectAll`         | `() =\u003e void`                                          | Unselects **all** nodes                                      |\n| `selectAllFiltered`   | `() =\u003e void`                                          | Selects all **filtered** nodes                               |\n| `unselectAllFiltered` | `() =\u003e void`                                          | Unselects all **filtered** nodes                             |\n| `expandAll`           | `() =\u003e void`                                          | Expands all nodes                                            |\n| `collapseAll`         | `() =\u003e void`                                          | Collapses all nodes                                          |\n| `expandNodes`           | `(ids: ID[]) =\u003e void`                          | Expands specified nodes    |\n| `collapseNodes`           | `(ids: ID[]) =\u003e void`                           | Collapses specified nodes    |\n| `selectNodes`           | `(ids: ID[]) =\u003e void`                         | Selects specified nodes    |\n| `unSelectNodes`           | `(ids: ID[]) =\u003e void`                         | Unselects specified nodes    |\n| `setSearchText`       | `(searchText: string, searchKeys?: string[]) =\u003e void` | Set the search text and optionally the search keys. Default search key is \"name\"\u003cbr /\u003e\u003cbr /\u003eRecommended to call this inside a debounced function if you find any performance issue otherwise. |\n| `scrollToNodeID` | `(params: `[ScrollToNodeParams](#scrolltonodeparams)`\u003cID\u003e) =\u003e void;` | Scrolls the tree view to the node of the specified ID. |\n| `getChildToParentMap` | `() =\u003e Map\u003cID, ID\u003e` | Get the child to parent tree view map. |\n\n#### ScrollToNodeParams\n| Property             | Type      | Required | Description                                                  |\n| -------------------- | --------- | -------- | ------------------------------------------------------------ |\n| `nodeId`             | `ID`      | Yes      | Node ID to expand and scroll to.                             |\n| `expandScrolledNode` | `boolean` | No       | Whether to expand scrolled node to reveal its children. Defaults to `false`. |\n| `animated`           | `boolean` | No       | Control if scrolling should be animated.                     |\n| `viewOffset`         | `number`  | No       | A fixed number of pixels to offset the scrolled node position. |\n| `viewPosition`       | `number`  | No       | A value of `0` places the scrolled node item at the top, `1` at the bottom, and `0.5` centered in the middle. |\n\n\n---\n\n#### SelectionPropagation\n\n*The `SelectionPropagation` interface defines the selection propagation behaviour of the tree view*\n\n| Property     | Type      | Required | Description                                                  |\n| ------------ | --------- | -------- | ------------------------------------------------------------ |\n| `toChildren` | `boolean` | No       | Whether to propagate selection to children nodes. Defaults to `true`. |\n| `toParents`  | `boolean` | No       | Whether to propagate selection to parent nodes. Defaults to `true`. |\n\n---\n\n#### TreeFlatListProps\n\n*All properties of `FlashListProps`(from `@shopify/flash-list`) except for `data` and `renderItem`*\n\n---\n\n#### BuiltInCheckBoxViewStyleProps\n\n*This interface allows you to customize the style of the built-in checkbox component that is rendered in the tree view by default. Overriden if `CustomNodeRowComponent` is used.*\n\n| Property                   | Type                             | Required | Description                                            |\n| -------------------------- | -------------------------------- | -------- | ------------------------------------------------------ |\n| `outermostParentViewStyle` | `StyleProp\u003cViewStyle\u003e`           | No       | Optional style modifier for the outermost parent view. |\n| `checkboxParentViewStyle`  | `StyleProp\u003cViewStyle\u003e`           | No       | Optional style modifier for the checkbox parent view.  |\n| `textTouchableStyle`       | `StyleProp\u003cViewStyle\u003e`           | No       | Optional style modifier for the text touchable style.  |\n| `checkboxProps`            | [CheckboxProps](#checkboxprops)  | No       | Optional props for the checkbox component.             |\n| `textProps`                | `TextProps` \u003cbr /\u003e(React Native) | No       | Optional props for the text component.                 |\n\n#### CheckboxProps\n\nAll properties of `CheckboxProps`(from `@futurejj/react-native-checkbox`) except for `onPress` and `status`\n\n---\n\n#### CheckBoxViewProps\n\n| Property        | Type                                    | Required | Description                                        |\n| --------------- | --------------------------------------- | -------- | -------------------------------------------------- |\n| `value`         | [CheckboxValueType](#checkboxvaluetype) | Yes      | The current value of the checkbox                  |\n| `onValueChange` | `(value: boolean) =\u003e void`              | Yes      | Function to be called when the checkbox is pressed |\n| `text`          | `string`                                | Yes      | The display text besides the checkbox              |\n\n#### CheckboxValueType\n\nType: `boolean` OR `\"indeterminate\"`\n\n---\n\n#### ExpandIconProps\n\n| Property   | Type    | Required | Description                       |\n| ---------- | ------- | -------- | --------------------------------- |\n| isExpanded | boolean | Yes      | Indicates if the icon is expanded |\n\n---\n\n#### NodeRowProps`\u003cID = string\u003e`\n\n| Property       | Type                                    | Required | Description                                             |\n| -------------- | --------------------------------------- | -------- | ------------------------------------------------------- |\n| `node`         | [TreeNode](#treenodeid--string)         | Yes      | The node to be rendered                                 |\n| `level`        | `number`                                | Yes      | The depth of the node in the tree                       |\n| `checkedValue` | [CheckboxValueType](#checkboxvaluetype) | Yes      | The current value of the checkbox                       |\n| `isExpanded`   | `boolean`                               | Yes      | Whether the node is expanded or not                     |\n| `onCheck`      | `() =\u003e void`                            | Yes      | Function to be called when the checkbox is pressed      |\n| `onExpand`     | `() =\u003e void`                            | Yes      | Function to be called when the expand button is pressed |\n\n---\n\n ### 🙌 Planned features\n\n- [x] Row Item full-customization\n- [x] Prop to control auto children and parents selection. Can now be done using `selectionPropagation` prop 🎉\n- [ ] Prop to set the maximum checked item limit\n- [ ] Prop to disable certain nodes from getting checked\n- [x] Ref function to programatically expand/collapse a certain node \n- [x] Ref function to programatically un/check a certain node\n- [x] Ref function to auto-scroll to a certain node's position - available in 1.9.0+\n\nIf you do not see what you want in the planned feature list, raise a feature request. \n\n---\n\n### 💡 Some Expo Snack Examples\n\n1. Radio button like selection in tree view: [Snack link](https://snack.expo.dev/@futurejj/react-native-tree-multi-select-radio-button-example)\n2. Display count of number of checked nodes: [Snack link](https://snack.expo.dev/@futurejj/react-native-tree-multi-select-example)\n\n---\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\nMIT\n\n## 🙏 Support the project\n\n\u003cp align=\"center\" valign=\"center\"\u003e\n  \u003ca href=\"https://liberapay.com/FutureJJ/donate\"\u003e\n    \u003cimg src=\"https://liberapay.com/assets/widgets/donate.svg\" alt=\"LiberPay_Donation_Button\" height=\"50\" \u003e \n  \u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\".github/assets/Jairaj_Jangle_Google_Pay_UPI_QR_Code.jpg\"\u003e\n    \u003cimg src=\".github/assets/upi.png\" alt=\"Paypal_Donation_Button\" height=\"50\" \u003e\n  \u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://www.paypal.com/paypalme/jairajjangle001/usd\"\u003e\n    \u003cimg src=\".github/assets/paypal_donate.png\" alt=\"Paypal_Donation_Button\" height=\"50\" \u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n## ❤️ Thanks to \n\n- Module built using [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n- To allow super fast list rendering [@shopify/flash-list](https://github.com/Shopify/flash-list)\n- Super easy state management done using [zustand](https://github.com/pmndrs/zustand)\n- Readme is edited using [Typora](https://typora.io/)\n- Example app uses [@gorhom/showcase-template](https://github.com/gorhom/showcase-template)\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjairajjangle%2Freact-native-tree-multi-select","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjairajjangle%2Freact-native-tree-multi-select","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjairajjangle%2Freact-native-tree-multi-select/lists"}