· showcase · vesk native · android
Field notes for biologists. Photos, GPS, voice — syncs when back online. Built once in .vsk, runs on the web for planning and on Android for the field.
component Note(props: { id: string }) {
const note = useFetch.json<Note>(`/api/note/${props.id}`)
<article>{note.data.title}</article>
}
Emit:
document.createElement
+ per-cell effect.
// same .vsk IR
@Composable fun Note(id: String) {
val note = useFetchJson<Note>("/api/note/$id")
Text(note.data.title)
}
Emit:
@Composable
+ Material 3 — no WebView.
offline.vsk
.
VeskResponse.json
+ presigned S3, same handler web/native.
@vesk/native
shim, mocked on web.
mutate(noteKey)
optimistic, revalidate on reconnect.
issuesToFieldMap
on both.