vercel-labs / vercel-labs/native

Application-defined external effects

Open
#131 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Zig
Stars
7.7k
Forks
314
Avg merge
5h
Merged PRs (30d)
13

Description

Native apps need a bounded way to run app-owned work through the existing effect lifecycle.

For example, melearner should send a list_courses request to its Rust core and receive the result as a normal Msg, without adding melearner-specific APIs to Native SDK.

I propose fx.external: each request carries an adapter ID, operation kind, schema version, and byte payload. Native SDK owns request IDs, limits, exact cancellation, UI-thread delivery, and deterministic session record/replay.

Requests are capped at 64 KiB, results at 256 KiB, and external work shares the existing 16 effect slots.

Does this boundary fit the shared effects API?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files or tests are named. Start by reading the existing effect lifecycle and shared effects API, then trace how Native SDK delivers a normal Msg and handles cancellation and record/replay. Done means the proposed fx.external boundary, limits, and lifecycle behavior are agreed and documented well enough to implement.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, zig
Domain
api, desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.