I Asked AI To Install Developer Edition For Me. Here's How That Went...

398
1
08-20-2025 12:21 PM
JeffreyThompson2
MVP Frequent Contributor
5 1 398

Way back when, I indirectly, sort of promised a How To Install Developer Edition post and then never actually wrote it. And like everyone, I've been thinking a lot about AI for the past few years. Questions like "How can I do my job better with AI?" and more worryingly "Can AI do my job without me?" So what if we mix these ideas together and see if it turns into something worth reading? Remember when ChatGPT was new and every YouTuber did a "I asked ChatGPT to write this video" video, that's what this post is. First Microsoft Copilot is going to tell you how to install Developer Edition, then I will explain why I don't* use generative AI to help me with Experience Builder. 

The following was generated by Microsoft Copilot. It has gone through a few AI revisions (and some small manual style edits) including "re-write based on the style of the ESRI Community Experience Builder Tips and Tricks Blog". Red text used to indicate something to type into a console terminal.

Introduction:

Hey Team! Ready to dive into the world of custom web apps, widgets, and themes? This blog will guide you through installing the Esri Experience Builder Developer Edition. Let's get started!

Steps to Install:

Create a Client ID:

  • Log In: Head over to your ArcGIS Online or ArcGIS Enterprise account.
  • New Item: Go to the Content page and click "New Item."
  • Application: Choose "Application" and then "Other application."
  • Fill Details: Enter the required fields (like Title and Folder) and save.
  • Credentials: In the Credentials section, add https://localhost:3001/ in the Redirect URLs.
  • Save: Save and copy the Client ID for later.

Install Server Service:

  • Node.js Check: Ensure you have the recommended version of Node.js installed. Run node -v in your terminal to check.
  • Download & Unzip: Grab the developer edition of Experience Builder and unzip it.
  • Terminal: Open a terminal and navigate to the unzipped folder.
  • Install Dependencies: Run npm install to get all the necessary files.
  • Start Server: Kick off the server with npm start.

Troubleshooting Tip: If npm install fails, check your internet connection or ensure you have the correct Node.js version.

Install Client Service:

  • New Terminal: Open a new terminal window and navigate to the client folder inside the unzipped Experience Builder directory.
  • Install Client: Run npm install to set up the client service.
  • Start Client: Start the client service with npm start.

Conclusion:

By following these steps, you'll have the Esri Experience Builder Developer Edition up and running on your computer. This will enable you to create and customize web apps with ease. If you run into any issues, check out the official Esri documentation or reach out to IT support.

JeffreyThompson2_0-1755631268770.jpeg

Did the machine get it right?

Yeah, if you follow these instructions, there is a chance you will get a working copy of Experience Builder and it's way more readable than the official installation guide. However, it does leave out the why of it all, makes an odd but valid choice, and omits key bits of troubleshooting that will trip up a lot of users. If there was some human developer with practical experience writing this guide they would probably add something like this...

  • The Missing Why
    • Creating a Client ID links Developer Edition to your ArcGIS Online/Enterprise account functioning as a sort of password when you log into the Builder.
    • The installation files downloaded from the ESRI website are not all of Experience Builder. A full installation of Experience Builder involves downloading thousands of additional files through Node Package Manager, npm.
  • The Odd But Valid Choice
    • The robot recommends running npm install while ESRI says to use npm ci, which stands for clean install. Either of these commands should work, but ci is the better choice. The clean install command will first delete any Node files you already have in the folder before downloading the Node packages. ci is CYA in case of something like a previous incomplete installation.
  • The Key Bits of Troubleshooting
    • Running npm install or npm ci (or npm i) should take a few minutes filling your terminal up with lots of words, warnings and loading bars. It should look kind of scary.
      • It is kind of scary. You are downloading thousands of files from hundreds of different sources. Better hope some North Korean spyware isn't in there.
    • If it completes very quickly with some error including the letters SSL or never completes and just makes a spinning line, the downloads are probably being blocked by SSL security. I put the odds of this happening at approximately 99% the first time you try to install a Node package.
      • Running npm config set strict-ssl false before npm install will disable SSL security and allow the downloads to complete.
      • This is not entirely safe. See North Korean spyware above.
      • After running npm install, it would be a good idea to use npm config set strict-ssl true to turn SSL security back on.
    • I had issues unzipping the 1.18 version of Experience Builder. By default, Windows does not allow file paths to be longer than 260 characters and this latest build of Experience Builder is getting awfully near that limit. I had to unzip the files to the root of my C drive to get around this restriction. 

Ok, so the robot can do an adequate job of installing Experience Builder...

Why don't* I use it? 

There are a lot of reasons to not like generative AI, like a lot a lot. But, this isn't a high-minded critique of the concept of generative AI. I don't use AI to help me with Experience Builder because I don't think it will work very well. When working with AI, it's important to remember how it actually works. AI doesn't know anything, it's just guessing what the next word (or pixel for image generators) should be. This creates a number of challenges for an AI model:

  1. Not enough documentation: In order to build a good AI model for Experience Builder, there would ideally be thousands of working, publicly accessible examples of working code blocks. For many frameworks and languages, there are plenty of good examples, but as I have stated many times there is not enough documentation for Experience Builder. It's the reason this blog exists. Even worse, the greatest source for minable data on Experience Builder is here, ESRI Community, which contains mostly non-working code.
  2. Experience Builder is new and changing fast: Experience Builder is about five years old which even in software terms isn't that old. And, it changes considerably three times a year. If you mine this site for data, you would learn that Experience Builder can't handle related records, put text on a map, filter more than one thing at once, or use Arcade. None of those things are true anymore. Good luck to the machine (and everybody else) figuring out what is and isn't true anymore. (Hey look, one of those really good reasons not to like generative AI.) I can't find a data cutoff date for ChatGPT-5, but I doubt it was trained on the June 2025 update.
  3. Experience Builder is complicated: Experience Builder is a framework built on top of an API built on top of another framework with a bunch of other libraries added in built on top of a language. Did you know when you are working in the Build Mode, there are actually two separate simultaneous React trees running on the same page? How is that even possible? Good luck to the machine (and everybody else) figuring this mess out.
  4. Experience Builder is highly visual: Many of the questions on this site come down to, "Help me navigate the Experience Builder UI." There is almost no chance that AI will be able to answer any question like that effectively. On a somewhat related note: check out this blog post of hilarious AI attempts to draw a map. Unfortunately, I was rejected from the prestigious Texas Institute of Technology and Science many times. 
  5. You are a pioneer: If you are a person asking a question in the Custom Widgets Group or posting a new Widget there, there is a good chance that no one has ever done what you have/are trying to do. Or at least, they haven't written about it before. AI really can't make something for the first time. You have to take the test first, so AI can cheat off your paper. Look back at our positive example from earlier. The robot read the official ESRI documentation and re-wrote it in a more readable form. That's something AI is genuinely good at. But it missed at least one very important stumbling block, because it's not really documented. If you were counting on the Copilot to land the plane on it's own, you probably would have crashed.
  6. Mixing Class and Function Based React: Experience Builder was initially developed at a time Class-based React was still the standard. Many of the older Widgets and coding examples are still written in Class-based React. But Function-based React became the standard basically the day Experience Builder was initially released. So now the code base and samples are a mixture of the two React systems, which is practically two different coding languages. Good luck to the machine (and everybody else) figuring this mess out.
  7. Taylor Swift: I don't know how that woman seems to find her way into every important cultural discussion, but here we are.its-me-im-the-problem.gifIf you are counting on an AI model to accurately tell you how to fix something in Experience Builder, it probably isn't great that a significant portion of the documentation is this blog. Trailing off for mid-sentence jokes is not ideal data for glorified auto-correct to learn from. Am I writing this way to intentionally poison AI models? No. Am I upset if I am poisoning AI models? Also, no. If someone has a ChatGPT log about Experience Builder that suddenly veers off and starts talking about Bigfoot, please, please post it in the comments.

*I'm a lying liar.

Yeah, I totally use AI all the time to help me with Experience Builder. It's a running joke in the programming world that coders are just professional Googlers and it's pretty true. I don't know how to do anything, but I know how to look stuff up and figure it out. Not so long ago if I needed to figure out how to do something, I would dig through W3Schools, Mozilla Developer Network, GeeksForGeeks, or StackOverflow looking for some help. Now, every Google search comes with a free AI generated answer and more often than not, the Google bot tells me what I need to know. The Google bot saves me the time of reading through all these other sites and figuring out if what they are saying is actually relevant to my problem and it presents its answer in a clearer form.

Often these searches are for simple common programming tasks, like filter an array by another array, that I could probably figure out on my own but just don't want to. Or I know a function exists, but I don't know its name or syntax. For example, both JavaScript and Python have a built-in function that will find if a sub-string is in a string. In JavaScript it's called includes() and Python it's contains(). And I will never get that right on the first try.

Checking my work in the last paragraph...

Here's what the Google bot says about Python contains():

In Python, the most common and "Pythonic" way to check if a string contains a substring is by using the in operator.
Using the in operator:
The in operator returns a boolean value (True or False) indicating whether the substring is present within the main string. [1]
main_string = "Python is a versatile language."
substring = "versatile"

if substring in main_string:
print("Substring found!")
else:
print("Substring not found.")
Other methods for checking substring presence:
 
While the in operator is generally preferred for its readability and simplicity, other methods exist:
  • __contains__() method: This is the underlying method that the in operator uses. You can call it directly, though it's less common.
    main_string = "Python is a versatile language."
substring = "versatile"

if main_string.__contains__(substring):
print("Substring found using __contains__!")
  • find() method: This method returns the starting index of the first occurrence of the substring if found, and -1 if the substring is not found. You can use this to check for presence by comparing the result to -1. [2]
    main_string = "Python is a versatile language."
substring = "versatile"

if main_string.find(substring) != -1:
print("Substring found using find()!")
Case-Insensitive Checks:
 
To perform a case-insensitive check, you can convert both the main string and the substring to the same case (e.g., lowercase) before using the in operator or other methods.
main_string = "Python is a versatile language."
substring = "VERSATILE"

if substring.lower() in main_string.lower():
print("Substring found (case-insensitive)!")
AI responses may include mistakes.
 
See, what I mean? I was wrong in ways I wasn't even expecting.
 

 All of this is to say if you say, "Yo, Yo, Yo, ChatGPT. Write this Widget for me", what you get will almost certainly not work and you'll spend more time trying to fix it than if you started from scratch. But if you say, "I need instruction. Help me with this function", you might get something useful. Especially if you can de-contextualize the problem, outside Experience Builder, to be about React, JavaScript or even the ESRI JavaScript API. Make sure to read @JeffFranzen1's comment below for some great practical AI tips.

I'll leave you with this quote from Agent Smith.

1990s-were-the-peak-of-our-civilization-everything-after-is-v0-b6556o0n4qkc1.jpg

If you stop thinking, the robots win.

1 Comment
Contributors
About the Author
A frequently confused rock-hound that writes ugly, but usually functional code.