Recent Bug Fixes

July 16, 2026 Release notes
  • Generating invoices took longer than normal because the system scanned every service record for a company, including deleted ones. Skimmer now looks up only the relevant records, speeding up invoice generation.
  • The Day view option disappeared from the Schedule page whenever Scheduled was selected as the filter. Skimmer now shows the Day view option no matter which schedule filter is selected.
  • When a QuickBooks Online sync hit a record it could never successfully sync, the entire batch stalled. Skimmer now recognizes records that will never succeed, skips over them, and lets the rest of the batch finish and report its status correctly.
  • Under certain timing conditions, a payment sync to QuickBooks Online was dropped without any error, leaving the payment stuck showing In Process and never reaching QBO. Skimmer now handles that timing conflict so payment syncs reach QBO.
  • Skimmer resolved the following AI Insights issues:
    • Asking AI Insights to compare the next four weeks against the last four weeks returned a per-week average that was too low. Skimmer now calculates and displays the correct per-week average for that comparison.
    • When AI Insights searched for a specific product or text term, it built the search in a way that didn't follow Skimmer's standard method for handling user-provided text. Skimmer now uses that standard method for these searches.
    • AI Insights sometimes returned incorrect profit figures when a question spanned a date range that had to be split into multiple periods. Skimmer now calculates profit correctly across split date periods every time.
    • When AI Insights answered a profit question, the header sometimes displayed the wrong date range for the answer. Skimmer now shows the correct date range on profit answers.
    • AI Insights occasionally showed a technician's route assignment start date instead of the actual service date when listing daily route stops. Skimmer now consistently shows the correct service date for each route stop.
    • AI Insights displayed route-stop times in UTC instead of local time, putting them five hours off from Service History. Skimmer now displays route-stop times in local time in AI Insights Reports, matching Service History.
    • AI Insights treated scheduled, completed, and skipped service stops inconsistently, which could produce misleading counts. Skimmer now applies consistent logic across scheduled, completed, and skipped stops.
    • Asking AI Insights for a sales total could return very different numbers depending on whether it counted invoiced amounts or actual payments collected, sometimes even showing opposite year-over-year trends for the same question. Skimmer now applies one consistent, clearly defined sales total so results are reliable no matter how the question is phrased.
  • Skimmer resolved the following Embedded Bookkeeping issues:

    Note: These issues only affected pros signed up for the Embedded Bookkeeping Beta.

    • When Layer calculated sales tax on an invoice, rounding each line item separately could push the total a few cents above the tax total shown on the Skimmer invoice. Skimmer now calculates Layer's sales tax so it matches the invoice's tax total exactly.
    • When enrolling a batch of accounts in Layer, a single failed item could stop the whole batch without reporting the failure or retrying it. Skimmer now isolates failures so one problem account no longer stops the rest of the batch from enrolling.
    • A customer's payment was recorded, but the matching account credit was never applied, leaving the account balance incorrect. Skimmer now applies the account credit correctly whenever a payment is recorded.
    • A data export crashed whenever a customer activity log entry was missing an update timestamp. Skimmer now handles missing timestamps gracefully so the export completes successfully.
  • On the Schedule page, certain dropdown menus were hidden behind an overlay, making them unusable. Skimmer now displays Schedule dropdowns above the overlay so they're visible and usable.
  • In the Add Equipment Item window, the Type, Manufacturer, and Model dropdowns grew taller after a value was selected, shifting the rest of the layout. Skimmer now keeps these dropdowns a consistent height, so selecting a value no longer shifts the layout.
  • If a Stripe refund was canceled, the invoice still counted it as refunded, so the refund amount was counted twice. Skimmer now reverses a canceled refund correctly so the invoice reflects the accurate refunded amount.
  • When a technician started a route stop late, the started late indicator tooltip didn't appear. Skimmer now shows the started late tooltip whenever a route stop starts late.
July 9, 2026
  • The "No dosages/No readings entered for consecutive stops" alert email included customer details in the subject line and body, even though the email is meant for the technician's eyes only. Skimmer now strips customer info from these emails, leaving only what's relevant to the tech. 
  • Line items on invoice PDF attachments didn't show the date the service was performed. Skimmer now includes the service date under each line item description on the PDF. 
  • When a route assignment was added, changed, or removed from the mobile app, that change didn't appear in the customer's Recent Activity, leaving no record of who made the change or when. Skimmer now logs these changes so they show up in Recent Activity with who made them and when. 
  • When asking AI Insights for a report covering the last several months, the current month was left out, an extra unrequested comparison to a prior period was added, and the date range shown didn't match what was actually returned. Skimmer now includes the current month and labels the date range correctly. 
  • The same question could return different table results depending on which internal version of AI Insights answered it, producing inconsistent answers to identical questions. Skimmer now returns consistent results no matter which version handles the request. 
  • Exporting and re-importing your product list now correctly handles products that have been discontinued, instead of causing errors or unexpected results. 
  • When the Type, Manufacturer, or Model field on an equipment record had a long value, the text spilled into the next field on the screen instead of staying contained. Skimmer now keeps long values contained within their own field. 
  • Companies with a large number of QuickBooks Online customers could crash their browser when opening the sync mapping page. Skimmer now handles large customer lists on this page without crashing the browser. 
  • On the Customer Balance Summary report, customers with an outstanding balance showed $0 in accounts receivable, making it look like nothing was owed even though money was still due. Skimmer now calculates and displays the correct outstanding balance for these customers. 
July 2, 2026
  • The Service Rates print view sorted results by first name. In addition, pros could only print the report one page at a time. Skimmer now sorts correctly and prints the full report.
  • The Edit Order page displayed cost changes with an older visual style that didn't match the rest of the app. Skimmer now shows cost changes with the current styling.
  • New customer leads created through AI Phone weren't getting a location, so they landed at coordinates 0,0 and never appeared on the route map. Skimmer now geocodes these leads correctly so they show up where they belong.
  • The date filter on the Payouts Report excluded some rows that should have been included in the results. Skimmer now returns every row that falls within the selected date range.
  • We resolved the following AI Insights (Early Access) issues:
    • AI Insights built its underlying queries with incorrect start and end date values. Skimmer now generates the correct dates.
    • Start and complete times for route stops in AI Insights tables displayed in UTC rather than the user's local timezone. Skimmer now shows these times in local time.
    • When a pro asked AI Insights a question about a specific day of the week, like "how many stops did I do on the last Monday of each month,” the answer reflected the wrong day. Skimmer now rejects an invalid weekday calculation instead of quietly correcting it to the wrong day, so "last weekday" questions return the day that was asked about.
    • Because service dates were stored with a time component, questions about a specific day (like "last Monday") returned zero matching results. Skimmer now matches on the date correctly, regardless of the stored time.
    • Questions about installed items pulled results from a customer tag with a similar name instead of actual installed-item records, returning payment data instead of item data. Skimmer now pulls from the correct installed-items data.
    • Filters like "stops after 3pm" compared against UTC time while the results displayed in local time, so the wrong stops came back. Skimmer now compares filters in local time so the results match what's shown.
    • AI Insights displayed a placeholder date of January 1, 2010 as the completion time for service stops that hadn't finished yet. Skimmer now leaves the completion time blank for stops that aren't done.
    • Questions about time spent on work orders pulled from an empty data source and always returned zero. Skimmer now pulls from the correct source and returns accurate durations.
June 25, 2026
  • Customer Invoices
    • Some customers' invoices appeared correctly in the Pool Service tab but not in the Invoices Preview section. We corrected the display logic so invoices now appear consistently in both locations.
  • AI Insights (Early Access)
    • The AI Insights column detector missed several money columns and incorrectly flagged some count columns as currency fields. We updated the detection algorithm to recognize additional money column patterns and reduce false positives.
June 18, 2026
  • AI Insights (Early Access)
    • When asking for data about a specific date, AI Insights sometimes ignored that date and returned results for a broader default range instead. AI Insights now respects the date specified when the data table is built.
    • In the expanded view of the AI Insights panel, the data table would jitter while text was typed in the prompt field. The layout no longer jitters when you type in the prompt field.
    • When an AI Insights query returned no matching data, an empty table was rendered instead of a clear no results message. The view now displays a no results message instead of an empty table.
  • Customer Search
    • When you searched by customer name in the Quotes or Invoices pages and then deleted the text from the search field, the filter was not cleared and the results list stayed filtered instead of resetting. These lists now refresh when the search field is emptied.
  • Data Imports
    • When importing products from a spreadsheet, any row with a markup percentage above 999.99 or an oversized cost or price value caused the entire import to fail with only a generic "Failed to import" message. The importer now validates those fields before saving and returns a clear message explaining which value is out of range.
    • When importing customers from a spreadsheet that included a Customer Status column, that column was ignored. Every imported customer was set to Lead, regardless of the value specified in the spreadsheet. The import now reads and applies the status value from the spreadsheet correctly.
  • Invoice Settings
    • The selection fields for reminder days and suspension days in Invoicing Settings didn't respond to taps on Safari for iPhone and iPad, making it impossible to update those settings on mobile. The fields are now fully usable on iOS Safari.
  • Quotes
    • Admin users could not approve quotes on behalf of customers, even when payment was not required at the time of approval. Admins can now approve quotes without a credit card being required. 
  • Work Orders
    • When a work order was linked to a customer registered as a business rather than an individual, the customer name displayed as "null null" instead of the company name. Company names now appear correctly on work orders.
    • When work orders on a job were moved to Scheduled, the parent job's status did not update and stayed stuck at "Not Started." The job status now recalculates correctly when work orders are scheduled.