I built a framework that lets you write native apps with YAML and Lua — DeepSeek Blog | Neura Market
    Neura MarketNeura Market/DeepSeek
    ChatGPTChatGPTClaudeClaudeGeminiGeminiCursorCursorGrokGrokPerplexityPerplexityDeepSeekDeepSeek
    CoPilotCoPilotStable DiffusionStable DiffusionMidjourneyMidjourney
    View All Directories
    OverviewRulesPromptsMCPsAgentsBlogVideosGuidesCoursesCommunityTrendingGenerate
    DeepSeekBlogI built a framework that lets you write native apps with YAML and Lua
    Back to Blog
    I built a framework that lets you write native apps with YAML and Lua
    swift

    I built a framework that lets you write native apps with YAML and Lua

    Jose Quintero February 23, 2026
    0 views

    I've been doing native mobile development for a while and one thing that always bugged me was the...

    --- title: I built a framework that lets you write native apps with YAML and Lua published: true tags: swift, kotlin, mobile, opensource --- I've been doing native mobile development for a while and one thing that always bugged me was the tradeoff between cross-platform tools and actual native UI. Flutter and React Native solve the "write once" problem but you're not really getting native components. And writing everything twice in Swift and Kotlin is just exhausting. So I built Melody. You define your UI in YAML, write your logic in Lua, and it renders real SwiftUI on Apple platforms and Jetpack Compose on Android. No web views, no bridge, no JS runtime. Here's what a full screen looks like: ```yaml screens: - id: home path: / title: Home state: count: 0 body: - component: text text: "{{ 'Tapped ' .. state.count .. ' times' }}" style: fontSize: 24 fontWeight: bold - component: button label: Tap me onTap: | state.count = state.count + 1 ``` That's it. Change the YAML, hot reload picks it up over WebSocket, and the app updates instantly. ## Why YAML and Lua? YAML handles the layout. It's declarative, easy to read, and easy to diff in git. Lua handles the logic — it's tiny, fast, and embeddable. No npm, no bundler, no node_modules. The whole dev experience is just editing files and saving them. ## What's in the box There are 23+ built-in components that map directly to native views — text, buttons, stacks, lists, grids, forms, charts, toggles, pickers, sliders, inputs, and more. Styling is inline in a `style` block with support for padding, colors, shadows, border radius, animations, etc. You reference theme colors with `"theme.colorName"` and they resolve automatically including dark mode. State is reactive. You assign to `state.key` in Lua and only the components that reference that key re-render. No diffing, no virtual DOM. Networking is built in with `melody.fetch()` which is non-blocking under the hood using coroutines, so your Lua reads linearly but doesn't freeze the UI. There's also WebSocket support, persistence, cross-screen events, timers, and clipboard access. ## Navigation Navigation is path-based with dynamic route params: ```yaml - id: profile path: /profile/:id onMount: | local res = melody.fetch("https://api.example.com/user/" .. params.id) if res.ok then state.user = res.data end ``` Tab bars, sheets, alerts, and full navigation stacks are all supported. Tabs even adapt between sidebar on iPad/Mac and tab bar on iPhone with a single config. ## Custom components Custom components work like you'd expect — define once in YAML with props, use them anywhere: ```yaml components: UserCard: props: name: "" avatar: "" body: - component: stack direction: horizontal style: { spacing: 12, padding: 16 } children: - component: image src: "{{ props.avatar }}" style: { width: 48, height: 48, borderRadius: 24 } - component: text text: "{{ props.name }}" ``` ## Plugins Plugins let you extend Melody with native code. A plugin is a git repo with Swift and Kotlin implementations that register functions into Lua under their own namespace. You declare them in `app.yaml` and run `melody plugins install`. Useful for things like keychain access, analytics, or anything that needs platform APIs. ## Getting started Install the CLI with Homebrew, scaffold a project, and run it: ``` brew tap josejuanqm/tap brew install melody melody create MyApp cd MyApp melody dev ``` It generates the Xcode project and Android boilerplate for you. The dev server handles hot reload. I'm currently using Melody to build a real app so this isn't just a toy — it's been tested against real use cases with networking, auth flows, dynamic lists, and complex navigation. It supports iOS, iPadOS, macOS, tvOS, visionOS, and Android. Web, Windows, and Linux support is planned and I'd love to work on it if theres traction. The repo is here: {% github josejuanqm/melody %} Would love to hear any feedback or questions.

    Tags

    swiftkotlinmobileopensource

    Comments

    More Blog

    View all
    How I'm using ASTs and Gemini to solve the "Codebase Onboarding" problem 🧠ai

    How I'm using ASTs and Gemini to solve the "Codebase Onboarding" problem 🧠

    Hi everyone! 👋 I’m Tara, a Senior Software Engineer and Consultant. Over the years, I've jumped...

    T
    tworrell
    Local AI Will Save Us All (The Math Says So, Trust Me)ai

    Local AI Will Save Us All (The Math Says So, Trust Me)

    Every few weeks a take goes viral in tech circles making the case for ditching cloud AI and running...

    S
    Sebastian Schürmann
    Lost in the AI Hype, I Started Smallai

    Lost in the AI Hype, I Started Small

    And it helped me get back into tech without drowning TL;DR at the end Coming back to...

    R
    Rohini Gaonkar
    Building a Replay-Tested Interactive Brokers Client in Gogo

    Building a Replay-Tested Interactive Brokers Client in Go

    I wanted an IBKR library that felt like Go and had testing I could trust. So I wrote one.

    T
    Thomas Marcelis
    Playwright in Pictures: Fully Parallel Modeplaywright

    Playwright in Pictures: Fully Parallel Mode

    Playwright’s fullyParallel mode is often treated as a simple performance switch. In practice, it...

    V
    Vitaliy Potapov
    Designing a CLI for Both Humans and Agentscli

    Designing a CLI for Both Humans and Agents

    Learn how Alpic designed its CLI for both human developers and AI agents — covering tradeoffs like polling, context windows, interactivity, and statelessness.

    J
    Julien Vallini

    Stay up to date

    Get the latest DeepSeek prompts, rules, and resources delivered to your inbox weekly.

    Neura Market LogoNeura Market

    Discover the best AI prompts, plugins, and resources for DeepSeek and more.

    Content Types

    • Rules
    • Prompts
    • MCPs
    • Agents
    • Guides

    Platforms

    • ChatGPT Directory
    • Claude Directory
    • Gemini Directory
    • Cursor Directory
    • Grok Directory
    • Perplexity Directory
    • DeepSeek Directory
    • CoPilot Directory
    • Stable Diffusion Directory
    • Midjourney Directory
    • All Directories

    Resources

    • Blog
    • Documentation
    • Help Center
    • Marketplace

    Legal

    • Privacy Policy
    • Terms of Service

    © 2026 Neura Market. All rights reserved.

    |

    Not affiliated with any AI platform vendors.