feat: allow runes in POJO properties

#15593

Pull request

Open
O
Ocean-OS
Mar 22, 2025, 6:42 PM

This is currently an experiment to see how well runes could work as properties in POJOs. This is similar to #11210, but much more seamless. This would enable explicit fine-grained reactivity in objects, without proxying them. Here's an example:

let counter = {
    count: $state(0);
}

This would get compiled to an IIFE, returning something like this:

let counter = (() => {
    let $$1 = $.state(0);
    return {
        get count() {
            return $.get($$1);
        },
        set count($$value) {
            $.set($$1, $$value, true);
        }
    }
})();

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • Prefix your PR title with feat:, fix:, chore:, or docs:.
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.
  • If this PR changes code within packages/svelte/src, add a changeset (npx changeset).

Tests and linting

  • Run the tests with pnpm test and lint the project with pnpm lint

Info

Assignees None
Reviewers None
Labels needs discussion
Milestone None