Last 12 weeks · 0 commits
1 of 6 standards met
Summary This PR is a work-in-progress implementation of Android support. I know this library is still very early and that the internals may change, but I have a use case where having both iOS and Android support would be ideal and wanted to see what it would take to have a working version for Android. The goal is to establish Android-side foundations for AIX primitives and align behavior with the current iOS-first architecture (blank size handling, scroll anchoring, and keyboard-aware chat UX). Demo Video https://github.com/user-attachments/assets/318e25e9-c8e3-4306-b6c6-8837d2dc45ac Dark mode support (wip) To test it locally on android emulator / device: Notes This PR already includes #43 for legend-list v3 support. Big chunks of the Android implementation are LLM written. @nandorojo @richardkunkli what do you think? is it too early to be adding Android support? Also thank you for the amazing work and the super detailed blog post 🙏
Summary Adds flag so only the Aix instance whose descendant is the first responder reacts to keyboard events Prevents background screens from incorrectly handling keyboard transitions triggered by a different Aix instance (e.g. stacked screens) Set on when is true, cleared on Test plan [ ] Stack two screens each with their own Aix context [ ] Open keyboard on the top screen — bottom screen should not react [ ] Dismiss top screen, open keyboard on bottom — should work normally
Summary Adds to return the index and pixel offset of the first visible cell, plus whether the user is scrolled near the end Adds to restore a saved scroll position by cell index and offset Adds to queue a scroll-to-end that fires once the blank view at the target index is ready Includes Nitro codegen for both iOS and Android specs Test plan [ ] Call and verify it returns correct cell index and offset [ ] Save the result, scroll away, call — should restore position [ ] Call before content loads — should scroll once ready
Summary Reset on change so the initial scroll isn't skipped when switching conversations Re-scroll to bottom when navigating back to a screen () Track to lock auto-scroll decision when a new blank cell appears (prevents threshold drift as streaming content grows) Reset auto-scroll flag on conversation switch and navigation away Cancel auto-scroll when user scrolls >2x threshold away during streaming Remove dead code: unused , unused property, disabled body Simplify (bounds.height is always >= 0) Test plan [ ] Enter a chat, navigate away, navigate back — should re-scroll to bottom [ ] Switch between conversations — each should scroll to bottom independently [ ] Receive a streaming message while scrolled to bottom — should auto-scroll [ ] Scroll up during streaming — auto-scroll should stop [ ] Verify no or references remain
Repository: vercel/aix. Description: Build AI apps with the polish of ChatGPT, v0, and Grok. Coming soon. Stars: 106, Forks: 9. Primary language: TypeScript. Languages: TypeScript (57.7%), Swift (36.7%), JavaScript (2.4%), Kotlin (1.7%), Ruby (1.1%). Homepage: https://aix.vercel.sh Open PRs: 7, open issues: 1. Last activity: 4mo ago. Community health: 37%. Top contributors: nandorojo, richardkunkli.