One link for users and AI
Build PythonIDE Mini Apps and Widgets with documented APIs.
This page is generated from the same AppUI, Widget, Native, scene, and ui facts used by the app docs. Send this URL to ChatGPT, Claude, Gemini, or another AI and ask it to generate PythonIDE code.
Send This To AI
Copy this prompt when users want an external AI to generate a Mini App, widget, scene script, or ui script.
Quick Starts
Mini App
Use appui for interactive native UI.
Widget
Use widget for iOS Home Screen widgets.
Native
Use only modules listed in the native schema.
Mini App / AppUI
import appui
state = appui.State(count=0)
def increase():
state.batch_update(count=state.count + 1)
def body(view_state):
return appui.NavigationStack(
appui.VStack([
appui.Text("Mini App").font("title2").bold(),
appui.Text(f"Count: {view_state.count}").font("title3"),
appui.Button("Increase", action=increase).button_style("bordered_prominent"),
], spacing=16).padding()
).navigation_title("Counter")
appui.run(body, state=state)
Widget
import widget
w = widget.Widget(background="#101820", padding=16)
w.text("PythonIDE", size=18, weight="bold", color="#ffffff")
w.spacer(6)
w.metric("Scripts", "24", unit="ready", tone="accent")
w.progress(0.72, color="#34d399")
w.render()
iOS Native Capabilities
Native modules are permission-aware. AI should check permissions and failure states before generating code that touches user data or device sensors.
| Module | Category | Permissions | Capabilities | User action |
|---|---|---|---|---|
avplayer | mediaVision | None | audio_video_load, playback_control, native_player | Yes |
background | networkData | None | background_task, remaining_time, app_state | Yes |
biometric | deviceSensors | biometric | face_id, touch_id, passcode_fallback | Yes |
bluetooth | networkData | bluetooth | ble_scan, ble_connect, read, write | Yes |
c_extensions | networkData | None | bundled_extension_inventory, ios_compatibility_guidance | No |
calendar_events | systemServices | calendar, reminders | calendar_read, calendar_write, reminders | Yes |
clipboard | systemServices | None | read_clipboard, write_clipboard, clear_clipboard | Yes |
console | systemServices | None | hud, alerts, input_dialogs | Yes |
contacts | systemServices | contacts | contacts_read, contacts_picker, contacts_edit | Yes |
coreml | mediaVision | None | model_listing, model_loading, image_prediction | No |
database | systemServices | None | sqlite, collections, transactions | No |
device | deviceSensors | None | device_state, screen, battery, thermal_state | No |
dialogs | systemServices | None | native_dialogs, forms, pickers | Yes |
haptics | deviceSensors | None | impact_feedback, notification_feedback, core_haptics | Yes |
health | deviceSensors | health | steps, heart_rate, sleep, body_metrics | Yes |
keyboard | automationExtensions | None | toolbar_buttons, insert_text, set_buttons | Yes |
keychain | systemServices | None | secure_password_storage, service_listing | No |
live_activity | systemServices | None | dynamic_island, lock_screen_activity | Yes |
location | deviceSensors | location | gps, heading, geocoding | Yes |
motion | deviceSensors | motion | accelerometer, gyroscope, attitude, barometer | Yes |
network | networkData | None | http, download, connectivity | No |
nfc | systemServices | nfc | ndef_scan, ndef_write | Yes |
notification | systemServices | notifications | local_notifications, badges, scheduled_alerts | Yes |
objc_util | automationExtensions | None | objective_c_runtime, framework_bridge | No |
permission | systemServices | biometric, bluetooth, calendar, camera, contacts, health, location, microphone, motion, nfc, notifications, photos, reminders, speech | permission_status, permission_request | Yes |
photos | mediaVision | photos, camera | photo_picker, camera_capture, photo_save, asset_read | Yes |
shortcuts | automationExtensions | None | run_shortcut, open_url, open_settings | Yes |
sound | mediaVision | None | sound_effects, audio_player | Yes |
speech | mediaVision | speech | text_to_speech, voice_listing | Yes |
storage | systemServices | None | user_defaults, json_values | No |
vision | mediaVision | None | ocr | No |
vision_helper | mediaVision | None | face_detection, barcode_detection, rectangle_detection, classification | No |
websocket | networkData | None | websocket_connect, send, receive, close | No |
Native module public API names
avplayer
avplayer.Playeravplayer.loadavplayer.playavplayer.pauseavplayer.stopavplayer.seekavplayer.durationavplayer.current_timeavplayer.is_playingavplayer.set_volumeavplayer.set_rateavplayer.present_videoavplayer.on_progressavplayer.stop_progressavplayer.on_endavplayer.cleanupbackground
background.begin_taskbackground.end_taskbackground.remaining_timebackground.app_statebackground.start_keep_alivebackground.stop_keep_alivebackground.schedule_refreshbackground.schedule_processingbiometric
biometric.biometric_typebiometric.is_availablebiometric.authenticatebiometric.authenticate_with_passcodebluetooth
bluetooth.statebluetooth.scanbluetooth.stop_scanbluetooth.connectbluetooth.disconnectbluetooth.discover_servicesbluetooth.readbluetooth.writec_extensions
calendar_events
calendar_events.authorization_statuscalendar_events.request_accesscalendar_events.get_calendarscalendar_events.get_eventscalendar_events.create_eventcalendar_events.delete_eventcalendar_events.request_reminder_accesscalendar_events.get_reminderscalendar_events.create_remindercalendar_events.complete_remindercalendar_events.delete_reminderclipboard
clipboard.getclipboard.setclipboard.clearclipboard.get_textclipboard.set_textconsole
console.alertconsole.hud_alertconsole.input_alertconsole.login_alertconsole.password_alertconsole.set_colorconsole.set_fontconsole.clearconsole.write_linkcontacts
contacts.PERSONcontacts.ORGANIZATIONcontacts.ContactsErrorcontacts.Personcontacts.Groupcontacts.Containercontacts.PropertySelectioncontacts.authorization_statuscontacts.capabilitiescontacts.is_authorizedcontacts.request_accesscontacts.get_all_peoplecontacts.get_personcontacts.get_mecontacts.findcontacts.find_by_phonecontacts.find_by_emailcontacts.add_personcontacts.remove_personcontacts.savecontacts.revertcontacts.get_all_groupscontacts.get_groupcontacts.add_groupcontacts.remove_groupcontacts.get_all_containerscontacts.get_default_containercontacts.get_people_in_groupcontacts.get_people_in_containercontacts.get_groups_in_containercontacts.pick_contactcontacts.pick_contactscontacts.pick_propertycontacts.show_personcontacts.edit_personcontacts.new_personcontacts.export_vcardscontacts.import_vcardscontacts.get_change_historycontacts.manage_limited_accesscontacts.localized_labelcoreml
coreml.list_modelscoreml.load_modelcoreml.predict_imagecoreml.model_infodatabase
database.Databasedatabase.Collectiondatabase.opendatabase.connectdatabase.default_databasedatabase.collectiondatabase.database_pathdevice
device.namedevice.modeldevice.system_namedevice.system_versiondevice.identifier_for_vendordevice.battery_leveldevice.battery_statedevice.orientationdevice.screen_widthdevice.screen_heightdevice.screen_sizedevice.screen_scaledevice.screen_brightnessdevice.set_screen_brightnessdevice.total_memorydevice.processor_countdevice.system_uptimedevice.thermal_statedevice.is_low_power_modedevice.localedevice.timezonedevice.preferred_languagesdialogs
dialogs.alertdialogs.input_alertdialogs.list_dialogdialogs.form_dialogdialogs.date_dialogdialogs.hud_alertdialogs.editorhaptics
haptics.impacthaptics.notificationhaptics.selectionhaptics.successhaptics.warninghaptics.errorhaptics.lighthaptics.mediumhaptics.heavyhaptics.is_supportedhaptics.playhaptics.stophealth
health.is_availablehealth.request_authorizationhealth.authorization_statushealth.query_stepshealth.query_heart_ratehealth.query_weighthealth.save_weighthealth.query_workoutshealth.query_sleephealth.query_quantityhealth.query_blood_pressurehealth.summarize_blood_pressurekeyboard
keyboard.add_buttonkeyboard.add_groupkeyboard.remove_buttonkeyboard.clearkeyboard.insert_textkeyboard.insert_snippetkeyboard.move_cursorkeyboard.Buttonkeyboard.set_buttonskeychain
keychain.get_passwordkeychain.set_passwordkeychain.delete_passwordkeychain.get_serviceslive_activity
live_activity.startlive_activity.updatelive_activity.endlive_activity.is_supportedlocation
location.authorization_statuslocation.is_authorizedlocation.request_accesslocation.start_updateslocation.stop_updateslocation.get_locationlocation.start_headinglocation.stop_headinglocation.get_headinglocation.reverse_geocodelocation.geocodemotion
motion.is_availablemotion.start_updatesmotion.stop_updatesmotion.start_accelerometermotion.stop_accelerometermotion.start_gyroscopemotion.stop_gyroscopemotion.start_magnetometermotion.stop_magnetometermotion.start_altimetermotion.stop_altimetermotion.get_accelerationmotion.get_gravitymotion.get_rotation_ratemotion.get_magnetic_fieldmotion.get_attitudemotion.get_altitudenetwork
network.is_connectednetwork.connection_typenetwork.is_expensivenetwork.is_constrainednetwork.requestnetwork.getnetwork.postnetwork.putnetwork.deletenetwork.patchnetwork.downloadnetwork.Responsenfc
nfc.is_availablenfc.scannfc.writenotification
notification.request_permissionnotification.authorization_statusnotification.schedulenotification.schedule_at_datenotification.remove_pendingnotification.remove_all_pendingnotification.pending_countnotification.pending_identifiersnotification.set_badgeobjc_util
objc_util.cobjc_util.LP64objc_util.CGFloatobjc_util.NSIntegerobjc_util.NSUIntegerobjc_util.NSNotFoundobjc_util.NSUTF8StringEncodingobjc_util.NS_UTF8objc_util.CGPointobjc_util.CGSizeobjc_util.CGVectorobjc_util.CGRectobjc_util.CGAffineTransformobjc_util.UIEdgeInsetsobjc_util.NSRangeobjc_util.selobjc_util.ObjCClassobjc_util.ObjCInstanceobjc_util.ObjCClassMethodobjc_util.ObjCInstanceMethodobjc_util.NSObjectobjc_util.NSArrayobjc_util.NSMutableArrayobjc_util.NSDictionaryobjc_util.NSMutableDictionaryobjc_util.NSSetobjc_util.NSMutableSetobjc_util.NSStringobjc_util.NSMutableStringobjc_util.NSDataobjc_util.NSMutableDataobjc_util.NSNumberobjc_util.NSURLobjc_util.NSEnumeratorobjc_util.NSThreadobjc_util.NSBundleobjc_util.UIColorobjc_util.UIImageobjc_util.UIBezierPathobjc_util.UIApplicationobjc_util.UIViewobjc_util.ObjCBlockobjc_util.nsobjc_util.nsurlobjc_util.retain_globalobjc_util.release_globalobjc_util.on_main_threadobjc_util.create_objc_classobjc_util.Structureobjc_util.sizeofobjc_util.byrefobjc_util.c_void_pobjc_util.c_charobjc_util.c_byteobjc_util.c_char_pobjc_util.c_doubleobjc_util.c_floatobjc_util.c_intobjc_util.c_longlongobjc_util.c_shortobjc_util.c_boolobjc_util.c_longobjc_util.c_int32objc_util.c_ubyteobjc_util.c_uintobjc_util.c_ushortobjc_util.c_ulongobjc_util.c_ulonglongobjc_util.POINTERobjc_util.pointerobjc_util.load_frameworkobjc_util.nsdata_to_bytesobjc_util.uiimage_to_pngobjc_util.autoreleasepoolpermission
permission.statuspermission.requestpermission.status_allpermission.MODULESphotos
photos.pick_imagephotos.capture_imagephotos.save_imagephotos.get_assetsphotos.pick_assetphotos.get_imagephotos.Assetphotos.AssetCollectionphotos.get_albumsphotos.get_smart_albumsphotos.get_momentsphotos.create_albumphotos.get_screenshots_albumphotos.get_recently_added_albumphotos.get_selfies_albumphotos.pick_image_base64photos.capture_image_base64photos.image_to_base64photos.base64_to_imagephotos.get_favoritesphotos.get_countphotos.get_recent_imagesphotos.get_image_sizephotos.get_metadataphotos.is_availableshortcuts
shortcuts.run_shortcutshortcuts.open_urlshortcuts.open_settingssound
sound.play_effectsound.stop_effectsound.stop_all_effectssound.Playersound.MIDIPlayersound.set_volumesound.set_honors_silent_switchsound.get_volumespeech
speech.sayspeech.stopspeech.pausespeech.resumespeech.is_speakingspeech.available_voicesstorage
storage.getstorage.setstorage.get_intstorage.set_intstorage.get_floatstorage.set_floatstorage.get_boolstorage.set_boolstorage.get_jsonstorage.set_jsonstorage.removestorage.has_keystorage.all_keysvision
vision.setup_vision_frameworkvision.is_vision_availablevision.recognize_text_from_image_datavision_helper
vision_helper.setup_vision_frameworkvision_helper.is_vision_availablevision_helper.detect_facesvision_helper.detect_face_landmarksvision_helper.detect_barcodesvision_helper.classify_imagevision_helper.detect_rectanglesvision_helper.async_requestvision_helper.poll_resultwebsocket
websocket.connectwebsocket.WebSocketComplete Public API Surface
Search the generated API surface. Internal and agent-hidden names are excluded from new AI output; widget compatibility names are listed separately.
AppUI functions, views, helpers, and modifiers
Functions and views
| API | Kind | Signature |
|---|---|---|
adaptive | function | adaptive(minimum: float = 50, maximum: Optional[float] = None) -> Dict[str, Any] |
animate | function | animate(action: Callable[[], None], type: str = 'default') -> None |
auto_refresh | function | auto_refresh(interval: float = 1.0) -> None |
bind | function | bind(state: Union[State, ReactiveState], field_name: str) -> Dict[str, Any] |
call_native | function | call_native(function_name: str, **kwargs: Any) -> None |
computed | function | computed(state: Union[State, ReactiveState], depends_on: List[str]) -> Callable |
custom_font | function | custom_font(name: str, size: float = 17) -> str |
dismiss | function | dismiss() -> None |
dynamic | function | dynamic(func: Callable[[], Any], value_type: str = 'auto') -> Any |
effect | function | effect(state: Union[State, ReactiveState], depends_on: List[str]) -> Callable |
fixed | function | fixed(size: float) -> Dict[str, Any] |
flexible | function | flexible(minimum: float = 10, maximum: Optional[float] = None) -> Dict[str, Any] |
get_native_lib | function | get_native_lib() -> Optional[ctypes.CDLL] |
grid_item | function | grid_item(type: str = 'flexible', minimum: Optional[float] = None, maximum: Optional[float] = None, count: Optional[int] = None) -> Dict[str, Any] |
preload | function | preload() -> None |
run | function | run(body_func: Optional[Union[Callable[[], View], Callable[[Union[State, ReactiveState, None]], View]]] = None, state: Optional[Union[State, ReactiveState]] = None, hot_reload: bool = False, presentation: str = 'sheet', body: Optional[Union[Callable[[], View], Callable[[Union[State, ReactiveState, None]], View]]] = None) -> None |
set_custom_prop | function | set_custom_prop(view_or_handle: Any, prop_name: str, value: Any) -> None |
Alert | presentation | Alert(title: str = '', message: Optional[str] = None, is_presented: bool = False, actions: Optional[List[View]] = None, isPresented: Optional[bool] = None) |
AsyncImage | media | AsyncImage(url: str = '', placeholder: Optional[View] = None, error_view: Optional[View] = None, content_mode: str = 'fit', on_success: Optional[Callable] = None, on_failure: Optional[Callable] = None) |
AttributedText | text | AttributedText(spans: Optional[List[Dict[str, Any]]] = None) |
Badge | presentation | Badge(count: Optional[int] = None, text: Optional[str] = None) |
Button | control | Button(title: Optional[Union[str, View]] = None, action: Optional[Callable] = None, role: Optional[str] = None, content: Optional[ViewChild] = None) |
CameraPicker | media | CameraPicker(source: str = 'camera', media_type: str = 'photo', on_captured: Optional[Callable] = None, label: Optional[View] = None, mediaType: Optional[str] = None, onCaptured: Optional[Callable] = None, **kwargs: Any) |
Canvas | drawing | Canvas(width: float = 300, height: float = 300, commands: Optional[List[Dict[str, Any]]] = None, context: Optional[DrawingContext] = None) |
Capsule | shape | Capsule() |
Chart | media | Chart(data: Optional[List[Dict[str, Any]]] = None, x: str = 'x', y: str = 'y', type: str = 'bar', color: Optional[ColorLike] = None, series: Optional[str] = None) |
Circle | shape | Circle() |
CloseButton | control | CloseButton(title: str = '', system_image: str = 'xmark', systemImage: Optional[str] = None) |
Color | shape | Color(value: Optional[ColorLike] = None, red: Optional[float] = None, green: Optional[float] = None, blue: Optional[float] = None, opacity: float = 1.0) |
ColorPicker | control | ColorPicker(label: str = '', selection: Optional[str] = None, on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
ConfirmationDialog | presentation | ConfirmationDialog(title: str = '', message: Optional[str] = None, is_presented: bool = False, actions: Optional[List[View]] = None, isPresented: Optional[bool] = None) |
ContentUnavailableView | presentation | ContentUnavailableView(title: str = '', system_image: Optional[str] = None, description: Optional[str] = None, systemImage: Optional[str] = None) |
ControlGroup | control | ControlGroup(label: str = '', content: Optional[List[View]] = None, children: Optional[List[View]] = None) |
DatePicker | control | DatePicker(label: str = '', selection: Optional[str] = None, components: str = 'date', on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
DisclosureGroup | collection | DisclosureGroup(label: str = '', is_expanded: Optional[bool] = None, content: Optional[ViewChild] = None, isExpanded: Optional[bool] = None, children: Optional[ViewChild] = None) |
Divider | layout | Divider() |
EditButton | control | EditButton() |
Ellipse | shape | Ellipse() |
FileImporter | media | FileImporter(allowed_types: Optional[Union[str, Sequence[str]]] = None, allows_multiple: bool = False, copy: bool = True, on_picked: Optional[Callable] = None, label: Optional[View] = None, allowedTypes: Optional[Union[str, Sequence[str]]] = None, allowsMultiple: Optional[bool] = None, onPicked: Optional[Callable] = None, **kwargs: Any) |
ForEach | collection | ForEach(data: Any, row_builder: Optional[Callable] = None, key: Optional[Callable] = None, rowBuilder: Optional[Callable] = None, content: Optional[Callable] = None) |
Form | collection | Form(content: Optional[List[View]] = None) |
Gauge | feedback | Gauge(value: float = 0.0, min_value: float = 0.0, max_value: float = 1.0, label: str = '', minValue: Optional[float] = None, maxValue: Optional[float] = None) |
GeometryReader | layout | GeometryReader(content: Optional[ViewChild] = None, on_change: Optional[Callable] = None, onChange: Optional[Callable] = None, children: Optional[ViewChild] = None, on_geometry: Optional[Callable] = None, onGeometry: Optional[Callable] = None) |
Grid | layout | Grid(content: Optional[List[View]] = None, alignment: str = 'center', horizontal_spacing: Optional[float] = None, vertical_spacing: Optional[float] = None, horizontalSpacing: Optional[float] = None, verticalSpacing: Optional[float] = None) |
GridRow | layout | GridRow(content: Optional[List[View]] = None, alignment: Optional[str] = None) |
Group | layout | Group(content: Optional[List[View]] = None) |
GroupBox | collection | GroupBox(label: Optional[str] = None, content: Optional[ViewChild] = None, children: Optional[List[View]] = None) |
HStack | layout | HStack(content: Optional[List[View]] = None, alignment: str = 'center', spacing: Optional[float] = None) |
Image | media | Image(name: Optional[str] = None, system_name: Optional[str] = None, systemName: Optional[str] = None) |
InlinePickerStyle | control | InlinePickerStyle(options: Optional[List[str]] = None, selection: Optional[str] = None, on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
Label | text | Label(title: str = '', system_image: Optional[str] = None, image: Optional[str] = None, systemImage: Optional[str] = None) |
LabeledContent | collection | LabeledContent(label: str = '', value: Optional[str] = None, content: Optional[View] = None) |
LazyHGrid | layout | LazyHGrid(rows: Optional[List[dict]] = None, content: Optional[List[View]] = None, spacing: Optional[float] = None, children: Optional[List[View]] = None) |
LazyHStack | layout | LazyHStack(content: Optional[List[View]] = None, alignment: str = 'center', spacing: Optional[float] = None) |
LazyVGrid | layout | LazyVGrid(columns: Optional[List[dict]] = None, content: Optional[List[View]] = None, spacing: Optional[float] = None, children: Optional[List[View]] = None) |
LazyVStack | layout | LazyVStack(content: Optional[List[View]] = None, alignment: str = 'center', spacing: Optional[float] = None) |
Link | control | Link(title: str = '', url: str = '') |
List | collection | List(content: Optional[List[View]] = None) |
MapView | media | MapView(latitude: float = 37.7749, longitude: float = -122.4194, span: float = 0.05, markers: Optional[List[Dict[str, Any]]] = None, map_style: str = 'automatic', mapStyle: Optional[str] = None) |
Menu | control | Menu(title: str = '', content: Optional[List[View]] = None, children: Optional[List[View]] = None) |
MultiDatePicker | control | MultiDatePicker(title: str = '', on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
NavigationLink | navigation | NavigationLink(title: Optional[str] = None, destination: Optional[View] = None, label: Optional[View] = None) |
NavigationSplitView | navigation | NavigationSplitView(sidebar: Optional[View] = None, detail: Optional[View] = None, supplementary: Optional[View] = None, column_visibility: str = 'all') |
NavigationStack | navigation | NavigationStack(content: Optional[View] = None, path: Optional[NavigationPath] = None, destinations: Optional[Dict[str, Callable]] = None) |
Overlay | layout | Overlay(content: Optional[View] = None, overlay: Optional[View] = None, alignment: str = 'center') |
PasteButton | control | PasteButton(on_paste: Optional[Callable] = None, onPaste: Optional[Callable] = None) |
Path | drawing | Path(commands: Optional[List[Dict[str, Any]]] = None, fill: Optional[ColorLike] = None, stroke: Optional[ColorLike] = None, line_width: Optional[float] = None) |
PhotoPicker | media | PhotoPicker(selection_limit: int = 1, filter: str = 'images', on_picked: Optional[Callable] = None, label: Optional[View] = None, selectionLimit: Optional[int] = None, onPicked: Optional[Callable] = None, **kwargs: Any) |
Picker | control | Picker(label: str = '', selection: Optional[str] = None, options: Optional[List[str]] = None, on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
Popover | presentation | Popover(is_presented: bool = False, content: Optional[View] = None, trigger: Optional[View] = None, isPresented: Optional[bool] = None) |
ProgressView | feedback | ProgressView(label: Optional[str] = None, value: Optional[float] = None, total: float = 1.0) |
Rectangle | shape | Rectangle() |
Refreshable | collection | Refreshable(on_refresh: Optional[Callable] = None, onRefresh: Optional[Callable] = None, content: Optional[ViewChild] = None) |
RenameButton | control | RenameButton(action: Optional[Callable] = None) |
RoundedRectangle | shape | RoundedRectangle(corner_radius: float = 10, cornerRadius: Optional[float] = None) |
SafeAreaInset | layout | SafeAreaInset(edge: str = 'bottom', content: Optional[View] = None) |
ScrollView | layout | ScrollView(content: Optional[ViewChild] = None, axes: str = 'vertical', shows_indicators: bool = True, showsIndicators: Optional[bool] = None) |
ScrollViewReader | layout | ScrollViewReader(content: Optional[ViewChild] = None, axes: str = 'vertical', shows_indicators: bool = True, scroll_to: Optional[str] = None, anchor: str = 'top', showsIndicators: Optional[bool] = None, scrollTo: Optional[str] = None, children: Optional[ViewChild] = None) |
SearchField | control | SearchField(text: str = '', placeholder: str = 'Search', on_change: Optional[Callable] = None, onChange: Optional[Callable] = None, on_submit: Optional[Callable] = None, onSubmit: Optional[Callable] = None) |
Section | collection | Section(content: Optional[ViewChild] = None, *, header: Optional[Union[str, View]] = None, footer: Optional[Union[str, View]] = None, children: Optional[ViewChild] = None) |
SecureField | control | SecureField(placeholder: str = '', text: str = '', on_change: Optional[Callable] = None, on_submit: Optional[Callable] = None, onChange: Optional[Callable] = None, onSubmit: Optional[Callable] = None) |
SegmentedControl | control | SegmentedControl(options: Optional[List[str]] = None, selection: Optional[str] = None, on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
ShareLink | control | ShareLink(item: str = '', subject: Optional[str] = None, message: Optional[str] = None) |
SignInWithAppleButton | control | SignInWithAppleButton(type: str = 'signIn', on_complete: Optional[Callable] = None, onComplete: Optional[Callable] = None) |
Slider | control | Slider(value: float = 0.0, minimum: float = 0.0, maximum: float = 1.0, step: Optional[float] = None, label: str = '', on_change: Optional[Callable] = None, onChange: Optional[Callable] = None, min_value: Optional[float] = None, max_value: Optional[float] = None, minValue: Optional[float] = None, maxValue: Optional[float] = None) |
Spacer | layout | Spacer(min_length: Optional[float] = None, minLength: Optional[float] = None) |
Stepper | control | Stepper(label: str = '', value: int = 0, minimum: int = 0, maximum: int = 100, step: int = 1, on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
SwipeActions | collection | SwipeActions(content: Optional[View] = None, leading: Optional[List[View]] = None, trailing: Optional[List[View]] = None) |
Tab | navigation | Tab(title: str = '', system_image: Optional[str] = None, image: Optional[str] = None, content: Optional[View] = None, badge: Optional[int] = None, tag: Optional[int] = None, systemImage: Optional[str] = None, role: Optional[str] = None) |
TabView | navigation | TabView(tabs: Optional[List["Tab"]] = None, selection: Optional[int] = None, on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
Table | collection | Table(data: Optional[List[Dict[str, Any]]] = None, columns: Optional[List[Dict[str, str]]] = None, on_select: Optional[Callable] = None, onSelect: Optional[Callable] = None) |
Text | text | Text(content: str = '') |
TextEditor | control | TextEditor(text: str = '', on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
TextField | control | TextField(placeholder: str = '', text: str = '', on_change: Optional[Callable] = None, on_submit: Optional[Callable] = None, keyboard_type: Optional[str] = None, autocapitalization: Optional[str] = None, autocorrection_disabled: bool = False, submit_label: Optional[str] = None, onChange: Optional[Callable] = None, onSubmit: Optional[Callable] = None, keyboardType: Optional[str] = None, autoCapitalization: Optional[str] = None, autocorrectionDisabled: Optional[bool] = None, submitLabel: Optional[str] = None, value: Optional[str] = None, **kwargs: Any) |
TextFieldLink | control | TextFieldLink(title: str = '', prompt: str = '', on_submit: Optional[Callable] = None, onSubmit: Optional[Callable] = None) |
TimelineView | feedback | TimelineView(interval: float = 1.0, content: Optional[View] = None) |
Toggle | control | Toggle(label: str = '', is_on: bool = False, on_change: Optional[Callable] = None, isOn: Optional[bool] = None, onChange: Optional[Callable] = None, value: Optional[bool] = None) |
ToolbarItem | presentation | ToolbarItem(placement: str = 'automatic', content: Optional[View] = None, role: Optional[str] = None) |
ToolbarSpacer | presentation | ToolbarSpacer(sizing: str = 'fixed', placement: str = 'automatic') |
VStack | layout | VStack(content: Optional[List[View]] = None, alignment: str = 'center', spacing: Optional[float] = None) |
VideoPlayer | media | VideoPlayer(url: str = '', autoplay: bool = False, loop: bool = False, show_controls: bool = True, presentation: str = 'inline', allows_fullscreen: bool = True, allows_pip: bool = True, allows_airplay: bool = True, video_gravity: str = 'resizeAspect', enters_fullscreen_when_playback_begins: bool = False, exits_fullscreen_when_playback_ends: bool = True, showControls: Optional[bool] = None, allowsFullscreen: Optional[bool] = None, allowsPiP: Optional[bool] = None, allowsPictureInPicture: Optional[bool] = None, allowsAirPlay: Optional[bool] = None, videoGravity: Optional[str] = None, entersFullscreenWhenPlaybackBegins: Optional[bool] = None, exitsFullscreenWhenPlaybackEnds: Optional[bool] = None, allows_picture_in_picture: Optional[bool] = None, player: Optional[PlayerController] = None, player_id: Optional[str] = None, pause_on_disappear: Optional[bool] = None) |
ViewThatFits | layout | ViewThatFits(content: Optional[List[View]] = None) |
WebView | media | WebView(url: Optional[str] = None, html: Optional[str] = None) |
WheelPicker | control | WheelPicker(options: Optional[List[str]] = None, selection: Optional[str] = None, on_change: Optional[Callable] = None, onChange: Optional[Callable] = None) |
ZStack | layout | ZStack(content: Optional[List[View]] = None, alignment: str = 'center') |
Typed helpers/classes exported by appui.pyi
DrawingContextNavigationPathObservableDictObservableListPersistentStatePlayerControllerPropReactiveStateRefStateTimerViewinfinityView modifiers
.accessibility_hidden.accessibility_label.alert.alignment_guide.animation.aspect_ratio.background.background_extension_effect.badge.blur.bold.border.brightness.button_style.clip_shape.clipped.confirmation_dialog.container_relative_frame.content_margins.content_shape.content_transition.context_menu.contrast.corner_radius.date_picker_style.default_scroll_anchor.disabled.drawing_group.environment.fill.fixed_size.focused.font.foreground_color.foreground_style.frame.full_screen_cover.gauge_style.glass_effect.glass_effect_id.glass_effect_transition.glass_effect_union.grayscale.hidden.high_priority_gesture.id.ignores_safe_area.image_scale.inspector.italic.keyboard_dismiss.layout_priority.line_limit.list_row_background.list_row_insets.list_row_separator.list_style.mask.matched_geometry_effect.minimum_scale_factor.multiline_text_alignment.navigation_bar_back_button_hidden.navigation_bar_title_display_mode.navigation_destination.navigation_title.offset.on_appear.on_disappear.on_drag_gesture.on_drop.on_geometry.on_long_press_gesture.on_magnification_gesture.on_rotation_gesture.on_submit.on_tap_gesture.opacity.overlay.padding.phase_animator.picker_style.popover.position.progress_view_style.refreshable.resizable.rotation_3d_effect.rotation_effect.safe_area_bar.safe_area_inset.saturation.scale_effect.scroll_clip_disabled.scroll_content_background.scroll_edge_effect_hidden.scroll_edge_effect_style.scroll_position.scroll_target_behavior.scroll_target_layout.scroll_transition.search_toolbar_behavior.searchable.sensory_feedback.shadow.sheet.simultaneous_gesture.strikethrough.stroke.submit_label.swipe_actions.symbol_effect.symbol_rendering_mode.tab_bar_minimize_behavior.tab_view_bottom_accessory.tab_view_search_activation.tab_view_style.task.text_field_style.tint.toggle_style.toolbar.toolbar_background.toolbar_color_scheme.transition.truncation_mode.underline.z_indexWidget functions, Widget methods, nodes, modifiers
| API | Kind | Signature |
|---|---|---|
widget.agent_schema | helper | agent_schema() |
widget.cache_json | helper | cache_json(url, *, ttl=3600, default=None, params=None, headers=None, key=None, timeout=8) |
widget.family_value | helper | family_value(default=None, **values) |
widget.history | helper | history(key, value=None, limit=7, *, bucket="day", default=None) |
widget.save_image | helper | save_image(source, name) |
widget.validate_layout | helper | validate_layout(layout, family=None) |
Widget.background | layout.background | background(value) |
Widget.background_image | layout.backgroundImage | background_image(asset, content_mode="fill", dim=None, scrim=None, scrim_opacity=None, focal="center", overlay_color="#000000") |
Widget.badge | text | badge(text, icon=None, tone="accent", style="plain") |
Widget.bar | barChart | bar(data, labels=None, colors=None) |
Widget.body | text | body(content) |
Widget.button | button | button(title, action=None, url=None, color=None, background=None, size=None, padding=None) |
Widget.canvas | canvas | canvas(height=None, coordinate_space="relative", align="center", background=None, padding=None, corner_radius=None, border_color=None, border_width=None, opacity=None, frame=None) |
Widget.caption | text | caption(content) |
Widget.change | text | change(primary, secondary=None, direction=None) |
Widget.column | vstack | column(spacing=None, align=None) |
Widget.date | timer | date(target=None, style="date") |
Widget.divider | divider | divider(color=None, opacity=None) |
Widget.grid | grid | grid(columns=2) |
Widget.image | image | image(name, width=None, height=None, corner_radius=None, opacity=None, padding=None, content_mode=None) |
Widget.layer | zstack | layer(align="center", padding=None, background=None, corner_radius=None) |
Widget.line | lineChart | line(data, labels=None, colors=None) |
Widget.link | text | link(title, url, icon=None, color=None) |
Widget.list | vstack | list(items, title=None, limit=None, empty_text=None, dividers=False) |
Widget.metric | hstack | metric(label, value, unit=None, icon=None, tone=None, style="plain") |
Widget.path | path | path(points, stroke=None, fill=None, line_width=None, closed=False, height=None, coordinate_space="relative", opacity=None, padding=None, frame=None) |
Widget.progress | progress | progress(value, total=1.0, color=None, height=None, track_color=None) |
Widget.region | vstack | region(slot="center", spacing=None, align=None) |
Widget.relative_time | timer | relative_time(target=None) |
Widget.render | lifecycle | render(url=None) |
Widget.rich_text | richText | rich_text(parts, size=None, weight=None, color=None, align=None, max_lines=None, design=None, font_width=None, opacity=None, padding=None, frame=None, minimum_scale_factor=None) |
Widget.ring | ringChart | ring(value, total=1.0, label=None) |
Widget.row | hstack | row(spacing=None, align=None) |
Widget.section | vstack | section(title=None, spacing=None, subtitle=None, style=None) |
Widget.shape | shape | shape(kind="rectangle", color=None, width=None, height=None, size=None, corner_radius=None, opacity=None, padding=None, frame=None, border_color=None, border_width=None, shadow_color=None, shadow_radius=None, shadow_x=0, shadow_y=2) |
Widget.spacer | spacer | spacer(length=None) |
Widget.surface | card | surface(role="panel", spacing=None, align=None, padding=None, background=None, corner_radius=None, border_color=None, border_width=None, shadow_color=None, shadow_radius=None) |
Widget.symbol | icon | symbol(name) |
Widget.text | text | text(content, size=None, weight=None, color=None, align=None, max_lines=None, design=None, font_width=None, opacity=None, padding=None, frame=None, minimum_scale_factor=None) |
Widget.time | timer | time(target=None) |
Widget.timer_text | timer | timer_text(target=None) |
Widget.title | text | title(content) |
Widget.toggle | toggle | toggle(title, is_on=False, action=None, url=None, color=None, background=None, size=None, padding=None) |
Widget.validate | lifecycle | validate(family=None) |
Widget.value | text | value(value, unit=None, subtitle=None) |
Node primitives
barChartbuttoncanvascarddivideremojigaugegridhstackiconimagelineChartpathprogressrichTextringChartshapespacersparklinetexttimertogglevstackzstackModifiers
.accessibility.align.background.bar_spacing.baseline.capsule.clip.color.compressed.corner_radius.fill.fixed_size.font.font_style.font_weight.font_width.frame.grid.guide_lines.height.hide.labels.layout_priority.line_limit.line_width.link.mask.mask_view.min_scale.monospaced.offset.opacity.overlay.overlay_view.padding.place.points.segment_colors.shadow.show.slot.soft_background.threshold.tone.track_color.widthCompatibility names kept for old scripts, not for new AI output
ui module public exports
Classes
ViewButtonLabelTextFieldTextViewImageViewSwitchSliderSegmentedControlDatePickerScrollViewCanvasViewActivityIndicatorTableViewWebViewNavigationViewButtonItemProgressViewStepperListDataSourceTableViewCellGestureRecognizerTapGestureRecognizerPanGestureRecognizerPinchGestureRecognizerSwipeGestureRecognizerLongPressGestureRecognizerGestureSenderColorFontPathGStateImageContextImagePointSizeRectTransformTouchautoreleasepoolFunctions
parse_colorparse_fontset_colorfill_rectstroke_rectdraw_stringbegin_image_contextend_image_contextget_image_from_current_contextget_screen_sizeget_window_sizeget_keyboard_frameget_ui_styleload_viewload_view_strclose_alldump_viewanimatedelaycancel_delaysin_backgroundconvert_pointconvert_rectmeasure_stringset_blend_modeset_shadowConstants
ALIGN_LEFTALIGN_CENTERALIGN_RIGHTALIGN_JUSTIFIEDALIGN_NATURALLB_WORD_WRAPLB_CHAR_WRAPLB_CLIPLB_TRUNCATE_HEADLB_TRUNCATE_TAILLB_TRUNCATE_MIDDLEKEYBOARD_DEFAULTKEYBOARD_ASCIIKEYBOARD_NUMBERSKEYBOARD_URLKEYBOARD_NUMBER_PADKEYBOARD_PHONE_PADKEYBOARD_NAME_PHONE_PADKEYBOARD_EMAILKEYBOARD_DECIMAL_PADKEYBOARD_TWITTERKEYBOARD_WEB_SEARCHBLEND_NORMALBLEND_MULTIPLYBLEND_SCREENBLEND_OVERLAYBLEND_DARKENBLEND_LIGHTENBLEND_COLOR_DODGEBLEND_COLOR_BURNBLEND_SOFT_LIGHTBLEND_HARD_LIGHTBLEND_DIFFERENCEBLEND_EXCLUSIONBLEND_HUEBLEND_SATURATIONBLEND_COLORBLEND_LUMINOSITYBLEND_CLEARBLEND_COPYBLEND_SOURCE_INBLEND_SOURCE_OUTBLEND_SOURCE_ATOPBLEND_DESTINATION_OVERBLEND_DESTINATION_INBLEND_DESTINATION_OUTBLEND_DESTINATION_ATOPBLEND_XORBLEND_PLUS_DARKERBLEND_PLUS_LIGHTERRENDERING_MODE_AUTOMATICRENDERING_MODE_ORIGINALRENDERING_MODE_TEMPLATELINE_CAP_BUTTLINE_CAP_ROUNDLINE_CAP_SQUARELINE_JOIN_MITERLINE_JOIN_ROUNDLINE_JOIN_BEVELCONTENT_SCALE_ASPECT_FITCONTENT_SCALE_ASPECT_FILLCONTENT_SCALE_TO_FILLCONTENT_REDRAWCONTENT_CENTERCONTENT_TOPCONTENT_BOTTOMCONTENT_LEFTCONTENT_RIGHTCONTENT_TOP_LEFTCONTENT_TOP_RIGHTCONTENT_BOTTOM_LEFTCONTENT_BOTTOM_RIGHTDATE_PICKER_MODE_TIMEDATE_PICKER_MODE_DATEDATE_PICKER_MODE_DATE_AND_TIMEDATE_PICKER_MODE_COUNTDOWNACTIVITY_INDICATOR_STYLE_GRAYACTIVITY_INDICATOR_STYLE_WHITEACTIVITY_INDICATOR_STYLE_WHITE_LARGEscene module public exports
Classes
SceneNodeSpriteNodeLabelNodeShapeNodeEffectNodeEmitterNodeActionTextureShaderSceneViewTouchVector2Vector3SizeRectPointEdgeInsetsPhysicsBodyPhysicsWorldContactPinJointSpringJointRopeJointFunctions
runget_screen_sizeget_screen_scalegravityplay_effectget_image_pathget_controllersget_safe_area_insetsbackgroundfillno_fillstrokeno_strokestroke_weighttintno_tintrectellipselineimagetexttranslaterotatescalepush_matrixpop_matrixblend_modeuse_shaderload_imageload_image_fileload_pil_imagerender_textunload_imageimage_quadtriangle_stripConstants
BLEND_NORMALBLEND_ADDBLEND_MULTIPLYDEFAULT_ORIENTATIONPORTRAITLANDSCAPETIMING_LINEARTIMING_EASE_INTIMING_EASE_IN_2TIMING_EASE_OUTTIMING_EASE_OUT_2TIMING_EASE_IN_OUTTIMING_SINODIALTIMING_EASE_BACK_INTIMING_EASE_BACK_OUTTIMING_EASE_BACK_IN_OUTTIMING_ELASTIC_INTIMING_ELASTIC_OUTTIMING_ELASTIC_IN_OUTTIMING_BOUNCE_INTIMING_BOUNCE_OUTTIMING_BOUNCE_IN_OUTFILTERING_LINEARFILTERING_NEARESTCommon AI Mistakes
- Do not generate tkinter, PyQt, Flask, Streamlit, or browser/server UI for PythonIDE Mini Apps.
- Do not invent AppUI view parameters. Check
appui_api_schema.jsonorappui.pyi. - Do not write interactive app flows with
widget; widgets are timeline-limited Home Screen surfaces. - Do not call native modules from an AppUI body without user action or permission handling.
- Do not use unlisted native modules or assume iOS permissions are already granted.
Files For AI And Tools
These files are generated or copied from the canonical facts in the repository.