Hollow marker is the consensus estimate; filled is the reported figure, colored by beat or miss.
Outlined bar is the consensus estimate; solid is reported.
Periods without a consensus estimate or a reported figure show a dash.
| Period | EPS estimate | EPS actual | EPS surprise % | Revenue estimate | Revenue actual | Revenue surprise % |
|---|---|---|---|---|---|---|
| Q2 26 | $0.05 | $0.06 | +20.0% | — | $63.3M | — |
| Q1 26 | $0.06 | $0.04 | -33.3% | — | $58M | — |
| Q4 25 | $0.07 | $0.09 | +28.6% | — | $54.1M | — |
| Q3 25 | $0.09 | $0.09 | 0.0% | — | $48.6M | — |
| Q2 25 | $0.11 | $0.1 | -9.1% | — | $41.4M | — |
| Q1 25 | $0.12 | $0.1 | -16.7% | — | $38.7M | — |
| Q4 24 | $0.11 | $0.11 | 0.0% | — | $34.9M | — |
Reported per-share earnings by fiscal year; the line turns dotted where reported figures end and the analyst consensus begins, with the shaded band marking the low–high range.
Reported revenue by fiscal year; the line turns dotted where reported figures end and the analyst consensus begins, with the shaded band marking the low–high range.
Periods without a consensus estimate or a reported figure show a dash.
| Period | EPS estimate | EPS actual | EPS surprise % | Revenue estimate | Revenue actual | Revenue surprise % |
|---|---|---|---|---|---|---|
| FY25 | — | $0.37 | — | — | $182.9M | — |
| FY24 | — | $0.1 | — | — | $120.9M | — |
| FY23 | — | $0.3 | — | — | $93.7M | — |
| FY22 | — | $0.25 | — | — | $73.1M | — |
| FY21 | — | $0.2 | — | — |
Reported revenue per period; the line is the change from the same period a year earlier, on its own left axis.
| Period | FY21 | FY22 | FY23 | FY24 | FY25 |
|---|---|---|---|---|---|
| Revenue | $52.3M | $73.1M | $93.7M | $120.9M | $182.9M |
| YoY change | — | +39.8% | +28.1% | +29.1% | +51.3% |
Reported revenue per period; the line is the change from the same period a year earlier, on its own left axis.
| Period | Q3 23 | Q4 23 | Q2 24 | Q3 24 | Q4 24 | Q1 25 | Q2 25 | Q3 25 | Q4 25 |
|---|
Revenue, gross profit, operating income, and net income per period.
Click a row to chart it; unreported figures show a dash.
| Period | FY21 | FY22 | FY23 | FY24 | FY25 |
|---|---|---|---|---|---|
| Revenue | 52.3M | 73.1M | 93.7M | 120.9M | 182.9M |
| Cost of revenue | 10.8M | 15.4M | 21.9M | 27.6M | 45.9M |
| Gross profit | 41.5M | 57.8M | 71.7M | 93.3M | 136.9M |
| Gross margin | 79.4% | 79% | 76.6% | 77.2% | 74.9% |
| Research & development | — | — | — | — | — |
| Selling, general & administrative | 3.3M | 3.8M | 5.2M | 17.4M | 33.9M |
| Operating expenses | 3.3M | 3.8M | 5.2M | 17.4M | 33.9M |
| Operating income | 23.2M | 27.4M | 34.5M | 33.9M | 30.6M |
| Operating margin | 44.4% | 37.4% | 36.9% | 28.1% | 16.7% |
| Non-operating income, net | -7K | -10K | -2M | -30.6M | 3.2M |
| Pretax income | 21.1M | 25.7M | 31M | 10.3M | 40.2M |
| Income tax | — | 0 | 0 | 4K | 307K |
| Net income | 21.1M | 25.7M | 31M | 10.3M | 39.9M |
| Net margin | 40.3% | 35.2% | 33.1% | 8.5% | 21.8% |
| EBITDA | 38.2M | 54M | 64.2M | 53.1M | 123.4M |
| EPS | 0.2 | 0.25 | 0.3 | 0.1 | 0.37 |
| Diluted EPS | 0.2 | 0.25 | 0.3 | 0.09 | 0.37 |
Revenue, gross profit, operating income, and net income per period.
Click a row to chart it; unreported figures show a dash.
| Period | Q3 23 | Q4 23 | Q2 24 | Q3 24 | Q4 24 | Q1 25 | Q2 25 | Q3 25 | Q4 25 | Q1 26 | Q2 26 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue | 24.2M | 25.5M | 28.2M | 29.8M | 34.9M | 38.7M | 41.4M | 48.6M | 54.1M | 58M | 63.3M |
| Cost of revenue | 6M | 5.6M | 6M | 6.9M | 8.8M | 10.2M | 10.6M | 12.6M | 12.4M | 15.1M | 15.4M |
| Gross profit | 18.3M | 19.9M | 22.1M | 22.9M | 26.2M | 28.5M | 30.8M | 36M | 41.7M | 42.9M | 47.8M |
| Gross margin | 75.4% | 78.2% | 78.6% | 77% | 74.9% | 73.6% | 74.3% | 74% | 77% | 74% | 75.6% |
| Research & development | — | — | — | — | — | — | — | — | — | — | — |
| Selling, general & administrative | 1.1M | 1.8M | 2.2M | 3.6M | 10.1M | 8.9M | 8.2M | 7.3M | 9.6M | 9.6M | 9.2M |
| Operating expenses | 1.1M | 1.8M | 2.2M | 3.6M | 10.1M | 8.9M | 8.2M | 7.3M | 9.6M | 9.6M | 9.2M |
| Operating income | 9.2M | 9.3M | 10.5M | 8.2M | 3.8M | 5.1M | 6.6M | 9M | 10M | 7.6M | 12.1M |
| Operating margin | 37.8% | 36.5% | 37.5% | 27.6% | 11% | 13.1% | 15.9% | 18.4% | 18.5% | 13.1% | 19.2% |
| Non-operating income, net | -2K | -1.3M | -4.1M | -23.6M | 319K | 500K | 95K | 313K | 2.2M | 996K | 1.7M |
| Pretax income | 8.8M | 7.6M | 6.2M | -15.4M | 11.5M | 10.7M | 10.5M | 9.4M | 9.6M | 3.6M | 7M |
| Income tax | — | — | — | — | — | 105K | 72K | 44K | 86K | 69K | 65K |
| Net income | 8.8M | 7.6M | 6.2M | -15.4M | 11.5M | 10.6M | 10.4M | 9.4M | 9.6M | 3.6M | 6.9M |
| Net margin | 36.2% | 29.9% | 22.1% | -51.8% | 32.8% | 27.3% | 25.1% | 19.2% | 17.6% | 6.15% | 10.9% |
| EBITDA | 17.2M | 15.7M | 15.8M | 19.3M | -6.7M | 25.7M | 28.3M | 32.8M | 37.1M | 37.2M | 41.8M |
| EPS | 0.08 | — | — | -0.15 | 0.11 | 0.1 | 0.1 | 0.09 | 0.09 | 0.03 | 0.06 |
| Diluted EPS | 0.08 | — | — | -0.15 | 0.11 | 0.1 | 0.1 | 0.09 | 0.09 | 0.03 | 0.06 |
Annual history by fiscal year; click a table row below to chart a different metric.
Current values are trailing twelve months where available, otherwise the latest fiscal year; unreported figures show a dash.
| Metric | FY21 | FY22 | FY23 | FY24 | FY25 | Current |
|---|---|---|---|---|---|---|
| Market cap | — | — | — | 2.4B | 2.4B | 3.2B |
| Enterprise value | — | — | — | 1.8B | 2.6B | 3.7B |
| Shares outstanding | 104.8M | 104.8M | 104.8M | 104.9M | 105M | 105M |
| Metric | FY21 | FY22 | FY23 | FY24 | FY25 | Current |
|---|---|---|---|---|---|---|
| P/E | — | — | — | 237 | 61.1 | 105.4 |
| P/S | — | — | — | 20.1 | 13.3 | 14.5 |
| P/B | — | — | — | 1.25 | 1.27 | 1.56 |
| EV/EBITDA | — | — | — | 34.8 | 20.8 | 28 |
| EV/Sales | — | — | — | 15.3 | 14.1 | 16.6 |
| Earnings yield | — | — | — | 0.42% | 1.64% | 0.95% |
| FCF yield | — | — | — | 2.23% | 5.11% | 4.71% |
| PEG | — | — | — | — | — | -2.64 |
| Metric | FY21 | FY22 | FY23 | FY24 | FY25 | Current |
|---|---|---|---|---|---|---|
| Gross margin | 79.4% | 79% | 76.6% | 77.2% | 74.9% | 75.6% |
| Operating margin | 44.4% | 37.4% | 36.9% | 28.1% | 16.7% | 19.2% |
| Net margin | 40.3% | 35.2% | 33.1% | 8.5% | 21.8% | 13.1% |
| ROE | — | 3.72% | 3.6% | 0.53% | 2.08% | 1.46% |
| ROA | — | 3.39% | 3.37% | 0.51% | 1.61% | 0.97% |
| ROIC | — | 3.67% | 3.8% | 2.5% | 1.48% | 1.52% |
| Return on tangible assets | — | 3.66% | 3.64% | 0.55% | 1.82% | 1.17% |
| Metric | FY21 | FY22 | FY23 | FY24 | FY25 | Current |
|---|---|---|---|---|---|---|
| Current ratio | — | 0.78 | 1.06 | 13.6 | 5.11 | 2.65 |
| Quick ratio | — | 0.78 | 1.06 | 13.6 | 5.11 | 2.68 |
| Debt / equity | — | 0.08 | 0.05 | 0.02 | 0.22 | 0.28 |
| Debt / assets | — | 0.07 | 0.05 | 0.02 | 0.17 | 0.21 |
| Net debt / EBITDA | — | 1 | 0.72 | -11 | 1.08 | 2.96 |
| Interest coverage | 10.8 | 16.9 | 21.4 | 12.4 | 4.31 | 2.14 |
| Effective tax rate | — | 0% | 0% | 0.04% | 0.76% | 0.89% |
| Metric | FY21 | FY22 | FY23 | FY24 | FY25 | Current |
|---|---|---|---|---|---|---|
| Revenue per share | 0.5 | 0.7 | 0.89 | 1.15 | 1.74 | 2.13 |
| EPS (basic) | 0.2 | 0.25 | 0.3 | 0.1 | 0.37 | 0.37 |
| EPS (diluted) | 0.2 | 0.25 | 0.3 | 0.09 | 0.37 | 0.27 |
| Book value per share | — | 6.6 | 8.23 | 18.5 | 18.2 | 18.3 |
| FCF per share | 0.35 | 0.48 | 0.57 | 0.52 | 1.19 | 1.23 |
| Cash per share | — | 0 | 0.01 | 5.97 | 2.76 | 1.36 |
| Metric | FY21 | FY22 | FY23 | FY24 | FY25 | Current |
|---|---|---|---|---|---|---|
| Payout ratio | — | — | — | — | 194% | 244.4% |
| Dividend yield | — | — | — | — | 3.18% | 2.4% |
Split-adjusted payout per share by ex-dividend date.
| Ex-dividend | Amount |
|---|---|
| Jun 18, 2026 | $0.17 |
| Mar 18, 2026 | $0.17 |
| Dec 22, 2025 | $0.19 |
| Sep 30, 2025 | $0.16 |
| Jun 18, 2025 | $0.16 |
| Mar 14, 2025 | $0.16 |
| Dec 31, 2024 | $0.25 |
| $52.3M |
| — |
| Q1 26 |
|---|
| Q2 26 |
|---|
| Revenue | $24.2M | $25.5M | $28.2M | $29.8M | $34.9M | $38.7M | $41.4M | $48.6M | $54.1M | $58M | $63.3M |
| YoY change | — | — | — | +22.8% | +37.1% | — | +47% | +63.5% | +55.1% | +49.9% | +52.9% |
What the company owns (left stack) against what it owes plus shareholders' equity (right stack). The two stacks should match — that's the balance.
Click a row to chart it; unreported figures show a dash.
| Period | FY22 | FY23 | FY24 | FY25 |
|---|---|---|---|---|
| Cash & short-term investments | 77K | 566K | 626.4M | 289.6M |
| Receivables | 9.1M | 11.5M | 15.9M | 22.5M |
| Inventory | — | — | — | — |
| Total current assets | 9.7M | 12.7M | 686.9M | 338.9M |
| Property, plant & equipment | 205.7M | 252.2M | 420.3M | — |
| Goodwill & intangibles | 54.1M | 68.7M | 165.3M | 275M |
| Total assets | 758M | 921.6M | 2B | 2.5B |
| Accounts payable | 12.4M | 12M | 23.7M | 45.5M |
| Short-term debt | — | — | — | — |
| Total current liabilities | 12.4M | 12M | 50.4M | 66.4M |
| Long-term debt | 53.8M | 47M | 40.1M | 423.2M |
| Total liabilities | 66.2M | 59M | 90.5M | 556.3M |
| Shareholders' equity | 691.8M | 862.6M | 1.9B | 1.9B |
| Total debt | 53.8M | 47M | 40.1M | 423.2M |
| Net debt | 53.7M | 46.4M | -586.3M | 133.7M |
What the company owns (left stack) against what it owes plus shareholders' equity (right stack). The two stacks should match — that's the balance.
Click a row to chart it; unreported figures show a dash.
| Period | Q4 23 | Q2 24 | Q3 24 | Q4 24 | Q1 25 | Q2 25 | Q3 25 | Q4 25 | Q1 26 | Q2 26 |
|---|---|---|---|---|---|---|---|---|---|---|
| Cash & short-term investments | 566K | 600M | 2.5M | 626.4M | 594M | 429.9M | 430.1M | 289.6M | 305.8M | 154.7M |
| Receivables | 11.5M | 45.9M | 12.7M | 15.9M | 16.9M | 18.8M | 21.1M | 22.5M | 24.2M | 26.8M |
| Inventory | — | — | — | — | — | — | — | — | — | — |
| Total current assets | 12.7M | 645.9M | 21.7M | 686.9M | 652M | 513.3M | 491.7M | 338.9M | 353.5M | 198.9M |
| Property, plant & equipment | 252.2M | 271.3M | 339.4M | 420.3M | 466.7M | — | 639K | — | — | — |
| Goodwill & intangibles | 68.7M | 101.4M | 125.8M | 165.3M | 181M | 202.6M | 258.8M | 275M | 280M | 338.4M |
| Total assets | 921.6M | 1.6B | 1.2B | 2B | 2.1B | 2.1B | 2.4B | 2.5B | 2.6B | 2.8B |
| Accounts payable | 12M | 17.2M | 19.6M | 23.7M | 23.2M | 35.8M | 48M | 45.5M | 39.7M | 54.4M |
| Short-term debt | — | — | — | — | — | — | — | — | — | — |
| Total current liabilities | 12M | 17.2M | 19.6M | 50.4M | 40.4M | 53.2M | 65.5M | 66.4M | 58.6M | 74.1M |
| Long-term debt | 47M | 22M | 30.5M | 40.1M | 99M | 99.1M | 396.4M | 423.2M | 595.5M | 595.8M |
| Total liabilities | 59M | 39.1M | 50M | 90.5M | 185.2M | 204.8M | 521.8M | 556.3M | 721.8M | 748.8M |
| Shareholders' equity | 862.6M | 1.6B | 1.1B | 1.9B | 1.9B | 1.9B | 1.9B | 1.9B | 1.9B | 2.1B |
| Total debt | 47M | 22M | 30.5M | 40.1M | 99M | 99.1M | 396.4M | 423.2M | 595.5M | 595.8M |
| Net debt | 46.4M | -578M | 27.9M | -586.3M | -495.1M | -330.8M | -33.7M | 133.7M | 289.7M | 441.1M |
Cash from operations, what's left after capex, and what went back to shareholders. Bars below the line are cash going out.
Click a row to chart it; unreported figures show a dash.
| Period | FY21 | FY22 | FY23 | FY24 | FY25 |
|---|---|---|---|---|---|
| Net income | 21.1M | 25.7M | 31M | 10.3M | 39.9M |
| Depreciation & amortization | 15M | 26.6M | 32M | 41.9M | 72.4M |
| Stock-based compensation | — | 0 | 0 | 3.8M | 12.9M |
| Change in working capital | 380K | -1.1M | -2.8M | -5.6M | -1.4M |
| Operating cash flow | 36.6M | 51.5M | 60.4M | 48.1M | 124.6M |
| Capital expenditure | — | — | — | — | — |
| Investing cash flow | — | 0 | 0 | -913K | -2.4M |
| Dividends paid | — | — | — | — | -77.4M |
| Share repurchases | — | 0 | 0 | -23K | — |
| Financing cash flow | 41.1M | 273.3M | 126.9M | 1B | 341.8M |
| Net change in cash | 77.7M | 324.8M | 187.3M | 1.1B | 464M |
| Free cash flow | 36.2M | 49.9M | 59.2M | 54.3M | 124.6M |
Cash from operations, what's left after capex, and what went back to shareholders. Bars below the line are cash going out.
Click a row to chart it; unreported figures show a dash.
| Period | Q3 23 | Q4 23 | Q2 24 | Q3 24 | Q4 24 | Q1 25 | Q2 25 | Q3 25 | Q4 25 | Q1 26 | Q2 26 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Net income | 8.8M | 7.6M | 6.2M | -15.4M | 11.5M | 10.6M | 10.4M | 9.4M | 9.6M | 3.6M | 6.9M |
| Depreciation & amortization | 8M | 8.8M | 9.4M | 11.1M | 12.2M | 14.5M | 16M | 19.8M | 22.1M | 25.7M | 26.5M |
| Stock-based compensation | — | — | — | — | — | 3.6M | 3.1M | 3.1M | 3.2M | 3M | 2.8M |
| Change in working capital | 935K | -1.1M | -493K | -2.8M | 268K | -576K | 107K | -599K | -289K | -3.8M | -275K |
| Operating cash flow | 17.7M | 15.3M | 14.5M | -7.1M | 24.2M | 27.6M | 30M | 39.2M | 25.9M | 21.4M | 47.2M |
| Capital expenditure | — | — | — | — | — | — | — | — | — | — | — |
| Investing cash flow | — | — | — | — | — | -1.3M | -21.4M | 18M | — | -6.5M | 1.2M |
| Dividends paid | — | — | — | — | — | -26.5M | -17M | -17M | -17M | -20.1M | -18M |
| Share repurchases | — | — | — | — | — | — | — | — | — | — | — |
| Financing cash flow | 14.6M | 56.3M | 41.1M | 161.9M | 797.6M | 70.5M | -18.1M | 280.9M | 8.5M | 147.6M | -18.3M |
| Net change in cash | 32.3M | 71.6M | 55.6M | 154.8M | 821.8M | 96.8M | -9.5M | 338.1M | 34.4M | 162.4M | 30.1M |
| Free cash flow | 17.4M | 10.3M | 16.9M | -7.1M | 29M | 25.4M | 34.2M | 39.2M | 25.9M | 21.4M | 47.2M |