Skip to main content

Most app code starts from the direct-dependency version first. This page shows the exact translation: when code imports a store, imports a service, calls an implementation function, parses a package file, or adds a shell branch, replace it with the Runtime Kit boundary that matches the job.

You are adding a file tree, editor, preview button, command palette action, sidebar item, or dashboard panel. The code works inside one app today, but it does it by making one package depend on another package’s private store, files, or implementation. That is the moment to stop and translate.After this page, you should be able to point at each line of traditional code and name the Bitfield path that replaces it: shared product fact, data name, action request, private UI state, or package file.Traditional code lets one package become the private source every other package imports. The file tree owns the selected file, but the editor, preview button, command palette, and dashboard all import or read the file tree’s private store.Bitfield code keeps the same producer and the same consumers, but none of the consumers depend on the file tree package. The file tree publishes the selected file into Bitfield, then every other package reads the public Bitfield value.

Start with the job

Traditional app code usually starts with the nearest import. Bitfield code starts with the job the code is doing.React is one adapter for these reads and requests. A future native shell, command-line shell, game shell, or embedded device shell should use the same public names instead of importing another package’s private code.

What this prevents

Traditional app-code instinct makes the shortest path look correct: import the store, call the service, parse the file, add the shell branch, or move visual timing into a global object. That works until the next package needs the same value from a different place.Bitfield shape prevents every package from depending on every other package by making packages meet through public names:

Example 1: selected text for the next assistant request

The feature being added

A note editor lets the user highlight text. Another assistant request area should use that highlighted text. The editor also needs a small debounce so it does not publish every tiny mouse movement.

What goes wrong

The editor imports the assistant panel store and mutates it directly.
That couples the editor to the assistant panel. The editor now directly depends on the assistant panel’s state module, state field name, and object structure.

The Bitfield version

Keep the debounce timer private to the editor, then send the public request that updates the shared product fact.
The private debounce still belongs in the editor UI. The selected text that another package needs goes through a public action request.

What each part owns

Check the result

No editor code imports the assistant-request package store.

Example 2: sidebar entries without shell branches

The feature being added

The sidebar needs to show product entries from many packages. Today it may show journal items, previews, dashboards, or support links. Tomorrow it may show package entries nobody has built yet.

What goes wrong

The sidebar imports every feature and grows one branch per product area.
That makes the shell product-specific. Every new package now edits the shell, and the shell becomes the private shared registry.

The Bitfield version

The sidebar reads published package records, finds descriptors with supported placement fields, and renders from those records.
The shell places entries from descriptor fields. It does not import each package’s private screens, stores, actions, or file layout.

What each part owns

Check the result

Adding a package entry should not require importing that package’s React component into the sidebar.

Example 3: preview work without importing the preview runner

The feature being added

A button starts or refreshes a project preview. A status panel then reads the preview state.

What goes wrong

The button imports the preview implementation and calls it.
That makes the button responsible for preview implementation details. It imports the private runner, private store, and return shape.

The Bitfield version

The button asks the public action to do the work. The status panel reads the prepared preview data.

What each part owns

Check the result

Read paths and work paths stay separate. Requesting work is not the same as reading prepared state.

Example 4: dashboard data without raw storage reads

The feature being added

A compliance or health dashboard shows a prepared view of project facts. The dashboard should render the view and offer actions. It should not become a database client for another package’s private storage shape.

What goes wrong

The dashboard imports low-level readers and assembles the other package’s model itself.
That leaks storage shape into the consumer. The dashboard depends on where project files live, how compliance rows are shaped, and how those rows become a screen.

The Bitfield version

The dashboard reads the named data that the owner exposes.
The dashboard still owns its render states. It does not own the producer package’s storage shape.

What each part owns

Check the result

If the dashboard depends on how another package stores rows, the boundary is wrong.

Example 5: package-owned help content

The feature being added

A package ships help text or starter content that another area can display.

What goes wrong

Consumer code reads the package’s private file path.
That turns a file path into a public API. Moving the package file breaks the consumer.

The Bitfield version

The package owns the bytes. The consumer reads prepared content or a package-owned record.

What each part owns

Check the result

A package file path is not a public product contract.

Larger chain

The tangled version

One handler coordinates everything.

The Bitfield split

Each job goes through the boundary that matches it.

The public calls

The important difference is not that the code is longer or shorter. The important difference is that the editor, preview, sidebar, notifications, and assistant request area no longer import each other.

Review checklist

Translation prompt

Next

Last modified on May 10, 2026