Portal Community

When to Use ViewModeRenderer

ScenarioUseReason
Single approval review formFormRenderer in view modeMay need mode switching + actions (approve/reject buttons)
High-volume list of records (50+ items)ViewModeRendererLighter per-instance footprint; no event system overhead
Read-only summary panel in a dashboardViewModeRendererNever needs editing — no overhead of binding event system
PDF/print export of form dataViewModeRendererRenders cleanly without interactive elements

Props

interface ViewModeRendererProps {
  schema:        FormSchema;
  values:        Record<string, any>;   // Record data to display
  context?:      Record<string, any>;   // $context source values
  theme?:        ThemeConfig;
  className?:    string;
}

Usage

import { ViewModeRenderer } from '@atlas-forms/player-components-react';

// Displaying a list of approval records
const RecordList: React.FC = ({ records, schema }) => (
  <div>
    {records.map(record => (
      <ViewModeRenderer
        key={record.id}
        schema={schema}
        values={record}
      />
    ))}
  </div>
);

What ViewModeRenderer Skips

FeatureFormRendererViewModeRenderer
ValidationEngine instanceAlways createdNot created
FormEngine event systemActiveNot active
Draft auto-saveActive in edit modeNot active
onSubmit / onError handlersRequired propNot accepted
Action bar (submit button)RenderedNot rendered
visibilityRule evaluationReactive on changeEvaluated once on mount
Computed field recalculationOn every changeNot recalculated (values are final)

Control Rendering in ViewModeRenderer

Every control renders its value as a display representation — there are no editable inputs:

modeVisibilitySettings in ViewModeRenderer ViewModeRenderer evaluates modeVisibilitySettings as if the mode is "view". Controls with view: false in their settings are not rendered. This ensures admin-only fields are automatically hidden.