Skip to main content

Troubleshooting

IssueWhat to check
Chart stays blanklibrary_path must serve TradingView static files; container must be mounted before new widget(...).
chartWidget is always nullSet chartWidget after create (or inside onChartReady if required). Use shallowRef for the TradingView instance.
Scan fails / 401Ensure the user signed in via the results iframe so iccandle_token is set in localStorage. Call handleResultIframeLoad on iframe load so parent-origin is posted before sign-in.
Date Range still in drawing toolbarBlacklist it in drawings_access — the scanner owns the date_range selector (see Get started).
Replay bars do not appearWrap the datafeed with withPlayChart and register getCustomIndicators (both required). Match indicator theme to the chart. See withPlayChart / getCustomIndicators.
Unrevealed predicted bars show as solid blocksSet chartMaskColors to the exact pane background (paneProperties.background). Defaults (#ffffff / #0F0F0F) only match TradingView’s default pane. Do not use a transparent color. See chartMaskColors.
Scanner actions disabledPass :iframe-loaded="true" once the results iframe has loaded, or omit the prop if you do not gate on load.
Results iframe never updatesImplement required submitCallback and set your iframe src from the URL it receives.
Theme looks wrongPass an explicit theme (light / dark) instead of system, and match getCustomIndicators(theme) to the chart theme.
Results iframe blank / CORSConfirm the host can load https://embed-iccandle-app.iccandle.ai; check browser console for blocked frames or CSP frame-src rules.
Stripe return / billing staleCall handleResultIframeLoad(iframe) on iframe @load so parent-origin / payment-success are posted.
Pricing modal never opensPass :result-iframe-ref as a { current } box pointing at the results iframe so the widget can post open-pricing.
Pattern tracker unavailableUser must be signed in (iccandle_token present). Open the tracker from the scanner popup after login.
News marks missing on the time axisOptional: implement getTimescaleMarks on your datafeed and set supports_timescale_marks: true in onReady. See Get started → Step 6.