keepcalculator

06 Numbers and Powers

Does Distill.io Work on Dynamic React or Angular Websites?

Card No. 06·42227 · Updated · Standard formula, shown below

Yes, Distill.io works on dynamic React and Angular websites, but with important caveats. Because these frameworks render content client-side, Distill’s default page monitoring often detects changes that aren’t real, so you need to use its “Monitor Specific Elements” feature or the JavaScript execution option to get accurate results.

Background: How Distill.io Monitors Pages

Distill.io is a web monitoring service that watches web pages for changes and notifies you via email, Slack, or other channels. It works by fetching a page at set intervals, comparing the new version to the previous one, and alerting you when something differs. The service offers three main monitoring modes:

  • Whole Page Monitoring – captures the entire page and flags any change in the HTML, text, or images.
  • Specific Element Monitoring – lets you select a particular part of the page (like a price, a stock level, or a headline) and only alerts when that element changes.
  • Visual Monitoring – takes screenshots and compares them pixel-by-pixel.

For static websites, these modes work flawlessly. But React and Angular sites are dynamic – they load content via JavaScript after the initial HTML is fetched. That’s where the complications begin.

Why React and Angular Break Default Monitoring

When Distill fetches a React or Angular page, it receives the raw HTML before JavaScript runs. In many cases, that HTML is just a shell with empty div tags and a bundle script. The actual content – product prices, article text, or user data – is rendered only after the browser executes the JavaScript.

This causes two common problems:

  • False positives: The page appears to change constantly because dynamic elements like timestamps, session IDs, or ad placeholders update on every load, even when the content you care about hasn’t changed.
  • False negatives: Distill might not see the content at all if it doesn’t execute the JavaScript, so it never detects a change that actually happened.

For example, if you monitor a React-based product page for a price drop, the default whole-page monitor might alert you when a “recommended products” carousel rotates, but miss the actual price change because the price is rendered client-side.

How to Monitor Dynamic Sites Correctly

Distill offers two key features to handle JavaScript-heavy sites:

  1. JavaScript Execution – This option tells Distill to run the page’s scripts before taking a snapshot. When you create a monitor, look for a toggle or checkbox labeled “Execute JavaScript” or “Render page with JavaScript.” Enable it, and Distill will wait for the page to fully render before comparing.
  2. Element Selection – Instead of monitoring the whole page, right-click on the specific element you care about (e.g., the price tag) and choose “Monitor this element.” This ignores all other dynamic changes.

For best results, combine both: enable JavaScript execution and monitor only the specific element. This minimizes false alarms and ensures you’re tracking the data that matters.

Common Pitfalls and How to Avoid Them

Even with JavaScript enabled, dynamic sites can still fool monitoring. Here are typical issues and fixes:

  • Infinite scroll or lazy loading: If your page loads more content as you scroll, Distill might only see the initial viewport. Use element monitoring on the container that holds the content you need, or set a custom CSS selector that targets the loaded data.
  • Session-based URLs: React apps often use tokens in URLs (e.g., /product/123?session=abc). These tokens change every visit, causing false positives. Use a static URL or strip the query parameters if possible.
  • Authentication walls: If the content is behind a login, Distill can’t access it unless you provide credentials via its “HTTP Authentication” or “Cookie” settings. Be cautious – storing login credentials in a third-party service has security implications.
  • SPA route changes: Angular apps often use hash-based routing (#/home). Distill treats each hash as a separate URL, so monitor the base URL and use element selection to track the content that updates.

Comparing Distill.io with Alternatives for Dynamic Sites

Distill is not the only tool, and its approach isn’t unique. Other monitoring services like Visualping, Changedetection.io, and Wachete face the same challenges with JavaScript-rendered content. The key differences are:

  • Distill.io offers robust element selection and JavaScript rendering, plus a desktop app for local monitoring (which can handle even more complex JS).
  • Visualping is simpler but often requires the same JavaScript rendering option for SPAs.
  • Changedetection.io is open-source and self-hostable, giving you full control over the fetching and rendering process.

For highly dynamic single-page apps, none of these tools are perfect. They all rely on a headless browser to execute JavaScript, which can be slower and less reliable than a real browser. If your monitoring needs are critical, consider writing a custom script with Puppeteer or Playwright that can handle the specific behavior of your site.

Cost and Limitations

Distill.io has a free tier that includes a limited number of checks per day (typically every 12 hours) and a limited number of monitors. Paid plans start at around $10 per month and offer more frequent checks (as often as every 5 seconds) and more monitors. JavaScript rendering and element monitoring are available on all plans, but the free tier may be too slow for real-time alerts on fast-changing dynamic pages.

Another limitation: Distill’s JavaScript rendering is not 100% faithful to a real browser. Complex animations, WebSockets, or canvas-based content might not render correctly, causing missed changes. If you’re monitoring a page that relies on WebSockets (like a live stock ticker), Distill won’t capture the real-time updates – it only sees the initial state.

Frequently Asked Questions

Does Distill.io work with single-page applications (SPAs)?

Yes, but you must enable JavaScript execution and ideally monitor specific elements. Without those, Distill will often see an empty shell or trigger false positives.

Why does Distill keep sending me false alerts on my React site?

This usually happens because dynamic elements like timestamps, ad slots, or user session data change on every fetch. Switch to element monitoring and select only the content you care about.

Can Distill monitor content behind a login?

Yes, you can provide HTTP authentication credentials or cookies in the monitor settings. However, be aware of security risks and check Distill’s data handling policies.

How often can Distill check a dynamic page?

Check frequency depends on your plan. Free plans typically check every 12 hours, while paid plans can go as low as 5 seconds. Faster checks are more likely to catch changes but also increase the chance of hitting rate limits or IP blocks.

Is there a way to test if Distill sees the rendered content?

Yes, when creating a monitor, use the preview feature to see what Distill sees. If the preview shows empty boxes or missing text, you need to enable JavaScript execution or adjust your element selector.

What if Distill still misses changes after enabling JavaScript?

Try using the desktop app, which uses a more complete browser engine. Or consider a custom solution like a Puppeteer script that can handle the specific way your site loads data.

Related

Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.

More cards in this drawer

The whole Numbers and Powers drawer →