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.

October 2026

FixedPublish

Sites with many pages publish again, and faster

A static site with many pages publishes again. Before, a large site could stop at the build: Publish showed "transaction timed out" or a memory error, and the live site kept its old version.

  • Now: a site with dozens of pages builds and publishes.
  • Shared styles are one file. Pages that use the same stylesheets now share one CSS file. A visitor's browser loads it once, not again on every page, and each publish uploads less.
  • A large file no longer holds up the rest. Other files upload while a video is still on its way.

Pages that share stylesheets get the shared file the next time you publish.

ImprovedBuild

A missing file no longer turns the preview white

When your page links a file that your project does not have, such as a stylesheet, a script or an image, the page now shows without that file, as a browser shows it.

  • Before: one missing file stopped the whole page, and the preview went white.
  • Now: the page shows, and a small note at the bottom of the preview says what is missing. Click it to see every problem in the console, with the file and the line. Click Fix it to hand the problems to the agent.
  • A broken change keeps your page. If your last change breaks the code, the preview keeps the page that worked and tells you so.
  • Publishing works too. A site with a missing file publishes, and it looks the same as in the preview.
  • Files in public load. A stylesheet or a script in your public folder that your page links to now loads, in the preview and on your published site.

Try it: Fix the problems in the preview.

FixedBuild

A very long page or PDF no longer stops the chat

When the agent reads a very long web page, a PDF from the web or a large file, it now takes the first part of it, and the chat goes on.

  • No more stuck chats. Before, one very large document could fill the whole conversation. The chat then stopped and asked you to click Continue, and every Continue stopped again.
  • The agent knows the rest is missing. It sees that the text was cut and how much was left out.

ImprovedDevelopers

Playcode SDK 0.7: an agent keeps its reasoning from one run to the next

@playcode/sdk 0.7 (npm) is out, and 0.7.1 is the latest. New Cloud apps start on it. In an older app, ask the agent to update the SDK: it reads the upgrade steps in the SDK's changelog first.

  • The next run keeps the model's reasoning. A model's turn now carries its private parts, Claude's thinking and Gemini's thought signatures, sealed as replay. The next run of a conversation sends them back where the model's maker accepts them, so the model keeps its reasoning and the prompt cache reads the repeated part. Before, every new run dropped them.
  • Keep each message whole in your store. A store that keeps only the fields it knows drops replay, and the next run goes without the thinking. agentStoreContract checks it. Pages never receive replay.
  • A long conversation stays inside its limit. The SDK measures each call before it goes out, Claude's earlier thinking included. It clears old tool results first, then a brief stands in for the older part. A call that still does not fit is not sent, and the run ends with the new finish: "context-limit".
  • A brief has room to think. Its request carries the run's thinking and up to 16,384 output tokens, or the model's own cap when lower, so a model that always thinks no longer spends its room before it writes the brief.
  • Fewer writes to your database. With the new optional appendRunMessages, a store writes each step once: 142 KB for a 50-step test run, against 7 MB without it.

What goes back to which model: Private parts.

Read the docs

Try it: Update my app's Playcode SDK to the latest version.

FixedBuild

The agent picks up background work that finishes as it replies

When a task or a command the agent started in the background finishes just as the agent ends its reply, the agent now picks up the result on its own.

  • No more silent stops. Before, such a result could wait until you wrote again, and the chat looked stuck.

FixedBuild

A question from the agent stays open until you answer it

When the agent asks you a question, the answer form now stays in the chat until you answer it.

  • Background work no longer closes the form. If a task the agent started in the background finished right after the question, the form showed "Questions answered" though you had not answered, and the chat looked stuck.
  • Approval cards keep their buttons. A card that asks you to approve a purchase or a change no longer loses its buttons when a background command finishes.

FixedPublish

Moving a domain to Playcode checks DNSSEC first

When you move a domain's DNS to Playcode, Playcode now checks whether DNSSEC is still on at your registrar. Your old DNS provider may have turned it on, and it does not work with Playcode's nameservers.

  • Before the switch, the app and Playcode AI tell you to turn DNSSEC off at your registrar first, then wait a day before you change the nameservers.
  • After a switch with DNSSEC still on, the domain's status says so and names the one setting to change, instead of showing the domain as connected.
  • It clears by itself. Once DNSSEC is off, Playcode sees the change on its own.

Before, nothing warned you. A domain moved with DNSSEC still on stopped working for many people, its site and its email, while Playcode showed it as connected.

The steps are on My domain does not work.

Read the docs

FixedBuild

Open preview in a new window shows your project, not a blank tab

Open preview in a new window in the preview toolbar now shows your project in its own tab.

  • Before: in some browsers, most often Safari, the new tab stayed blank

and showed only your page's title.

  • Now: the tab shows your project, the same as the preview in the editor.

FixedPublish

A subdomain connects in one step when Playcode runs your DNS

When the DNS of your domain already runs at Playcode, a name under it, like shop.example.com, now connects in one step when you connect it to a project.

  • Playcode adds the setting itself. There is nothing to copy to another provider.
  • The finish says what is true. It shows that the address is being secured until its padlock is ready, then that it is live.

Before, the flow could end on a card that said the name was live, and the name was not connected.

Read the docs

FixedPublish

Moving a domain away works, and Resend verification sends the email

Two fixes for domains bought at Playcode.

Moving a domain away works. Unlock & get transfer code gives the code once the domain's first 60 days after its registration, or its move to Playcode, have passed. Until then, the app says which lock holds the domain and the day it ends.

  • Only an Admin of the workspace gets the code. In your Personal workspace, that is you. Playcode's agent can get it too, when an Admin asks.
  • The registrant gets an email each time. It says who got the code and when, never the code itself.
  • Auto-renew turns off with the code, so Playcode charges no renewal for a domain on its way out. If you keep the domain at Playcode, turn Auto-renew back on.

Resend verification sends the email again. Before, the app said the email was sent, and none went out. If a domain still shows Verify your email, choose Resend verification once more.

Every rule for moving a domain away is on Domain renewals and fees.

Read the docs

ImprovedPublish

A domain renews at the price you bought it at

A domain you buy at Playcode now renews at the price shown when you bought it, or lower.

  • A higher renewal price never arrives as a surprise. It applies only after an email at least 30 days before the renewal.
  • A lower price still reaches you. If the Renew price in the fee table is lower than the price you bought at, your domain renews at the lower one.

The fees for every ending are on Renewals and fees.

Read the docs

FixedBuild

Code with HTML entities now saves exactly as the agent wrote it

When the agent writes code with HTML entities such as &, <, " or  , your files now keep them exactly as written.

  • Pages that escape text keep working. A helper that turns ' into ' could be saved with the entity replaced by the character itself. The page's script then failed to load, and its buttons stopped working.
  • Code shown as text stays text. A tag written as <div> on a page no longer turns into a real tag.
  • Non-breaking spaces stay.   is no longer saved as a plain space.
  • Edits find the text they quote. An edit to a line with & in it now finds that line instead of failing.

FixedDevelopers

The API, CLI and MCP server now find a static site's files

playcode vm cat, playcode vm ls and the project file operations (projectFileGet, projectFileUpdate, projectFileDelete, projectFileSearch) now work on static sites as they do on Cloud apps.

  • A file is found with or without a leading slash. index.html and /index.html are the same file. Before, most files the editor and the agent made answered "no such file".
  • A write replaces the file you named. It no longer adds a second copy of it, and a new file is named the way the rest of the project is.
  • playcode vm ls lists folders by name. Before, a static site's first level showed one folder with no name.
  • In a Cloud app, a relative path is inside your app's folder. src/App.tsx means /workspace/src/App.tsx, as it does for the agent.

Read the docs

ImprovedBuild

Open a pasted card or a picture to check it before you send

Click or tap a card in the message box to see what it holds, on a computer and on a phone.

  • A pasted page or code opens in full, line by line, exactly as you pasted it. Copy puts it back on your clipboard, and Remove takes it out of your message.
  • A picture opens in the same window, with its size. Remove takes it out.
  • On the homepage too. The box on Playcode's homepage opens its cards the same way, before you sign up.

Read the docs

NewBuild

A page or code you paste is saved into your project as you pasted it

Paste a web page or a piece of code into the chat, and Playcode saves it into your project as a file, exactly as you pasted it, before the agent starts. The agent works from your code, not from a copy it types again.

  • A card, not a wall of text. A pasted page or code of 20 lines or more, or 2,000 characters or more, becomes a card named for what it holds, such as paste.html for a page. Shorter pastes and plain text stay in your message.
  • Your message shows where it went. After you send, the card says "Saved to the project", or why it could not be saved.
  • Ask for the next step. Tell the agent to rename the file, make it your site's main page, or change it - it starts from your own code.
  • The homepage too. A page you paste on Playcode's homepage before you sign up is saved into your new project the same way.

Read the docs

FixedPublish

Publishing tries your database changes on a copy first

When you publish an update to a Cloud app that changes its database, Playcode now tries those changes on a copy of your live data first. If they would fail on the real data, the publish stops before anything changes.

  • Your live site keeps running. It stays on the previous version, and its data stays exactly as it was.
  • You see what went wrong. The publish panel shows the database's error, so the agent can fix the change and publish again.
  • Updates without database changes publish as before.

Before, a database change that did not fit the live data could fail halfway through an update and leave later publishes stuck until it was repaired. This covers the database setup Playcode starts every Cloud app with.

Read the docs

NewPublish

Ask the agent to publish - it puts a Publish card in the chat

Ask the agent to publish your site and it puts a Publish card right in the chat - with the address your site will live at and one button. Tap it and your site goes live. No hunting for the right button, on any device.

  • The card shows the state: not live yet, publishing, live with your address, or the reason a publish failed.
  • Always your latest version. The card waits until your editor holds the agent's last change before it builds - what you see is what goes live.
  • A failed publish is one tap from a fix: "Ask the agent to fix it" sends the real error to the agent, so it starts from the cause, not a guess.
  • Full-stack projects too: when the agent deploys a cloud project, the same card follows the deploy - publishing, then live with the address.

Publishing a browser project still runs in your own browser tab - the tap is what starts it, so nothing goes live without you.

Try it: Looks great. Publish it!

ImprovedBuild

Big builds go one finished part at a time

When you ask the agent for a big build - a whole app, or everything at once - it now builds the most important part first, shows it to you working, and tells you how many credits that part used. You choose how far to go from there.

  • No more guesses. The agent no longer quotes a starting price for work it has not done. No one can price software before it is built, and the low "starts at" numbers often fell far short of the real cost. What a finished part used is a real number, and the best guide to the rest.
  • Finished parts first. When your credits can't cover several parts at once, the agent's background tasks run one after another. The credits you have end in parts that work, not in several half-built ones.
  • A pause you control. A background task pauses at its Task budget (150 credits by default) with everything it built saved, and goes on only when you say so. On a paid plan you can change the budget in Settings > Billing & plans.
  • Out of credits mid-task? The task says so and keeps everything it built. After a top-up, the agent picks it up from where it stopped.

Try it: Build the whole app from my plan, one part at a time.

FixedBuild

Moving a file asks before it replaces another

In a Cloud project's Files tree, dragging a file into a folder that already had a file with the same name replaced that file without a word. Renaming a file to a name already in use did the same.

Now Playcode asks first. Replace puts your file in its place; Cancel leaves both files as they were. When a folder has that name, Playcode says the name is taken and moves nothing.

FixedBuild

Websites started from a template have a menu on phones

Seven of the website templates hid their menu links on screens narrower than a tablet, so a visitor on a phone could not reach the other pages. Their headers now have a Menu button on phones.

  • The templates: the website, SaaS landing, photographer, real estate, car wash, beauty salon and blog templates.
  • New websites get it. A site you already started keeps the header it has. Ask Playcode to add a phone menu, and check it in the preview at the phone size.

Try it: Add a menu button to my website header so visitors on a phone can reach every page.

NewBuild

Start from the homepage with your files and a page you already have

The box on Playcode's homepage now takes more than words, before you sign up.

  • Attach files. Choose the plus button, drag files onto the box, or paste a screenshot. Pictures are made smaller first. All files together can be up to 4 MB, the storage of the Free plan, so they upload once your account exists. A file over that is refused by name, and the others stay.
  • Paste a page you already have. A long paste becomes a card named for what it is, such as paste.html for a page, and your own words stay readable next to it.
  • Nothing is lost on the way. Your words, cards and files arrive together as your first message after you sign in, also when you sign in with GitHub or Microsoft, and also when your request is very long.

Read the docs

NewBuild

Attach a ZIP and the agent puts its files into your project

Attach a ZIP to the chat, say what you want, and the agent puts its files into your project in one step.

  • It shows what is inside first: the files, the size they unpack to and the storage you have left.
  • All of it, or one folder. It can take one folder of the archive and put it where you say, for example a set of icons into public/icons.
  • One step back. In a browser project, every unpack saves a checkpoint first, so you can restore the project as it was.
  • Text stays editable. Images, fonts and other binary files are stored exactly as they are and count toward your storage.

ZIP archives up to 150 MB with up to 2,000 files are supported. Other archive formats are not read yet.

Try it: Here is my site as a ZIP. Put it into this project.

ImprovedPublish

Domains in six endings renew for less

A domain bought at Playcode in .com, .net, .org, .dev, .app or .io now renews for less each year. The first year of a new .com or .net costs less too.

  • Domains you already own renew at the new price. There is nothing to do.
  • Every price is on one page. Domain renewals and fees lists the first-year price, the renewal price and the restore fee of each ending, and search shows both prices before you buy.

Read the docs

FixedBuild

Code you paste into the chat keeps its indentation

Code you paste into the chat, or into the box on Home, now arrives exactly as you copied it.

  • Indentation and blank lines stay. Before, a paste lost the spaces at the start of every line and its empty lines, so pasted Python or YAML could break before the agent even read it.
  • In the chat, a very long paste becomes a card named for what it is: paste.html for a page, paste.jsx for a React component, paste.txt for text.
  • Signing in keeps your whole chat draft. If you sign in with GitHub or Microsoft before you send, your words, your pasted cards and your attached files are back in the chat when you return.

Read the docs

ImprovedBuild

Playcode’s site now reads in your language

Playcode’s website is now written in ten languages: English, Russian, Spanish, Portuguese, German, French, Turkish, Japanese, Korean and Italian.

  • Every product page. The homepage, Pricing, the AI website, app and mobile app builders, Playcode Cloud, Playcode AI, AI SEO, About, For Founders, For Small Businesses and Help.
  • The free code tools. The HTML editor and viewer, and the JavaScript, TypeScript, Python, C++, SQL and React playgrounds and compilers.
  • Playcode School. The School and its eight lessons. The cost calculator reads numbers the way your language writes them, with a decimal comma in German or French.
  • Written for each country, not word for word. Prices, limits and promises stay exactly as they are in English.

Pick your language at the bottom of any page, or in the menu on your phone. The docs, the blog, the changelog, the Terms of Service and the Privacy Policy stay in English.

ImprovedAccount and billing

Plans tell you where your plan is, and why checkout stopped

The plans page now answers the questions people wrote to us about.

  • Your plan on another workspace. If your Pro or Max is on another workspace, the plans page says which one and lets you switch to it or move the project there, instead of offering a second plan. You can still buy a second plan, after one question.
  • Why checkout stopped. If checkout cannot open, you see the reason and can try again.
  • Top up from Plans. A paid workspace can add credits right from the plans page.
  • No Playcode branding on paid sites. Every site in a paid workspace publishes without Playcode branding. There is nothing to turn off.
  • Lifetime plans. Pro and Max are not added on top of a Lifetime plan. The plans page explains this and puts you in touch with us.

FixedPublish

Subdomains connect in one step when Playcode runs your DNS

If you moved your domain's DNS to Playcode, asking the agent to connect www or another subdomain, like shop.example.com, now finishes the job: Playcode writes the subdomain's record in your domain itself, checks that it is there, and the address goes live once its certificate is ready.

Before, the subdomain could be claimed with no record written, so it stayed on Not seen yet until someone added the record by hand.

  • Nothing to add yourself. Your domain's DNS is at Playcode, so there is no provider to visit.
  • A record you added while waiting is taken over. If it already points at Playcode, it becomes Playcode's record instead of causing an error. A record that points somewhere else is named, so you can remove it first.
  • Moving your DNS moves your site. When you hand your domain's DNS to Playcode, your site's old address is replaced by Playcode's, and the agent says so before anything changes. The old address stays in your domain's history.
  • A connection that cannot finish changes nothing. If the record cannot be written, the address is not left half-connected: you get the reason and what to fix, and asking again picks up from there.
  • A subdomain served from somewhere other than your main domain still connects. When Playcode cannot write that subdomain's record for you, the agent gives you the one record to add in your domain's DNS settings at Playcode, and the subdomain is connected.

Read the docs

Try it: Connect www.example.com to this project

ImprovedAccount and billing

Our Terms and Privacy Policy now explain how we review AI chats

We updated our Terms of Service and Privacy Policy to say plainly how we use AI to improve Playcode and to help you.

  • What we review. AI agents run by our team read chats with the AI assistant and look at the projects it works on. They write short notes for our team, for example when something on our side failed or when you might need help.
  • Who reads what. Our team reads these notes, not your chats. A person reads a chat only when you ask us to, for example in a support request, to stop fraud or abuse, to answer a payment dispute, or when the law requires it.
  • What we never do. We do not sell your chats or projects, use them for ads, or train AI models on them. The review does not read what your connected accounts, such as Gmail, return to the assistant.
  • Your choice. You can object to the review at any time by writing to us, as the Privacy Policy explains.

NewAdd to your app

Your Cloud apps can read photos and PDFs

Your app can now read photos and PDFs - receipts, invoices, scanned forms - and turn them into data, through Playcode AI Gateway.

  • Ask the agent to add it. It tells you what one document costs, the limits and where the data goes. Then it builds the upload, a signed-in endpoint and the call to a model that Playcode's own tests found good at reading documents, and it tries the feature once on a sample you give it.
  • Photos are priced as photos. Before a call, Playcode sets aside credits by each model's own limits for images and PDF pages, then charges what the model reports. A phone photo no longer needs the credits of a long text to start.
  • Files in new Cloud apps. The app's AI service takes files, images and PDFs, and the browser sends them with apiUpload.
  • Gemini for apps, processed in the EU. Your app can call Gemini 3.1 Flash-Lite and Gemini 3.8 Flash, run on Google Cloud in the EU. Gemini 3.1 Flash-Lite read every field of every test document in Playcode's runs, at about 0.005 credits a document. A model's card says where it is processed: ask the agent for the models that say EU.
  • A clear error for a big request. A request over the gateway's size limit gets a 413 requesttoolarge that names the limit, instead of an empty error.

A monthly AI budget for each app. Ask the agent, for example "Set a monthly AI budget of 50 credits for this app." Past it, that app's AI requests stop until the 1st (UTC). An app has no budget until you set one: without one, only your balance stops its AI.

The monthly spending email no longer stops your app's AI. Before, your app's AI requests were refused once the workspace passed its monthly line, even with credits left. The line is now what its setting says: an email.

Tools billed outside your credits are refused. A request that turns on a tool the model's maker runs and bills itself, such as web search or code execution, gets a 400 servertoolnot_supported. Write the tool as a function in your app instead.

Read the docs

Try it: Let my app read the date, total, VAT and supplier from an invoice photo or PDF.

NewDevelopers

One API for the AI models in your app, and agents that use your own functions

The Playcode SDK now calls AI models: playcode.ai. Your app reaches the Claude, GPT and Gemini models Playcode offers it through one API, and switching models is a change of one id.

  • One call for every model. generate() answers, stream() answers as it writes, and both read images and PDFs. Give a schema (zod or JSON Schema) and the answer comes back as a checked, typed object.
  • Agents. agent() lets a model call your app's own functions in a loop. A run stops at its step limit, at its credit budget, when the balance runs out, or when you cancel it. In new Cloud apps, a run is saved as it goes, survives a restart, and goes on from its last finished step.
  • What a call cost. Every answer says the credits it used, by the model's published price.
  • Live models. models() lists the models your app can call, with what each reads, its limits, where it is processed and its price. A new model reaches your app without a code change.
  • The changelog ships in the package. CHANGELOG.md says what changed in each version and what to do when you upgrade. When the agent updates your app's SDK, it reads it first.

Ask the agent to add AI to your app: new Cloud apps come with it, and the agent updates an older app's SDK before it builds.

Read the docs

Try it: Add an assistant to my app that books appointments using my calendar.