We break it on purpose, and we publish what happened.

Every KDS says it works offline. This page is the test results, run on every release, including the runs that failed.

Set the network state

Everything is running. New orders arrive from your cloud POS and from your local network, and reporting is current.

#141 Dine-in 12 02:14
2 Smash burger
no onion
add bacon
1 Fries
#142 Takeout 03:41
1 Chicken sandwich
1 Slaw

Allergen: peanut

#143 Dine-in 4 01:02
3 Wings
hot
1 Ranch
#144 Delivery 05:20
1 Cheeseburger
2 Onion rings
#145 Dine-in 9 00:48
1 Cobb salad
dressing on side
1 Iced tea

Now pull the plug.

Drop the network and keep bumping. Nothing stops. Watch the queue fill, then reconnect and watch it drain, oldest first.

Live — try it Offline and back
Connected Nothing queued

Bumps reach the server as they happen.

Timers run at 4× speed.
no onion
add bacon

0/2 made

Allergen: peanut

0/2 made

hot

0/2 made

    Timers run at 4× speed. Ticket numbers are synthetic and sequential; no real order from any real kitchen appears on this page.

    This is the site, not the app, and it is not really disconnecting your phone. What it reproduces exactly is the architecture: the rail accepts a bump without asking the network, and the queue flushes in order on reconnect. Tab · Enter · Space · →

    The tablet is in charge, not the server.

    Most kitchen displays are a window onto a server. The tablet asks a computer somewhere what to show, and draws it. When the connection drops, the window has nothing to show.

    Ours is the other way around. The tablet keeps its own copy of every order. It draws from that copy, so the connection is not in the path between an order and your cook’s eyes. When the connection comes back, the tablet and the cloud compare notes and settle any difference.

    Every bump, strike, and hold you make while offline is recorded and sent up when the connection returns. Once, not twice. That last part is the hard part, and it is why the same piece of code runs on the tablet and on the server, so the two cannot disagree about what happened.

    What we test, every release.

    These are the tests we run on every release. No results are published yet; the first published results land at launch, and a failure appears here as a failure, with the date and what we changed.
    TestLast runResult
    Network cut for 30 minutes under loadpendingpending
    Router rebooted mid-servicependingpending
    App force-quit and restartedpendingpending
    POS outage, then a flood of replayed orderspendingpending
    500 orders on one screenpendingpending

    These are the tests we run on every release. No results are published yet; the first published results land at launch, and a failure appears here as a failure, with the date and what we changed.

    Network cut for 30 minutes under load

    Last run
    pending
    Result
    pending

    Router rebooted mid-service

    Last run
    pending
    Result
    pending

    App force-quit and restarted

    Last run
    pending
    Result
    pending

    POS outage, then a flood of replayed orders

    Last run
    pending
    Result
    pending

    500 orders on one screen

    Last run
    pending
    Result
    pending

    When a test fails, it goes on this page as a failure, with the date and what we changed. A page that only ever shows green is marketing. This is not supposed to be marketing.