Skip to main content

API Reference

Application entry APIs:

public sealed class UltimateAppBuilder
{
public static UltimateAppBuilder CreateDefaultBuilder();
public UltimateAppBuilder UseRenderHost(Func<IRenderHost> renderHostFactory);
public UltimateApp Build();
}

public sealed class UltimateApp : IAsyncDisposable
{
public Window MainWindow { get; set; }
public ValueTask<int> RunAsync(CancellationToken ct = default);
}

public sealed class Window
{
public Window AttachGlobalStyle(CssModule styles);
public Window Render(Func<ComponentContext, Element> render);
}

Lower-level component runtime APIs:

public sealed class ComponentApp : IAsyncDisposable
{
public ComponentApp(Func<ComponentContext, Element> render);
public ComponentApp(UltimateUiApp innerApp, Func<ComponentContext, Element> render);
public UltimateUiApp InnerApp { get; }
public Div HostElement { get; }
public Task PendingRender { get; }
public NodeHandle Mount();
public ValueTask<NodeHandle> MountAsync(CancellationToken ct = default);
public Task RenderAsync(CancellationToken ct = default);
public void Flush();
public ValueTask UseStylesAsync(CssModule module, CancellationToken ct = default);
}

public sealed class ComponentContext
{
public HookState<T> UseState<T>(T initialValue);
public ReducerState<TState, TAction> UseReducer<TState, TAction>(
Func<TState, TAction, TState> reducer,
TState initialState);
public T UseMemo<T>(Func<T> factory, params object?[] dependencies);
public void UseEffect(Action effect, params object?[] dependencies);
}

CSS APIs:

Css.Module(scope, rules);
Css.Class(localName, build);
Css.Rule(selector, build);

CssClass implicitly converts to string, so it can be assigned to element Class properties.