Skip to content

v0.3.0

Latest

Choose a tag to compare

@dannote dannote released this 05 May 18:06

What's New

Unified API

One entry point for everything:

use PhoenixVapor                                          # sigil (~VUE)
use PhoenixVapor, file: "Contacts.vue"                    # auto-detects mode
use PhoenixVapor, file: "Counter.vue", runtime: :reactive # server-side QuickBEAM
use PhoenixVapor, file: "Dialog.vue", runtime: :full, bundle: "..." # full Vue runtime

The compiler reads the .vue file and decides: no ref() → zero client JS, has ref() → hybrid with Vue 3 on the client.

Hybrid Mode

Split reactivity — server owns data, client owns UI state. Search, sort, filter are instant (zero server round-trip). Delete goes through the server.

  • Auto-classification: defineProps → server, ref() → client, "use server" → server action
  • Server renders full HTML for SEO/first paint
  • Client hydrates with standard Vue 3 (createApp)
  • Props sync via LiveView diffs through a bridge hook
  • Reka UI headless components work in hybrid mode (Dialog, Tooltip verified)

<script lang="elixir">

Embed Elixir code directly in .vue files for single-file convenience:

<script lang="elixir">
def mount(_params, _session, socket) do
  {:ok, assign(socket, contacts: Repo.all(Contact))}
end
</script>

<script setup>
const props = defineProps(["contacts"])
const search = ref("")
</script>

<template>
  <input v-model="search" />
</template>

Updated Deps

  • OXC 0.11.0 (AST types now snake_case atoms)
  • Vize 0.10.0 (Vue Vapor compilation, strip_types, custom_renderer)
  • QuickBEAM 0.10.8 (JS line coverage, 8MB default stack)
  • Volt 0.10.1 (dev server, HMR, Tailwind v4, code splitting)
  • Phoenix LiveView 1.1.28

Zero Regex

All JS/HTML manipulation uses OXC AST operations (OXC.parse, OXC.collect, OXC.patch_string) or simple string ops. Zero regex in lib/.

257 Tests

Comprehensive coverage: classifier (31), server codegen (11), client codegen (10), hybrid integration (57), single-file (11), unified API (17), plus all existing tests.