# Asuka > Build native apps in Go for iOS, Android, macOS, Windows, Linux and the web. Asuka renders with each platform's own widgets (UIKit, Material 3, AppKit, Win32, GTK 4 and libadwaita, the DOM), updated by fine-grained signals, with live reload as you save and release builds for every platform. Individual Markdown pages are listed below. All documentation is also available at https://asuka.egoist.dev/llms-full.txt. ## Documentation - [Asuka documentation](https://asuka.egoist.dev/docs.md): Asuka makes native apps in Go, for iOS, Android, macOS, Windows, Linux and the web. An app's interface is Go functions that return views; Asuka shows them with each platform's own widgets, and updates only the views that read a signal when it changes. - [Accessibility](https://asuka.egoist.dev/docs/accessibility.md): Asuka shows the platform's own widgets, so most of what screen readers, the keyboard and the text size settings need is there without code. This page covers what you get for free, and the props for the rest: labels, roles, grouping, custom actions, adjustable views, announcements, the keyboard, text size and Reduce Motion, and how to test it. - [Components](https://asuka.egoist.dev/docs/components.md): A component is a Go function that returns a ui.Node. This page covers the views package ui gives you, grouped by what they do, and the packages next to it for Markdown and SVG. Each one is the platform's own widget where the platform has one: UIKit on iOS, Android Views and Material 3 on Android, AppKit on macOS, Win32's controls drawn as Windows 11's (Fluent) on Windows, GTK 4 and libadwaita on Linux, the page's elements in a browser. How views are sized and placed is in Layout; screens, tabs and sheets are in Navigation. - [Concepts](https://asuka.egoist.dev/docs/concepts.md): A Asuka app is Go functions that build its views once, and signals that hold its state. This page covers how they fit: the root component, signals and what they update, showing and repeating views, owners and cleanup, the main thread, and the environment. - [Data](https://asuka.egoist.dev/docs/data.md): An app keeps its data in a few places: small values in asuka/store, records in SQLite with asuka/sqlite, secrets in the platform's keychain with asuka/secure, and files of its own with Go's os. This page covers each, the network through net/http, and which calls may block the main thread. - [Development](https://asuka.egoist.dev/docs/development.md): asuka dev runs an app and reloads it as you save: on the iOS simulator, an Android emulator or phone, your Mac, PC or Linux machine, or your browser. This page covers how it does that on each, what a reload keeps, devices, assets and logs, what it can't reload, asuka vet, the problems you may meet, and Asuka's own tests and benchmarks. - [Device and services](https://asuka.egoist.dev/docs/device.md): Asuka's packages reach what the device has beyond views: the camera, codes, what's in an image, photos and files, previewing, printing and PDFs, the mail and message composers, location, notifications and push, sound and recording, the network's state, the shared library, work in the background, shares from other apps, JavaScript, sign-in and biometrics, the screen, maps, the stores' services, and crash reports. This page covers each package: what it does, its API, the permissions it brings and how it behaves on each platform. - [Getting started](https://asuka.egoist.dev/docs/getting-started.md): Asuka needs Go, and for each platform you run on, that platform's tools. Then one command makes an app, and another runs it, reloading as you save. - [Languages](https://asuka.egoist.dev/docs/i18n.md): A Asuka app says its messages in the language of the people who use it, and is laid out the way that language reads. Its messages live in catalogs, a JSON file per language, from which the CLI writes a Go package with a typed function per message. - [Layout and style](https://asuka.egoist.dev/docs/layout.md): A ui.Style says how a view is laid out and how it looks. Layout is CSS flexbox, in points; the look is colors, corners, borders, shadows and text. This page covers both, and styles that change. The layout is the same on every platform: Asuka computes it in Go and places the platform's views where it says. - [Motion and gestures](https://asuka.egoist.dev/docs/motion.md): Asuka animates with each platform's own machinery where it has one: UIView animations on iOS, animators on Android, AppKit's implicit animations and Core Animation on macOS, the Web Animations API in a browser. Windows and GTK have no animations of a view's frame, so the Windows and Linux hosts step them themselves, each frame, with the same curves. You change state inside ui.Animate, and what that change moves on screen animates. This page covers animating changes, transitions in and out, shared elements, frame-driven animation, gestures with touch, mouse and trackpad, haptics and Reduce Motion. - [Native code](https://asuka.egoist.dev/docs/native.md): An app can bring native code of its own, on every platform: native views, shown in Go with ui.Native, and native modules, whose methods Go calls with ui.Call. The Go side is the same everywhere; each platform's side is written in its own language: Swift on iOS, Kotlin on Android, Swift or Go on macOS, Go on Windows and Linux, JavaScript on the web. - [Navigation](https://asuka.egoist.dev/docs/navigation.md): An app's structure is made of stacks of screens, tabs, sheets, alerts and menus, and on a desktop, windows and the menu bar. Each one is the platform's own: - [What Asuka has, against SwiftUI and Expo](https://asuka.egoist.dev/docs/parity.md): Each row is something apps often need: how SwiftUI and Expo do it, and what Asuka has for it. A ✓ is on every platform Asuka runs on (iOS, Android, the Mac, Windows, Linux and the web) unless the row says otherwise; where a platform hasn't something (a Mac has no sensors, a browser no home screen widgets), its package answers that it hasn't. In a browser, what each package does instead where a browser can't do what a phone does is in The web. - [Shipping](https://asuka.egoist.dev/docs/shipping.md): asuka build makes an app's release build for one platform, from the app's directory (or the one given), into its dist. asuka publish uploads the iOS and Android builds to their stores: to TestFlight and App Review, or a Google Play track (see Publishing). - [The web](https://asuka.egoist.dev/docs/web.md): The same app runs in a browser: its Go code compiled to WebAssembly, its views the page's DOM. The web is one of Asuka's platforms beside iOS, Android, the Mac, Windows and Linux, from the same Go code. Each view the core makes is an element placed at the frame the core laid out, as each native host places its widgets, so the layout is Asuka's own (flexbox and grid, in Go), the same on every platform; leaves are measured by the real elements, as the native hosts measure theirs. Controls are the browser's own (