Test log
Bolt.new test data
Raw results for the Bolt.new review. The verdict is in the review.
- Tested
- 25 October 2026
- Tester
- Miles Foster
- Account
- Bought for this review at the public price
- Tests
- 8
- Screenshots
- 7
- Method
- Published methodology
- Environment
- Google Chrome on desktop
Results
| ID | Test | Key measurement | Score |
|---|---|---|---|
| T01 | Prompt to Working App | Brief to first version: about 12 min, 1 prompt | 4/5 |
| T02 | Spec Accuracy | Final app: 23 of 24 | 4/5 |
| T03 | Sign-in & Access Control | Attacks blocked: 1 of 2 | 3/5 |
| T04 | Database & Admin | Data checks passed: 6 of 6 | 5/5 |
| T05 | Iteration & Credit Burn | Finished in one message: 12 of 12 | 5/5 |
| T06 | Publish, Speed & Mobile | First publish: under 2 min | 3/5 |
| T07 | Export & Ownership | Files in the download: 66 | 4/5 |
| T08 | Pricing & Cost to Finish | Tokens used: 5.5 million of 10 million | 4/5 |
| Overall (in the review) | 4/5 | ||
Prompt to Working App
4/5Tested- Method
- The Fitting Room brief was pasted word for word (1,689 characters) and submitted at 22:30 UTC on 25 October 2026.
- Brief to first version
- about 12 min, 1 prompt
- Fix prompts
- 5, plus 1 test-only
- Tokens, build and fixes
- about 2.1 million
- Questions asked
- 2 design questions (skipped)
- Remark
- Live and passing in 1 hour 25 minutes with 6 prompts: under 90 minutes and 15 prompts or fewer is 4/5.
Raw notes
The Fitting Room brief was pasted word for word (1,689 characters) and submitted at 22:30 UTC on 25 October 2026. The clock stops when the app is live and 20 of the 24 checks pass, which is the published 25 of 30 in proportion once the six payment and email checks are left out. Every prompt and its tokens are in the ledger.
Bolt.new asked two design questions (look and logo), which I skipped. Version 1 was saved at 22:43 UTC, about 12 minutes after the submit, using about 1.3 million tokens. I published from the chat in under 2 minutes.
The first version was broken. The landing links pointed at /login and /signup/member, which are not routes, so sign-in sent visitors back home (fix F1, about 0.1 million tokens). The admin Instructors page crashed with React error 301 (F2). Booking could never work because the database function used a SQL lock that Postgres rejects with an aggregate (F4). The admin All bookings page and CSV were empty and the member counters and coach roster were wrong (F5). F3 was a test-only prompt that gave every member 5 credits.
After F5 at 23:55 UTC (1 hour 25 minutes after the submit, six prompts of which one was test-only) 23 of the 24 checks passed. The one that cannot pass is the password reset link.
- The first publish took under 2 minutes and the version 1 clock reads 22:43 UTC against a 22:30 submit.
Spec Accuracy
4/5Tested- Method
- The 24 checks that need no keys of my own were run against the live app, by hand and by script, with a screenshot per check.
- Final app
- 23 of 24
- Seed facts correct
- 10 of 10
- Invented items
- 3
- Remark
- 23 of 24 is 96%, the top band, but the top band needs nothing invented and three things were: 4/5.
Raw notes
The 24 checks that need no keys of my own were run against the live app, by hand and by script, with a screenshot per check. The six payment and email checks (C24 to C29) are left out because they need your own Stripe and email keys. The inbox check was read by hand. I also counted anything the brief never asked for.
The final app passed 23 of 24. The one that failed is C03: the password reset link goes to localhost.
All ten seed facts were correct. Inventions: a "Most popular" tag on the pass, "Monday through Saturday timetable" wording and stock photos from Pexels.
The timetable shows a weekly pattern with day tabs, not dated classes.
- Counts before the five fix prompts were not recorded as a total.
Sign-in & Access Control
3/5Tested- Method
- Sign-up, log-in, log-out and password reset for a member, a coach and an admin, then two attacks on the live app with the wrong session.
- Attacks blocked
- 1 of 2
- Password reset
- email arrives, link broken
- Remark
- Flows work, but one attack succeeds: 3/5.
Raw notes
Sign-up, log-in, log-out and password reset for a member, a coach and an admin, then two attacks on the live app with the wrong session. Requests and responses are saved as transcripts.
Sign-up worked for two members, the admin (with the single-use first-admin code Bolt.new printed in the chat) and the coach (with an invite code made by the admin). A session survived a reload. The reset email, from Supabase Auth, arrived in 11 seconds, but its link goes to localhost, so no new password can be set on the published site (the SITE_ORIGIN secret was never set).
Attack 1 was blocked. Member A reading the bookings, profiles, credits and orders tables through the app's own API got only A's own rows; B's profile by email returned an empty list; the admin tables (messages, invite codes, email log) returned empty lists.
Attack 2 partly succeeded. A member's class edit and delete returned 200 with no rows changed, so they were blocked. But PATCH profiles with {role: admin} on the member's own row returned 200 and the role became admin. I restored it afterwards.
- Bolt.new's security audit (in the Publish dialog) was not run.
Database & Admin
5/5Tested- Method
- Six checks: the form and bookings write real records; they survive a reload, a republish and a design change; in Bolt.new's own data panel I viewed rows, filtered, added a row, deleted it, and exported as CSV and JSON.
- Data checks passed
- 6 of 6
- Tables listed at the end
- 10
- Remark
- Six of six checks pass, with nothing lost after the changes: 5/5.
Raw notes
Six checks: the form and bookings write real records; they survive a reload, a republish and a design change; in Bolt.new's own data panel I viewed rows, filtered, added a row, deleted it, and exported as CSV and JSON.
All six passed. The contact form and bookings wrote records. In the panel the classes table showed its 5 rows, the filter worked, an added row saved, and deleting it brought the count back to 5. Export as CSV downloaded with every column and Export as JSON was offered. After the twelve changes all five classes were still there, with the Power Reformer capacity of 4 from change 5.
- Record and storage limits were not read.
Iteration & Credit Burn
5/5Tested- Method
- The twelve scripted changes, one at a time, each one message.
- Finished in one message
- 12 of 12
- Regressions found
- 0
- Tokens for the twelve
- about 3.4 million
- Remark
- 11 or 12 first try with no regression found is 5/5. The check after each change was short, not the full 30.
The twelve changes
| # | Change | Tokens | Minutes |
|---|---|---|---|
| 1 | Phone field on sign-up | 0.3M | 2 |
| 2 | Rename instructor to coach | 0.4M | 6.5 |
| 3 | Dark green and cream colours | 0.1M | 1.5 |
| 4 | An About page | 0.2M | 1.5 |
| 5 | Power Reformer capacity 4 (data edit) | 0 | 2 |
| 6 | Coach filter on the timetable | 0.1M | 1.3 |
| 7 | Planted bug, then fix | 0.2M, then 0.1M | 1.5 + 1.5 |
| 8 | Second email when the admin cancels (not checkable) | 0.4M | 2.3 |
| 9 | Phone layout, one class per row | 0.3M | 1.8 |
| 10 | Bookings export for the admin only | 0.1M | 1.8 |
| 11 | Waiting list with position | 0.3M | 3.3 |
| 12 | Dark mode toggle | 0.9M | 4.5 |
1
- Change
- Phone field on sign-up
- Tokens
- 0.3M
- Minutes
- 2
2
- Change
- Rename instructor to coach
- Tokens
- 0.4M
- Minutes
- 6.5
3
- Change
- Dark green and cream colours
- Tokens
- 0.1M
- Minutes
- 1.5
4
- Change
- An About page
- Tokens
- 0.2M
- Minutes
- 1.5
5
- Change
- Power Reformer capacity 4 (data edit)
- Tokens
- 0
- Minutes
- 2
6
- Change
- Coach filter on the timetable
- Tokens
- 0.1M
- Minutes
- 1.3
7
- Change
- Planted bug, then fix
- Tokens
- 0.2M, then 0.1M
- Minutes
- 1.5 + 1.5
8
- Change
- Second email when the admin cancels (not checkable)
- Tokens
- 0.4M
- Minutes
- 2.3
9
- Change
- Phone layout, one class per row
- Tokens
- 0.3M
- Minutes
- 1.8
10
- Change
- Bookings export for the admin only
- Tokens
- 0.1M
- Minutes
- 1.8
11
- Change
- Waiting list with position
- Tokens
- 0.3M
- Minutes
- 3.3
12
- Change
- Dark mode toggle
- Tokens
- 0.9M
- Minutes
- 4.5
Raw notes
The twelve scripted changes, one at a time, each one message. After each change I published with Update and ran a short check of the member, admin and coach screens. The tokens and minutes are in the ledger.
All twelve finished in one message each and the short check passed after every one. Change 5 (Power Reformer capacity 4) was only a data edit and saved no new version. Change 8 (a second email when the admin cancels) could not be checked, because the app sends no emails without keys of my own. Change 7 planted a bug and the next message fixed it.
The twelve used about 3.4 million tokens. Dark mode used the most, about 0.9 million.
- A full re-run of the 30 checks after every change was not done.
Publish, Speed & Mobile
3/5Tested- Method
- Publish from the chat, then update after each change; Lighthouse mobile three times on the home page.
- First publish
- under 2 min
- Median mobile score (3 runs, home page)
- 78
- Own domain
- not tested
- Remark
- No custom domain was connected, so this is the vendor-address row: 3/5. The speed alone (78) would be 4.
Raw notes
Publish from the chat, then update after each change; Lighthouse mobile three times on the home page.
The first publish finished in under 2 minutes at fitting-room-pilates-4xkg.bolt.host, with no extra cost. Each later change needed the Update button; one update took 241 seconds.
Lighthouse mobile (version 13.5.0): 79, 78 and 77, median 78; largest paint 4.1 to 4.7 seconds, layout shift 0, blocking time 0 ms, about 511 KB in 11 requests.
The Publish dialog offers a custom domain and a security audit. I did not use either.
- Only the home page was measured; layout faults, a real phone and add to home screen were not.
Export & Ownership
4/5Tested- Method
- Project menu, Download; unpack in a clean folder, install the dependencies, build, and read the code for anything that only works on Bolt.new.
- Files in the download
- 66
- Build on my computer
- clean, 3 s
- Bolt-specific code found
- none
- Remark
- Runs after small rework, because it needs its own Supabase project: 4/5.
Raw notes
Project menu, Download; unpack in a clean folder, install the dependencies, build, and read the code for anything that only works on Bolt.new.
The Download item gave a zip of 66 files (754 KB) on the second try; the first attempt showed no file. It holds a Vite and React project with react-router, a supabase folder with the database migrations and three edge functions (checkout, booking emails and the payment webhook), and a .env file with two Supabase values.
A search of src and supabase found no Bolt-specific package or reference. npm install and npm run build ran clean on my computer, building in 3 seconds. To run it elsewhere you need your own Supabase project, the migrations applied, the three functions deployed and the two values set. I did not read Bolt.new's terms.
- Not run end to end against my own Supabase project; the terms were not read.
Pricing & Cost to Finish
4/5Tested- Method
- Prices were read on bolt.new/pricing on 26 October 2026.
- Tokens used
- 5.5 million of 10 million
- At the plan rate
- about $13.75
- Remark
- Finished within the entry paid plan with the allowance clear, but no cap was shown and running costs are unknown: 4/5.
What it cost to finish the test app
| Stage | Tokens | At $25 per 10M |
|---|---|---|
| First build, tokens | 1.3M | $3.25 |
| Five fix messages used | 0.8M | $2.00 |
| Twelve changes | 3.4M | $8.50 |
| Everything | 5.5M of 10M | $13.75 |
First build, tokens
- Tokens
- 1.3M
- At $25 per 10M
- $3.25
Five fix messages used
- Tokens
- 0.8M
- At $25 per 10M
- $2.00
Twelve changes
- Tokens
- 3.4M
- At $25 per 10M
- $8.50
Everything
- Tokens
- 5.5M of 10M
- At $25 per 10M
- $13.75
Raw notes
Prices were read on bolt.new/pricing on 26 October 2026. The token ledger priced the whole test at the plan's rate: 10 million tokens for $25 a month.
The whole test used 5.5 million of the 10 million monthly tokens (the build 1.3, five fixes 0.8, twelve changes 3.4). At $25 per 10 million that is about $13.75, and the first working version about $5.25.
Unused tokens roll over one month and then expire (the meter said 25 December 2026). What happens at the limit was not tested. The next plan is $50 a month for 26 million tokens.
Stripe and email fees are separate and were not measured.
- Limit behaviour and the free plan's limits were not read.
Coverage
Tested
- One brief built, published and checked with 24 written checks
- Two scripted attacks on the live app
- Twelve changes with a short check after each
- Six data checks in Bolt.new's own database panel
- Project download, install and build on my own computer
- Publishing and three Lighthouse runs on the home page
- Plans, the tokens used and the cancellation
Not tested or limited
- Payments and emails were not tried because they need your own keys (Stripe and an email service); the six payment and email checks are left out and the grade counts 24 checks
- For testing only, one prompt gave every member 5 free credits
- The downloaded project was installed and built, but not run end to end against my own Supabase project
- Support is not graded: the same question was emailed to support@bolt.new on 26 October 2026 and Bolt's reply is awaited
- Bolt.new's security audit, own domain, layout faults at three widths, a real phone and the log-in and timetable pages in the speed runs were not tested
Still to test
- Payments and emails with your own Stripe and email keys
- Support, once Bolt replies to the email of 26 October 2026
- The downloaded project run end to end against my own Supabase
- Own domain and a real phone