What’s new in Playcode

151 updates in the last 90 days.

New features, improvements and fixes, newest first.

RSSJSON FeedMarkdown for agents

Our rocket on its pad beside a tall board of update cards: the builder pins a fresh card at the top, Play fits a new part to the rocket, and two passing suits stop to stare.

September 2026

ImprovedAdd to your app

App AI prices now match chat prices

AI used inside your hosted apps is now priced per model, exactly like the in-chat prices - one price book everywhere. Most models move to the standard rate; the flagship cards keep their premium pricing unchanged.

FixedAccount and billing

Email sign-up works again on our website

For almost two weeks, starting September 16, signing up with email on the Playcode website did not work. Sign-in codes had just become six digits long as part of a round of security hardening, and the code box on our website still accepted only five. The last digit was cut off, so the code could never go through. Sign-up inside the app was not affected.

It's fixed. If you tried to sign up in those days, go back to playcode.io and use the same email. The code works now.

We're sorry. Our automated tests missed this because they still typed an old five-digit test code. They type six digits now, the same as you.

ImprovedAdd to your app

Email: Send to anyone turns on by itself once your domain is verified

One less switch to find. When your app's sending domain verifies, Send to anyone now comes on with it - your app can email customers right away, from your own domain, with one-click unsubscribe on every mail to a non-member. Before, verified-domain projects still had to discover the switch in Settings > Email; every one of them turned it on.

The switch stays where it was, as the off lever: turn it off and it stays off - for every app of the project, including ones created later. Nothing else changes: without a verified domain, delivery still goes only to recipients who confirmed their address, and the daily caps, suppression and unsubscribe protections run exactly as before.

ImprovedBuild

Loading gets bulletproof

We chased down a family of rare but painful loading failures - the kind where Playcode showed a spinner and simply never finished. All fixed today:

  • A freeze on certain networks and privacy settings. A stylesheet request could block the whole page from rendering on devices where third-party requests hang. Pages now render regardless, every time.
  • The editor recovers stuck browser storage by itself. If your browser's local database wedges (an old tab holding a lock, strict privacy modes), Playcode now detects it in seconds, repairs it, and continues - your work lives on our servers, so nothing is lost.
  • The preview says so instead of spinning. If the preview engine can't start on a slow connection, you now get a clear retry button within seconds instead of an endless spinner.
  • Clearer sign-in errors. If an ad blocker or filtered network breaks Google sign-in or the human-check, the dialog now tells you what to do instead of silently resetting.

If loading ever felt stuck for you before - it wasn't your device, and it's fixed. Thanks to the users whose reports led us straight to it.

NewDevelopers

Webhooks, and an activity ledger for your workspace

Your server can now hear Playcode. In Workspace settings, Developers gained Webhooks: add an endpoint and we POST every matching event to it - a domain changed, a publish started, mail delivered or bounced. Every delivery is signed with a secret we show you once; verify it, and replay protection comes from the delivery id. Failures retry on their own for about three days, and Send again runs one now. Filter by type, like domain.*, or take everything.

Beside it, Activity: every write in the workspace, the moment it happens - who did it, through which door (the app, the CLI, the API, an assistant), and what it touched. It is the audit answer for a token or a tool you let act as you.

The same ledger is on the API as eventSearch, so a script can follow your workspace with a cursor instead of polling each resource.

ImprovedAdd to your app

Ask for payments, get Stripe best practices by default

When you ask the assistant to add payments, subscriptions, or a checkout to your app, it now follows a Stripe playbook by default:

  • Stripe Checkout over custom card forms. The hosted payment page converts better - Apple Pay, Google Pay, one-click Link, and local payment methods appear automatically - and Stripe's own card-testing defenses stand in front of it. Playcode sells its own plans the same way.
  • Fraud protection armed from day one. Stripe.js loads on every page of your site so Stripe Radar can tell real customers from bots, and the assistant reminds you to keep Radar on. An unprotected payment form gets found by card-testing bots within days, and the disputes that follow can get a Stripe account blocked.
  • Keys handled safely. Secret keys stay on the server, never in page code. On browser-only projects the assistant uses Payment Links, which need no keys at all.
  • Real fulfillment. Purchases unlock through verified Stripe webhooks, not just "the buyer landed on the success page".

FixedPublish

Turning on www now works for every custom domain

If your domain was connected with an A record - the way most DNS providers connect a root domain - turning on "Also answer at www" failed with a confusing error about Cloudflare, no matter what you changed at your provider. The www setting now follows how your root domain is served: flip the switch, add the one record it shows you, and www goes live on the same address as your root.

ImprovedBuild

Claude Opus 5.5 is the new Quality default

Claude Opus 5.5 is now the default model on the Quality tier. It is Anthropic's newest Opus, it keeps the 1M-token context window and the 128K maximum answer length of Claude Opus 5, and it costs less per token: $4 in / $20 out per million against Opus 5's $5 / $25, with re-read context dropping from $0.50 to $0.20 per million.

One thing to know about credits. Opus 5.5 thinks for longer before it answers. On our own benchmark it spends roughly 1.8 times as many tokens working through the same task, which more than cancels out the lower price per token - so a typical job costs somewhat more, not less. We chose it as the default anyway, because the work it returns is better.

Claude Opus 5 is still one click away in the model picker, and it is the cheaper of the two per answer. If you would rather trade some quality for a smaller bill, pick it - and anything you have already pinned to it stays exactly as it is.

ImprovedBuild

GPT-6 Sol and GPT-6 Luna arrive at half the price of the models they replace

OpenAI completed the GPT-6 family today, and both new models cost exactly half what their predecessors did. They take over the seats those models held in the picker.

GPT-6 Sol replaces GPT-5.6 Sol on the Quality tier, at $2 in / $10 out per million tokens instead of $4 / $20. OpenAI positions it as the balance of intelligence and cost, and its own testing puts it ahead of GPT-5.6 Sol on professional work, factuality and coding.

GPT-6 Luna replaces GPT-5.6 Luna on the Fast tier, at $0.10 in / $0.50 out instead of $0.20 / $1.20. That makes it the cheapest model we offer - good for simple pages, quick edits and high-volume work.

Both keep the 1M-token context window and the 128K maximum answer length of the models they replace, and we pass the full price cut through, so the same work costs fewer credits.

Nothing you have pinned breaks. GPT-5.6 Sol and Luna stay available to existing chats; chats and preferences set to them move to the GPT-6 equivalent automatically, which is cheaper for the same job.

FixedBuild

When the AI provider refuses a request, you are told, and not charged

Very rarely, the AI provider's safety filter refuses a request outright and returns nothing. Until now the chat showed an empty reply with no explanation, and the turn was still charged. Both are fixed:

  • You are told. The chat now shows a notice that the provider declined the request, and that the cause is usually something earlier in the conversation rather than your last message. The action offered is Undo & rephrase, because sending the same thing again gets the same refusal.
  • You are not charged for a refused turn that produced nothing.

ImprovedBuild

Every dialog now speaks one design

Every popup in Playcode - confirmations, settings sheets, menus, tooltips - has been rebuilt on one design system, so the whole app now asks questions the same calm way.

  • Destructive actions ask properly. Deleting a chat, folder, project, domain or token states what happens in one plain sentence, and the most dangerous ones wake their button only when you type the exact name.
  • Clearer questions everywhere. Renames open with your current name ready to edit, the resize dialog shows the price before you switch, and the unlock-for-transfer flow hands you the code with a plain way to lock it back.
  • Menus and pickers cleaned up. The project, workspace and attachment menus render as one crisp panel, and the build-quality picker opens right by its button instead of covering your work.
  • Phone-friendly sheets. Top up and Share now open as bottom sheets on phones, with the main action in thumb reach.

FixedPublish

A busy month never takes your site offline: bandwidth is included, then metered

Pro includes 100 GB of Playcode Cloud bandwidth a month and Max includes 1 TB. Until today those numbers were enforced as a hard limit: when a workspace crossed it, its published apps were suspended until the next month - with no warning. That was wrong, and it is fixed.

  • Your site keeps running. Past the included amount, Playcode Cloud keeps serving your visitors and the extra traffic is simply metered at $0.05 per GB (0.2 credits), on the same balance as everything else. Nothing is charged for it before September 29, 2026, as announced.
  • You set your own ceiling. Spending controls in Settings → Billing are the only cap - yours, not ours.
  • The pricing page now says exactly this, instead of "100 GB / month", which read like a wall.

If your published apps were suspended by this limit today, they have been restored.

FixedAccount and billing

Sign-in no longer leaves you stuck

Two ways the sign-in window could leave you with nothing to press are fixed:

  • When the Google button cannot load. Some browser extensions, security tools, and office networks stop Google's sign-in button from loading. The window used to show an empty box and stay that way. Now it tells you within a few seconds that Google sign-in is unavailable, and that you can continue with your email instead - your Google address opens the same account.
  • When your browser fills in your email. If your browser or password manager filled in the email field for you, Continue could stay greyed out. It now always works, and if something is wrong with the address, Playcode says what.

FixedBuild

A file that fails to attach now says why

If a file you attached to the AI chat could not be uploaded, pressing Send used to do nothing - no message, no explanation. That is fixed:

  • Attach a file before you sign up. A file added to your first prompt now travels with it. Before, the message could fail to send right after you created your account.
  • You are told at once, by name. When a file cannot be uploaded, Playcode says which file and why - it could not be read from your device (common with files still syncing in OneDrive, iCloud, or Dropbox), your storage is full, the connection dropped, or it is not an image your browser can open - and what to do next.
  • Send never goes quiet. If a message cannot go because of a failed file, Playcode tells you so. Your text and your other files stay exactly where they were.
  • Nothing gets dropped. When one file in a batch failed, the files that did upload used to disappear from your draft. They stay now.

FixedBuild

Uploaded images no longer break when the AI moves them

When you uploaded an image and the AI moved it into another folder - for example into public - the image could turn blank, even though the AI said the move had succeeded. Images you upload now keep working wherever the AI moves them, and undoing a move restores them correctly.

NewAccount and billing

Credits now cover cloud computers and AI in your apps, and Usage shows every service

Your workspace credits are now one balance for everything Playcode runs for you. Until today only the AI chat and agents drew credits.

  • Cloud computers use credits while they are awake, for the disk they

keep, and for traffic beyond the included amount. A sleeping computer bills disk only. Each computer's rate is shown next to its hours in Settings > Usage.

  • AI in your apps - requests your apps make through the AI Gateway with

their secret key - use credits too, at the model's rate.

  • Email beyond your plan's included sends keeps its per-email price.

Settings > Usage now shows all spending in one place: AI chat + agents, one row per project whose apps used the AI Gateway, Email, and one row per cloud computer, each with quantity × rate = credits. The period buttons at the top drive the whole page - today, this week, this month, all time - and the spending list names the period beside its total. Email alone is shown per billing cycle, because its included sends are a cycle allowance.

If your credits run out, AI requests pause until you add credits. Email beyond your plan's included sends is stored but not delivered until you do; included sends and mail to your own team always go out. Cloud computers keep running: we email you, and only if the balance is still empty 72 hours later do they pause. Nothing is deleted, and the same computers start again as soon as credits are added.

Nothing changes about how you buy credits, and your balance shows the same number in the editor, in Billing and in Usage.

ImprovedBuild

Language templates open with your code in front

Open a JavaScript, TypeScript, React, Python, SQL or any other language template and the code is the first thing you see: the file tabs on top, the file tree on the left, the AI Chat right under the editor, and the live preview with the console beside them.

Before, every template opened with the chat alone and the code sat a click away in the menu.

Website and business templates keep opening chat-first: describe what you want, and the preview updates as you go.

FixedAdd to your app

Connecting Search Console checks the permission

Google's permission screen lets you continue without ticking the Search Console box. Before, Playcode still showed the account as connected, and every request the agent made on it came back with a permission error.

Now that connection is refused on the spot, and the Connections page says which permission to select before you try again. A connection granted that way earlier is marked as revoked within a couple of hours, with the usual Reconnect button.

NewBuild

The Phone tab, and a dev machine's address that works on your phone

Mobile projects get a Phone tab beside Preview (View, then Phone; on the phone it is in the project menu). It shows your app the way a phone sees it, a QR code to scan with your phone's camera, and one line that says whether the phone preview is running. The QR opens the app in your phone's browser: nothing to install, no account. A Browser | Expo Go switch turns it into the native preview for Expo Go when you want that; Expo now asks for the same Expo account on the phone and on the dev machine, and the chat walks you through it. When you are already on the phone, the tab has an Open on this phone button, and the address in a chat card is a link you can tap.

Your dev machine now has its own address. Anyone you give it to can use the app while the machine is on: your phone, a teammate, a client on a call, a webhook you are testing. The machine stays awake while the app is in use from any device.

Only you can turn it on: opening the project in Playcode wakes it, and so does the agent while it works for you. It goes to sleep after a quiet while, and after four hours without you or the agent. When the app on your phone finds the machine asleep, it shows a banner with one button that opens the project and wakes it.

The address is not a public link. Publishing still is: a published app keeps its permanent link that works for everyone, whether your dev machine is awake or not.

NewAccount and billing

See where you're signed in, and sign out a lost laptop

Your Profile settings now list every browser you are signed in on - the browser and system, when it signed in, when it was last seen - with Sign out on each row and Sign out everywhere else in one click. Signing out really ends that session on our side, so a lost laptop stays out.

Sensitive actions - buying a domain, changing your sign-in email, creating or revoking a token - now ask you to confirm it's you with the sign-in code when it has been a while since you last did. Everyday work never asks.

In Workspace settings, Developers gained a Signed in as you list: the tools you let act as you through Sign in with Playcode, the workspace each one may act in, what it may do, and Revoke to sign a tool out on every computer at once. The project's Secret key pane replaces API keys: the key your app already has, masked, copied on purpose, rotated when it leaks.

FixedAdd to your app

Sending-domain records you can actually copy

When you add your own sending domain in Settings > Email, the DNS records now show every field in full: Name, Value and, for the MX record, Priority, each with its own copy button. Before, the name was cut off on screen and only the value could be copied, so the long DKIM names had to be retyped.

Copy all records puts the whole set on the clipboard as labelled text, for a note or for whoever runs your DNS.

If your domain's DNS runs at GoDaddy or Namecheap, the names are shown the way those providers' Name field expects them, without your domain at the end.

ImprovedPublish

Domain settings say what the check saw

When you move a domain's DNS to Playcode, the certificate for the bare name now follows the nameserver change as soon as it lands, instead of up to an hour later. The check that decides it reads the registry itself on every pass.

Settings > Domains tells you exactly what that check saw: which nameservers answer today, which ones they must be, and when we last looked. The old sentence that promised a fix "within minutes" is gone.

"Finish setup" on a domain whose DNS moved here opens the same three-step switch the connect flow shows: the values to paste, what the world reports while the change spreads, and the done card once everything serves.

Moving DNS to Playcode keeps a www that already points at your Playcode site, and the review list says plainly when an unchecked record would leave a name unanswered after the switch.

ImprovedAdd to your app

Send to anyone now covers both environments, and held mail gets a Deliver button

Turning on Send to anyone in Settings > Email now applies to your Development and Production computers at once. Before, only the published app was switched on, so a test send from the editor could still be held while the page said delivery was live.

Mail that was held before you switched it on no longer sits there: every held address now shows a Deliver button as soon as your domain is verified and Send to anyone is on, including addresses that were never added to your verified recipients.

Your sending domain verifies within seconds of the records going live, with nothing to click. The assistant can check a domain for you too, and reads each email under the computer it came from.

Adding a customer's address to Verified recipients now warns you first: that list is for your own inboxes, and each add sends the person a permission request. Customers are reached through your own domain.

ImprovedBuild

The assistant never runs out of checkpoints before a risky change

A cloud computer keeps up to 20 checkpoints you own. When the assistant reached that number it used to refuse to take a new one, and a schema migration could go in without a rollback point. Now, at the cap, the assistant replaces its own oldest checkpoint and tells you which one it replaced. The checkpoints you saved yourself are never the ones replaced.

If the Checkpoint history dialog cannot open, it now says why instead of staying blank.

NewPublish

Connect an address you own: we look up where it lives and recommend the way

Giving your site an address you already own used to start with four tabs named after mechanisms. It now starts with the name. Type it, and Playcode looks up where it is managed and recommends the best way first:

  • Let Playcode handle everything - we copy your current settings over,

your email keeps working, and you make one small change at your provider. Then never again.

  • One setting at your provider - one line to add, and we watch until it

lands.

  • Playcode's address at your provider - the plainest setting there is,

for providers that cannot do the one above.

Each card carries a ? that says in one sentence what the setting is. On Cloudflare, the one setting leads and nothing pushes you off it. Moving the whole registration to Playcode is a quiet line under the first card, not a tab.

The setting card shows a live chip - *Not seen yet*, *Found*, *Live* - and turning on Also answer at www adds its one extra setting right there, same visit. The same flow runs for Playcode Cloud and Playcode Pages projects, and the workspace's Domains list now keeps watch on its own while anything is still setting up.

ImprovedBuild

DeepSeek V4.1 Flash replaces V4 Flash on the Fast tier, now with image input

DeepSeek V4.1 Flash is now the DeepSeek Flash option on the cheap-and-fast tier, in place of DeepSeek V4 Flash. DeepSeek retired V4 Flash today and shipped V4.1 Flash on a new architecture that its own tests place ahead of DeepSeek V4 Pro - and it can now see images (V4 Flash was text-only), so screenshots and reference designs work on this model too.

It is also cheaper: $0.30 in / $1.20 out per million tokens, down from $0.44 / $1.32. We pass the cut straight through, so the same work costs fewer credits.

If you had DeepSeek V4 Flash selected as a default or on a chat, it now runs on V4.1 Flash automatically - nothing to change on your side.

Gemini 3 Flash remains the tier default.

NewBuild

The AI agent now reads the PDF, Excel, Word and CSV files you attach

Attach a document to the chat and the agent can work from it - no more re-saving a spreadsheet as CSV so it can be read.

  • PDF: the agent sees the document itself - text, tables and layout -

the same way it sees an attached image.

  • Excel (.xlsx) and CSV: the agent reads the rows, one sheet or many.

Export a table from your project, edit the prices in Excel or Google Sheets, attach it back, and the agent updates the site from it.

  • Word (.docx): headings, paragraphs and tables come through as text.

This works in browser and Cloud projects, and for files you attached before today. Very large PDFs (over 100 pages) are not shown to the agent; it will ask you for the relevant pages instead. Legacy formats (.xls, .doc, .pptx) are not supported yet - save as .xlsx, .docx or .pdf.

ImprovedPublish

Your domain's status now says what it is waiting for

The status chip next to a custom domain in Publish and in Workspace > Domains used to say only *Verifying* or *Action needed*. It now tells you why:

  • Waiting for your DNS change - the record you added has not reached us

yet. This takes minutes, sometimes up to a day.

  • Issuing the certificate - your DNS is right and the HTTPS certificate

is on its way.

  • DNS does not point to Playcode yet - the certificate could not be

issued. Fix the records and we retry on our own.

  • Active until a date - the certificate renews itself before it expires.

Nothing to do.

The same reading applies to every domain, however it is connected, so two screens never disagree about the same address.

FixedPublish

Custom domains: root domains connect on their own, and connections heal themselves

Two fixes for custom domains on Playcode Cloud.

Root domains now go live. A root domain (example.com, not www.example.com) needs one extra verification record at the edge before it can serve over HTTPS. When Playcode runs your DNS - a domain bought here, or one you moved to Playcode nameservers - that record is now added for you the moment you connect, and the edge is asked to check it right away. If your DNS stays at another provider, the connect dialog shows the record beside the routing record, and the assistant lists both.

Connections no longer get lost while you set up DNS. A connection made before a nameserver change had finished could be dropped as abandoned. Playcode now keeps every connection you make, checks it against the edge every few minutes, and restores it automatically while your domain points at Playcode. If a domain never points at Playcode for a week, you get one email and can reconnect any time.

The Domains settings and the assistant's domain status now say what the edge actually serves, not only whether DNS has landed.