Reports and troubleshooting
Start with the diagnostic or symbol you need. The output report tells you where a TypeScript API changes shape.
Read the generation report
manifest.json contains aggregate counts. symbols.jsonl contains one JSON record per symbol, including its findings.
Direct representation
The F# binding preserves the TypeScript construct directly.
Adapted for F#
Meaning is preserved with a more idiomatic representation, such as an option.
Less type information
The F# type loses precision, for example by becoming obj.
Manual handling needed
The construct is not represented by the generated binding.
Search symbols.jsonl for the TypeScript name or finding code. Review the APIs your app calls, then compile and run a small example. Counts describe mapping quality; they do not establish runtime correctness.
The tool or compiler is missing
If the shell cannot find xantham, check the .NET tools PATH in Installation.
If Xantham cannot find its matching compiler:
xantham tsc init
xantham tsc version
Check that Node.js and npm are on PATH and that npm installation completed.
TypeScript cannot resolve a module or provider
Install the missing dependency where the input package can resolve it. For TS2688, check the configured types list and install the named provider.
Use "types": [] when automatic ambient providers are unwanted. Explicit imports still need their dependencies.
No declaration entry is selected
Check the package's types, typings, and exports declarations. A blocked or absent public root may require an explicit entry or publicInputs.
For a subpath, set the matching JavaScript runtime import. See selecting declarations.
A type became obj
Find the symbol's finding code. Common causes include an unlisted dependency group, a construct with no precise F# equivalent, or the resolution depth limit (RT001).
Configure a group disposition if a dependency has a usable binding. For a remaining widened API, keep conversions in a small application wrapper and verify its runtime behavior.
The F# output does not compile
Check these first:
- Use Fable 5.x and
Fable.Core5.2.0. - Reference
Xantham.Fable.CoreandXantham.Fable.Core.TS. - Compile shipped groups and catalog producers before their consumers.
- Use a consumer target framework of net8.0 or later.
- Check custom mappings for the correct F# name and generic arity.
If it still fails, report the first distinct compiler error and the smallest declaration that reproduces it.
The JavaScript import fails
The runtime package must be installed in the app's npm project. Check that runtime names an import the package actually exports and that the selected declarations match your browser, Node, or worker environment.
Release expectations
Xantham 0.1.x is an early release. Generated names and shapes may change before 1.0. Some TypeScript constructs widen or escape, and successful generation alone does not guarantee that every API compiles or behaves correctly.
Pin versions, keep the reports, and validate the APIs your application uses.
Report a reproducible problem
Include the input declaration, configuration, versions, and diagnostic.
What to include →