Skip to main content

Cross-platform native UI toolkit for Android and iOS

Project description

PythonNative

Build native Android and iOS apps in Python.

CI Release PyPI Version Python Versions License: MIT Docs

Documentation · Getting Started · Examples · Contributing


Overview

PythonNative 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.

Features

  • Declarative UI: Describe what your UI should look like with element functions (Text, Button, Column, Row, etc.). PythonNative creates and updates native views automatically.
  • Hooks and function components: Manage state with use_state, side effects with use_effect, and navigation with use_navigation, all through one consistent pattern.
  • style prop: Pass all visual and layout properties through a single style dict, composable via StyleSheet.
  • Virtual view tree + reconciler: Element trees are diffed and patched with minimal native mutations, similar to React's reconciliation.
  • Direct native bindings: Python calls platform APIs directly through Chaquopy and rubicon-objc, with no JavaScript bridge.
  • CLI scaffolding: pn init creates a ready-to-run project; pn run android and pn run ios build and launch your app.
  • Navigation: Push and pop screens with argument passing via the use_navigation() hook.
  • Bundled templates: Android Gradle and iOS Xcode templates are included, so scaffolding requires no network access.

Quick Start

Installation

pip install pythonnative

Usage

import pythonnative as pn


@pn.component
def MainPage():
    count, set_count = pn.use_state(0)
    return pn.Column(
        pn.Text(f"Count: {count}", style={"font_size": 24}),
        pn.Button(
            "Tap me",
            on_click=lambda: set_count(count + 1),
        ),
        style={"spacing": 12, "padding": 16},
    )

Documentation

Visit docs.pythonnative.com for the full documentation, including getting started guides, platform-specific instructions for Android and iOS, API reference, and working examples.

Contributing

Contributions are welcome. Please see CONTRIBUTING.md for setup instructions, coding standards, and guidelines for submitting pull requests.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pythonnative-0.9.0.tar.gz (182.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pythonnative-0.9.0-py3-none-any.whl (185.3 kB view details)

Uploaded Python 3

File details

Details for the file pythonnative-0.9.0.tar.gz.

File metadata

  • Download URL: pythonnative-0.9.0.tar.gz
  • Upload date:
  • Size: 182.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythonnative-0.9.0.tar.gz
Algorithm Hash digest
SHA256 44bff0a61369fab565d29a4bd0cef288b0ce3e2784904c03683702b85a5b1949
MD5 be509d28550b2a18e77ddd21723d0333
BLAKE2b-256 49078bbfc5c6c9b4062b4c05204a3fd5b12f78a8b8669b59f3f3d8363d8a0694

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythonnative-0.9.0.tar.gz:

Publisher: release.yml on pythonnative/pythonnative

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pythonnative-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: pythonnative-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 185.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythonnative-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c20e285515bec2140370cd51bec05a9398589615abc03f49c56f397b228b363b
MD5 6b86553d1907487761d16a0ca63a3e61
BLAKE2b-256 ee1ba2a127e997c837b646fe02e436d82b47fa815e4a01ded066a8ff0f74cae0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythonnative-0.9.0-py3-none-any.whl:

Publisher: release.yml on pythonnative/pythonnative

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page