{"id":30798979,"url":"https://github.com/pythonnative/pythonnative","last_synced_at":"2026-05-12T07:02:05.302Z","repository":{"id":313289905,"uuid":"1050814997","full_name":"pythonnative/pythonnative","owner":"pythonnative","description":"Build real native Android and iOS apps in Python with a lightweight UI toolkit, CLI, and project templates.","archived":false,"fork":false,"pushed_at":"2026-03-31T06:35:05.000Z","size":1765,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-31T07:50:49.733Z","etag":null,"topics":["android","beeware","cli","cross-platform","django","gradle","ios","kotlin","mobile-development","native-ui","python","python-mobile-apps","rubicon","swift","ui-components","xcode"],"latest_commit_sha":null,"homepage":"https://docs.pythonnative.com","language":"Python","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/pythonnative.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-05T01:41:48.000Z","updated_at":"2026-03-31T06:35:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"3083b71a-0505-48c0-b29d-7f003b573404","html_url":"https://github.com/pythonnative/pythonnative","commit_stats":null,"previous_names":["pythonnative/pythonnative"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/pythonnative/pythonnative","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythonnative%2Fpythonnative","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythonnative%2Fpythonnative/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythonnative%2Fpythonnative/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythonnative%2Fpythonnative/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pythonnative","download_url":"https://codeload.github.com/pythonnative/pythonnative/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythonnative%2Fpythonnative/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31504897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"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":["android","beeware","cli","cross-platform","django","gradle","ios","kotlin","mobile-development","native-ui","python","python-mobile-apps","rubicon","swift","ui-components","xcode"],"created_at":"2025-09-05T19:02:33.291Z","updated_at":"2026-05-12T07:02:05.296Z","avatar_url":"https://github.com/pythonnative.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/banner.jpg\" alt=\"PythonNative\" width=\"800\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eBuild native Android and iOS apps in Python.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/pythonnative/pythonnative/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/pythonnative/pythonnative/actions/workflows/ci.yml/badge.svg\" alt=\"CI\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/pythonnative/pythonnative/actions/workflows/release.yml\"\u003e\u003cimg src=\"https://github.com/pythonnative/pythonnative/actions/workflows/release.yml/badge.svg\" alt=\"Release\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/pythonnative/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/pythonnative\" alt=\"PyPI Version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/pythonnative/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/pyversions/pythonnative\" alt=\"Python Versions\" /\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/pypi/l/pythonnative\" alt=\"License: MIT\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://docs.pythonnative.com/\"\u003e\u003cimg src=\"https://img.shields.io/website?url=https%3A%2F%2Fdocs.pythonnative.com\u0026label=docs\" alt=\"Docs\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://docs.pythonnative.com/\"\u003eDocumentation\u003c/a\u003e ·\n  \u003ca href=\"https://docs.pythonnative.com/getting-started/\"\u003eGetting Started\u003c/a\u003e ·\n  \u003ca href=\"https://docs.pythonnative.com/examples/\"\u003eExamples\u003c/a\u003e ·\n  \u003ca href=\"CONTRIBUTING.md\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Overview\n\nPythonNative is a cross-platform toolkit for building native Android and iOS apps in Python. It provides a **declarative, React-like component model** with hooks and automatic reconciliation, powered by Chaquopy on Android and rubicon-objc on iOS. Write function components with `use_state`, `use_effect`, and friends, just like React, and let PythonNative handle creating and updating native views.\n\n## Features\n\n- **Declarative UI:** Describe *what* your UI should look like with element functions (`Text`, `Button`, `Column`, `Row`, etc.). PythonNative creates and updates native views automatically.\n- **Hooks and function components:** Manage state with `use_state`, side effects with `use_effect`, and navigation with `use_navigation`, all through one consistent pattern.\n- **`style` prop:** Pass all visual and layout properties through a single `style` dict, composable via `StyleSheet`.\n- **Cross-platform flexbox engine:** A pure-Python, Yoga-style layout engine computes frames once and applies them to native views, so `flex`, `padding`, `aspect_ratio`, and `position: \"absolute\"` produce the same geometry on Android and iOS.\n- **Virtual view tree + reconciler:** Element trees are diffed and patched with minimal native mutations, similar to React's reconciliation.\n- **Direct native bindings:** Python calls platform APIs directly through Chaquopy and rubicon-objc, with no JavaScript bridge.\n- **CLI scaffolding:** `pn init` creates a ready-to-run project; `pn run android` and `pn run ios` build and launch your app.\n- **Native-backed navigation:** Declarative `Stack`, `Tab`, and `Drawer` navigators inspired by React Navigation. The root stack drives the platform's native navigation controller (`UINavigationController` on iOS, AndroidX Navigation Component on Android), so transitions, back gestures, and the hardware back button match what users expect.\n- **Fast Refresh hot reload:** `pn run --hot-reload` watches `app/` and patches edits into the running app on save, preserving component state across most changes.\n- **Bundled templates:** Android Gradle and iOS Xcode templates are included, so scaffolding requires no network access.\n\n## Quick Start\n\n### Installation\n\n```bash\npip install pythonnative\n```\n\n### Usage\n\n```python\nimport pythonnative as pn\n\n\n@pn.component\ndef App():\n    count, set_count = pn.use_state(0)\n    return pn.Column(\n        pn.Text(f\"Count: {count}\", style={\"font_size\": 24}),\n        pn.Button(\n            \"Tap me\",\n            on_click=lambda: set_count(count + 1),\n        ),\n        style={\"spacing\": 12, \"padding\": 16},\n    )\n```\n\n## Documentation\n\nVisit [docs.pythonnative.com](https://docs.pythonnative.com/) for the full documentation, including getting started guides, platform-specific instructions for Android and iOS, API reference, and working examples.\n\n## Contributing\n\nContributions are welcome. Please see [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions, coding standards, and guidelines for submitting pull requests.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpythonnative%2Fpythonnative","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpythonnative%2Fpythonnative","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpythonnative%2Fpythonnative/lists"}