{"id":3788,"date":"2026-09-28T09:32:18","date_gmt":"2026-09-28T13:32:18","guid":{"rendered":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/?p=3788"},"modified":"2026-09-28T09:32:18","modified_gmt":"2026-09-28T13:32:18","slug":"plain-text-matlab-apps-in-r2026b-a-diff-you-can-read","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/2026\/09\/28\/plain-text-matlab-apps-in-r2026b-a-diff-you-can-read\/","title":{"rendered":"Plain-Text MATLAB Apps in R2026b: A Diff You Can Read"},"content":{"rendered":"<table style=\"background-color: #e2f0ff\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 120px;padding: 3px;vertical-align: middle\"><img decoding=\"async\" class=\"aligncenter size-medium\" src=\"http:\/\/blogs.mathworks.com\/graphics-and-apps\/files\/2026\/09\/danielcuccia.jpg\" alt=\"Portrait of Daniel Cuccia\" \/><\/td>\r\n<td style=\"vertical-align: middle;padding: 3px\"><strong>Guest Writer: <a href=\"https:\/\/www.linkedin.com\/in\/daniel-cuccia-519b9749\/\" target=\"_blank\" rel=\"noopener\">Daniel Cuccia<\/a>\r\n<\/strong>Danny is a software engineer on the App Building Infrastructure team. He started his career at MathWorks in 2018 on the App Designer team. As his understanding of how MATLAB's internal systems fit together grew, through work on features like the app code generation architecture, he found his way to the infrastructure team, where he now works on how app architecture itself works in MATLAB. Danny has studied everything from audio engineering to simulation programming to game development, but has always been drawn to software architecture as the backbone of what he builds. Outside of MathWorks he plays countless instruments, snowboards, and is always picking up a new hobby alongside his family.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n&nbsp;\r\n\r\n<hr \/>\r\n\r\n<div class=\"rtcContent\">\r\n<div><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">For years, one of my quiet frustrations with App Designer apps was a file: the .mlapp, and I know I\u2019m not alone. It held everything: layout, callbacks, helper methods, the whole app, in a single classdef, all inside one binary file. That's tidy in principle, and fine for my simple casual apps. In practice, it nudged, almost forced, all of us toward keeping everything in that one file, and those .mlapp files grew. And grew. Until \"<\/span><span class=\"_richTextNode\" style=\"font-style: italic\">let me just find where the button callback lives<\/span><span class=\"_richTextNode\">\" turned into a spelunking expedition through a multi-thousand-line classdef.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">The part that really got me wasn't the size, though. It was what happened when two people tried to work on the same app. Or when I opened my own project six months later and wanted to see what I'd changed. The answer from source control was, essentially, a shrug: \"something in the app is different.\" Gee... thanks.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">So a while back, I set out to fix a specific, unglamorous problem: make MATLAB apps something you can actually collaborate on.<\/span><\/div>\r\n<h2 style=\"margin: 10px 10px 5px 26px;padding: 0px;line-height: 25px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 20px;font-weight: bold;text-align: left\"><span class=\"_richTextNode\">The thing I actually wanted: a diff you can read<\/span><\/h2>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Here's the whole dream, and it's a modest one. I wanted to open a pull request and see this:<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><img decoding=\"async\" loading=\"lazy\" width=\"393\" height=\"144\" class=\"size-full wp-image-3790 alignnone\" src=\"http:\/\/blogs.mathworks.com\/graphics-and-apps\/files\/2026\/09\/TextApps1.png\" alt=\"\" \/><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Not \"binary file changed.\" Not a re-render of the entire app. Just: <\/span><span class=\"_richTextNode\" style=\"font-style: italic\">someone doubled the emitter speed.<\/span><span class=\"_richTextNode\"> I can review that. I can approve that. I can blame that (lovingly).<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">To get there, an app needs to live as plain text: text that a human reads and recognizes, and that a version control tool can line up side by side. That's exactly what the new plain-text app format gives you. Save-as -&gt; change the file format (or change the default in the App Designer preferences), and your app becomes two files which App Designer manages for you that sit happily in Git, Subversion, or whatever you use:<\/span><\/div>\r\n<ul style=\"margin: 10px 0px 20px;padding-left: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-size: 14px\">\r\n \t<li style=\"margin-left: 56px;line-height: 21px;min-height: 0px;text-align: left\"><span class=\"_richTextNode\">a <\/span><span class=\"_richTextNode\" style=\"font-weight: bold\">.m<\/span><span class=\"_richTextNode\"> file with your app's classdef and implementation: your code, your logic, your callbacks<\/span><\/li>\r\n \t<li style=\"margin-left: 56px;line-height: 21px;min-height: 0px;text-align: left\"><span class=\"_richTextNode\">a <\/span><span class=\"_richTextNode\" style=\"font-weight: bold\">.xml<\/span><span class=\"_richTextNode\"> file that holds the layout and configuration: where the components live and information about how they're set up<\/span><\/li>\r\n<\/ul>\r\n<h2 style=\"margin: 10px 10px 5px 26px;padding: 0px;line-height: 25px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 20px;font-weight: bold;text-align: left\"><span class=\"_richTextNode\">What lives where<\/span><\/h2>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Take my little demo app, ParticleGenerator. The .m file is exactly what you'd hope: readable app code, and not much else.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-3791 alignnone\" src=\"http:\/\/blogs.mathworks.com\/graphics-and-apps\/files\/2026\/09\/TextApps2.png\" alt=\"\" width=\"488\" height=\"453\" \/><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-3792 alignnone\" src=\"http:\/\/blogs.mathworks.com\/graphics-and-apps\/files\/2026\/09\/TextApps3.png\" alt=\"\" width=\"601\" height=\"418\" \/><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">That's the app I want to write. Notice what <\/span><span class=\"_richTextNode\" style=\"font-style: italic\">isn't<\/span><span class=\"_richTextNode\"> there: the ceremony of wiring up a figure, positioning every component by hand, or the bookkeeping that makes an app an app. I get to write the part that's mine, what the app <\/span><span class=\"_richTextNode\" style=\"font-style: italic\">does,<\/span><span class=\"_richTextNode\"> and let the framework handle the rest.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">The layout lives next door, in the .xml file:<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-3793 alignnone\" src=\"http:\/\/blogs.mathworks.com\/graphics-and-apps\/files\/2026\/09\/TextApps4.png\" alt=\"\" width=\"691\" height=\"413\" \/><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">So there's the split, and it maps onto how I actually think about the app. When I want to change what a button does, I open the <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">.m<\/span><span class=\"_richTextNode\"> and find <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">ResetButtonPushed<\/span><span class=\"_richTextNode\">. When I want to change where that button sits, or what a <\/span><span class=\"_richTextNode\">slider's<\/span><span class=\"_richTextNode\"> range is, I open the <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">.xml<\/span><span class=\"_richTextNode\"> and find the component by name. The behavior and <\/span><span class=\"_richTextNode\">the layout<\/span><span class=\"_richTextNode\"> stop being tangled together in one blob of M code. You can read the <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">.xml<\/span><span class=\"_richTextNode\"> and know exactly what the app is made of, component by component, before you even run it.<\/span><\/div>\r\n<h2 style=\"margin: 10px 10px 5px 26px;padding: 0px;line-height: 25px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 20px;font-weight: bold;text-align: left\"><span class=\"_richTextNode\">Collaboration, finally<\/span><\/h2>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">This is the part I built the whole thing for, so let me slow down on it.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Because the app is two text files with named components, source control finally has something to work with. Say a teammate and I are both in <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">ParticleGenerator<\/span><span class=\"_richTextNode\"> this week. I\u2019m chasing performance in the <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">tick<\/span><span class=\"_richTextNode\"> loop, the method that advances every <\/span><span class=\"_richTextNode\">particle <\/span><span class=\"_richTextNode\">each frame, trying to shave the per-frame cost. They\u2019re adding a new tunable: a gravity slider, so you can dial the pull on the particles instead of living with the value I hardcoded.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">The layout part of their change <\/span><span class=\"_richTextNode\">just<\/span><span class=\"_richTextNode\"> lands. Their new slider is a self-contained, named block in the <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">.xml<\/span><span class=\"_richTextNode\">, and it drops in next to the existing controls without coming anywhere near my work. Different <\/span><span class=\"_richTextNode\">file<\/span><span class=\"_richTextNode\">, different <\/span><span class=\"_richTextNode\">spot<\/span><span class=\"_richTextNode\">, no conversation required.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Where we actually collide is one line inside <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">tick<\/span><span class=\"_richTextNode\">. I noticed <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">gravity*dt<\/span><span class=\"_richTextNode\"> gets recomputed on every frame for no reason, so I folded it into a constant. They swapped that same <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">gravity = -55<\/span><span class=\"_richTextNode\"> line for a read off their new slider. Two people, one line, and Git can\u2019t pick for us:<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><img decoding=\"async\" loading=\"lazy\" width=\"413\" height=\"158\" class=\"size-full wp-image-3794 alignnone\" src=\"http:\/\/blogs.mathworks.com\/graphics-and-apps\/files\/2026\/09\/TextApps5.png\" alt=\"\" \/><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Under the <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">.mlapp<\/span><span class=\"_richTextNode\">, this was the painful case. Source control on its own had nothing to offer, just a binary blob it couldn\u2019t merge. MATLAB\u2019s Comparison Tool could at least show you the two versions, but resolving them was a left-or-right choice: take my copy of the app or take theirs, not both. There was no way to keep my optimization <\/span><span class=\"_richTextNode\" style=\"font-style: italic\">and<\/span><span class=\"_richTextNode\"> their slider in a single pass.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Now it\u2019s an ordinary code merge, and both ideas obviously belong together. I keep the precomputed step, they keep the tunable value, and the two just... combine:<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><img decoding=\"async\" loading=\"lazy\" width=\"341\" height=\"71\" class=\"size-full wp-image-3795 alignnone\" src=\"http:\/\/blogs.mathworks.com\/graphics-and-apps\/files\/2026\/09\/TextApps6.png\" alt=\"\" \/><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">I read both sides, understood both intents, and reconciled them line by line like any other MATLAB source. Nobody\u2019s afternoon got overwritten.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">And when a change is small, you can take it at a glance. This slider tweak at the top of this article is the whole shape of it: a <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">&lt;Value&gt;<\/span><span class=\"_richTextNode\"> went from <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">1<\/span><span class=\"_richTextNode\"> to <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">2<\/span><span class=\"_richTextNode\">, and that\u2019s the entire story the review has to tell. Six months later, <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">git blame<\/span><span class=\"_richTextNode\"> points at the exact line and the exact commit, instead of shrugging at a binary blob. That\u2019s the difference between history you can question and history you just have to trust.<\/span><\/div>\r\n<h2 style=\"margin: 10px 10px 5px 26px;padding: 0px;line-height: 25px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 20px;font-weight: bold;text-align: left\"><span class=\"_richTextNode\">Choosing a data format<\/span><\/h2>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Have you ever stood in front of a room of seasoned engineers and announced that your new file format uses XML? I have. It did not go quietly. MATLAB engineers and scientists live and breathe M code, so proposing that a chunk of the app lives somewhere else, and in angle brackets no less, raised some very fair questions. If the <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">.m<\/span><span class=\"_richTextNode\"> is already the app\u2019s code, why doesn\u2019t the layout just live there too?<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Here\u2019s the answer I landed on, and the one I still give: the layout isn\u2019t really code. It\u2019s a description. Here are the components, here\u2019s how they\u2019re set up and where they sit. The <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">.m<\/span><span class=\"_richTextNode\"> says what the app does. The <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">.xml<\/span><span class=\"_richTextNode\"> says what the app is. Two different jobs and it turns out they\u2019re happier in two different files.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">Then, someone near the front asked the question I\u2019d secretly been hoping for. If the layout doesn\u2019t have to run in MATLAB, does the app come up faster? It does! Because that <\/span><span class=\"_richTextNode\" style=\"font-family: monospace\">.xml<\/span><span class=\"_richTextNode\"> contains a static description, the visual of an app can render and feel responsive while MATLAB is still getting its boots on behind it.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">So no, it\u2019s not all more M code. And the angle brackets? I didn\u2019t mind them <\/span><span class=\"_richTextNode\" style=\"font-style: italic\">tagging<\/span><span class=\"_richTextNode\"> along.<\/span><\/div>\r\n<h2 style=\"margin: 10px 10px 5px 26px;padding: 0px;line-height: 25px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 20px;font-weight: bold;text-align: left\"><span class=\"_richTextNode\">Give it a try<\/span><\/h2>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">If you've ever squinted at a \"binary file changed\" line and wished for something better, this one's for you. If you ever wanted to open a MATLAB app in Notepad++ for a quick typo fix, I got you. If you have strongly-well-intentioned questions of your own, the <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/creating_guis\/app-designer-file-formats.html\" target=\"_blank\" rel=\"noopener\">documentation<\/a> has the answers I couldn\u2019t get into here. Open an App Designer app, save-as the new plain-text format, make a small change: move a component, tweak a callback, rename a label, and then look at the diff. That little moment of <\/span><span class=\"_richTextNode\" style=\"font-style: italic\">\"oh, I can actually read this\" <\/span><span class=\"_richTextNode\">is the whole point.<\/span><\/div>\r\n<div style=\"margin: 2px 10px 9px 26px;padding: 0px;line-height: 21px;min-height: 0px;font-family: Helvetica, Arial, sans-serif, Helvetica, Arial, sans-serif;font-style: normal;font-size: 14px;font-weight: 400;text-align: left\"><span class=\"_richTextNode\">App Designer\u2019s new plain-text format is available in R2026b. Go make a diff you can be proud of, and... blame the ones you\u2019re not... (lovingly).<\/span><\/div>\r\n&nbsp;\r\n\r\n<\/div>\r\n<script type=\"text\/javascript\">\r\n{ let css = '._richTextNode {white-space: break-spaces;}';\r\nlet head = document.head || document.getElementsByTagName('head')[0];\r\nlet style = document.createElement('style');\r\nhead.appendChild(style);\r\nstyle.type = 'text\/css';\r\nif (style.styleSheet) {\r\n    style.styleSheet.cssText = css;\r\n} else {\r\n    style.appendChild(document.createTextNode(css));\r\n}\r\n\r\n\r\n}<\/script>","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/graphics-and-apps\/files\/2026\/09\/TextApps0.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div><p>\r\n\r\n\r\n\r\nGuest Writer: Daniel Cuccia\r\nDanny is a software engineer on the App Building Infrastructure team. He started his career at MathWorks in 2018 on the App Designer team. As his understanding of... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/graphics-and-apps\/2026\/09\/28\/plain-text-matlab-apps-in-r2026b-a-diff-you-can-read\/\">read more >><\/a><\/p>","protected":false},"author":198,"featured_media":3789,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,20],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/posts\/3788"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/users\/198"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/comments?post=3788"}],"version-history":[{"count":3,"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/posts\/3788\/revisions"}],"predecessor-version":[{"id":3799,"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/posts\/3788\/revisions\/3799"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/media\/3789"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/media?parent=3788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/categories?post=3788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics-and-apps\/wp-json\/wp\/v2\/tags?post=3788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}