Preview limitations

The browser preview runs the DataMind Oda app inside one dedicated Web Worker in a browser page, for preview deployments and packaging checks. It is not a desktop run of Oda: parts of the environment are missing or replaced, and this page lists what to expect before you rely on something. How the preview starts and mounts its data is on Browser preview.

What the preview does not carry

When missing code is called

Pieces the preview does not carry load quietly and refuse when a call reaches them. The refusal names the module and the symbol and says it is not available in the worker host; it is written to the console first, and then the call fails. A console line looks like this:

text
node:zlib.gzipSync is not available in the worker host

What a refusal covers:

What the console prints beyond these refusals is collected on Preview diagnostics.

Replaced packages

Some dependencies are replaced with small stubs rather than missing at the module level. Each stub loads quietly, and it refuses when it is called:

The filesystem it works in

The environment code sees

Questions, answered

Can I install npm packages in the preview?

No. The process runner that would fetch and install dependencies refuses every call, so no package manager runs and no native dependency is built. Install packages in a desktop run of Oda instead.

Why does my Node program not run in the preview?

Programs that would run as a Node process cannot start: the preview reports a Node executable path, but nothing can execute it, so the program fails before it can launch.

What happens when code calls something the preview does not carry?

The call is refused with a message that names the module and the symbol and says it is not available in the worker host. The line is written to the console first, and then the call fails. Because the missing pieces load quietly, you meet a refusal only when a call actually reaches one.

Which Node modules are stubbed in the preview?

node:dns/promises, node:vm, node:net, node:sqlite and node:worker_threads are structural stubs, and several individual symbols elsewhere are missing, including the compression codecs and most hash algorithms. Every call to them is refused.

Why do network calls fail in the preview?

The preview carries no sockets and no DNS resolver. Socket writes, socket ends, servers and client connections are refused, client websockets are not available, and a DNS lookup is refused. Outbound request and get are refused too; they point to fetch instead.

Can I convert an Office document in the preview?

No. Conversion needs the app's own engine, which the preview does not carry, and the converter rejects with the code unavailable.

Do image attachments still work in the preview?

Yes. The attachment handling around the image library still loads; it is resizing and transcoding that refuse, so only that step fails.

Can I create a symbolic link in the preview?

No. The preview's filesystem has no symbolic links: creating one and reading through one are refused, and a check for a symbolic link always answers false.

Are file permissions enforced in the preview?

No. Permission bits are stored and reported, so tools that read them see normal values, but they are never enforced: the preview's filesystem reads and writes as its owner.

Why does a file's timestamp change on every write?

Timestamps increase strictly per file, so two writes in the same millisecond still differ. That is how the preview tells an older write from a newer one.

What platform does the preview report?

A fixed one: linux on x64 whatever your machine is, one process, no CPU count or network interfaces from the machine, and output that is never a terminal. The Node version it reports is a placeholder, and the Windows forms of the path module are unreachable because of the platform it reports.

Are session logs compressed in the preview?

No. They are written as plain text, one JSON object per line; the compressed form is never used.