Experiences with B4x

A lot of people said they will go with B4x - what has the experience been? Strengths, weaknesses, things to look out for for former Xojo users?

I am just trying to get some work done with B4J as the basis for a web app using ABM.

up to now finding, as expected, info on the forum to be vast, widely spread and needing a significant amount of time to click all the links until one that is correct and solves the current question.

I just wish xojo was not (now) so shit, as its ethos is good, but its web offering is just so utterly and completely useless .

as for my B4 journey, which I am still trying to start, all I was expecting was to download the tools, open an example of an app and move on from there.

I cant seemingly do that, and finding stuff on the forum is a nightmare as there is too much info by too many people fighting over who can get the best points scored or come up with the best idea and take as many people along with them as they can, typical of open source and free stuff (how I see this, not how other might).

so what to expect is likely a lot of frustration (yup that’s what I have) but ultimately the end result will be very very significantly better than any xojo offering could ever be (technically) but you will need to stick a lot of time into it and get a superb result at the end of it.

it is also still a tremendous issue for me that its windows, I think this makes me see every single issue as a big one.
I am going on with it to hope the end result is going to be worth the negative things I am feeling during this part of the learning process.

first I just want to find an example project that I can click and run!

so to conclude, I so want the B4X experience to be a lot better, and in reality like the best part that xojo can offer, but is now completely unable to do so.
I have no doubt B4X will give me the end result (something I just do not have with xojo now), I just don’t think I am going to find the experience as pleasing as the very best parts that xojo has offered (IN THE PAST), I no longer have any faith in anything xojo has to offer (going forward for several years, if ever) after they stole a years subscription from me when they released 19r2 and all the total crap since.

to answer the points directly, for fear of accusation of going off point:-

strengths appear to be that the compiler is reliable, updated, bugs sorted very quickly.

weakness, its now open source, too many people involved, the forum is to full of too many people with divergence of ideas, exactly the reason open source is not a great thing (in my opinion).

you cant compare it to xojo in any real way, B4X is not a place I want to go as its a diversified collection of (what appear to be extremely good and high quality components).

I need a web app, xojo is utterly, completely and predictably not going to be able to make anything that’s of any use for a very significant period of time, likely several years.

in that time I will likely be able to learn this new language and make a superb program, but I will not be happy about it as I do not want to use a windows program for anything and have no other windows program in my life.

there you go, plenty for all the readers to comment upon!



Hi Mark,

I’m very sorry to hear the terrible experience you had with B4X. Maybe you were still to much in the limited Xojo state of mind when you tried it out?

I have no idea where you got indeed this feeling from. As a 10-year old veteran on the B4X forum I have never experienced that. There is no ‘fighting’ for points at all. Why would there be, it has absolutely no extra merit to offer and if any, it would be to find out if a question was asked from a beginner or an expert so one can adept on the level of answer the responder needs to give for the OP to understand it.

This is a misconception you have. There are NO other people involved in the development of the open-sourced core libraries or the B4X tools but Erel! The sole purpose of Erel open sourcing his libs is for learning purposes. No other programmer makes changes to those libs and releases them (as your post make it appear to be). So there are not, as you seem to think, numerous versions out there of one of those libraries. There is only ONE version, and that is the one that comes with the IDE and is developed by Erel only.

I, myself, embrace the divergence of ideas! Xojo’s ‘one and only truth’ has proven again and again it does not work. Even if 90% of their users disagree with something they’ve done, they are to stubborn to make changes. Which results in a forum like they have now where a good percentage of the posts are ‘fights’, either among users or with Xojo itself, all pretty convinced that they are the only one right about it and the need to introduce MVPs to calm down the masses all the time. You must have experienced on the B4X forum (who has many, many times more users) this does not happen.

I agree that the IDE being windows only probably was unpleasant for you to start with (especially if you seem to hate the thing) and this was something you dragged with you during the whole process. The search function on the B4X forum is excellent (compared to Xojo’s worthless one) and yes, maybe because of its sheer size, the results of a search may be somewhat overwhelming if you come from the tiny user base Xojo has.

Erel is making steps all the time to make the whole experience much better (e.g. the new feature in the IDE to download updates of user libraries). The IDE is far more productive than the Xojo one (where ‘looks’ seem to be more important than features, but that is probably a Mac thing :wink:).

It is a new language, but you will quickly learn that everything in B4X has a reason (no sudden changes in the language for ‘esthetic’ reasons like Xojo does every few years). Erel has a real vision for his products which is very refreshing after seeing the erratic decisions Geoff made in the last decade with his product.

Some good starting places:
Getting started: B4X Programming Learning Resources
The index of libs: B4X Libraries - Google Sheets with direct links on where to download them.

I really hope I see you back on the B4X forum and don’t hesitate to ask questions. Beginner questions are not looked down on at all. Many users (and especially Erel) make a point of it to answer all the questions. And believe me when I say, we are not doing it for ‘points’ :wink:



Here’s my list of notes/issues (especially as related to coming from Xojo) I have accumulated in my short attempt to use B4X. Note that I had been perusing B4X for a while, but never could set aside the time to really dig into it. But now I have a need for a cross-platform (Windows & Android for the moment) helper app for a project. So I finally delved more deeply into B4X to try to produce this app.

Note that some of these items aren’t necessarily bad, but just different as compared to Xojo (and other tools). I haven’t searched extensively for an answer for some of these, but I have searched. As Alain said, the number of messages/threads on the forum is massive, making searching difficult. Also, I don’t agree that its search function is “excellent”.

  • Abstract Designer (screen layout) shows object names on the layout, not captions. Have to rely on the separate WYSIWYG Designer to see the captions and true “design” (hence WYSIWYG). Maybe not that bad, but definitely different and IMO less “efficient” than Xojo’s layout editor. Also, not sure why it’s called WYSIWYG “Designer”. It is not a designer, but just a viewer. You can’t change anything with it.

  • If you change an object’s name in the designer that already has an event defined/populated in code, the event name in code doesn’t change - a new event is created (only after telling the IDE to generate those events), and the code is not moved/copied.

  • No centering or positional guides in the Abstract Designer.

  • Mouse scroll zooms the layout in Abstract Designer. Also can’t drag the view around with the mouse - must use directional pad in viewer to pan around. This limitation is made worse by the fact that I need to keep the Abstract Designer smaller to have room to see the WYSIWYG “view” as so to keep from having to switch back and forth between the two views.

  • No keyword help lookup/linking (e.g. right-click a keyword, choose "Help for ")

  • No overall and detailed documentation. Especially for library functions. Using the forums as a documentation source is like trying to understand how the US Government works by only reading news articles. You only get part of the story, and only the stories people want to write about.

  • No way to “save as” the project to another name (for duplication). Have to manually copy the project folder, then rename all relevant files to the new name. Then open the new project and rename the package to match (and maybe other relevant labels I haven’t discovered?).

  • A single IDE can only have one project open at a time. To have multiple projects open at the same time you have to either start another instance of the IDE or open a project from File Explorer which will open it in another instance of the IDE. You can’t do it from within the IDE itself.

  • String concatenation operator is &, not +.

  • “Single codebase” really only works for basic operations. Many library functions are not cross platform (though Erel is working on that), requiring a lot of conditional compilation sections. Plus, you have to open the project in the relevant IDE to run/debug it for that platform. There may be better ways to handle this, but I haven’t learned any yet.

  • What’s the differences or relationship between XUI and B4XPages? Both mention cross platform. Are they supposed to be used together?

That’s all I have for now.


1 Like

My experience is a little like the first post.
Ive made good progress but keep getting bogged down, leaving it, coming back and finding Ive forgotten stuff.

The good:
Android is free so its a GREAT start to learn on.
Ditto B4J
I personally struggle with having a laptop to develop on and a device beside it to run the software.
(Cant get an emulator working)

The forum suffers greatly from ‘old advice’ and ‘10 competing homebrew solutions to do the same thing’
Nearly every query I have had was answered in the forum (good), immediately followed by a message to say ‘we dont do things that way any more’ (bad)
To me, if a new way is ‘the way’, the old way should be removed.
However if the forum moderators are volunteers (or worse, its Erel), I appreciate that time simply wont allow it.
But there is a lot of contradictory advice / process in there.

The recent B4XPages concept seems like it smooths cross platform development, although I may have missed something as I often ran into situations / controls that I suspect may not bridge the gap from Android to iOS

Its an impressive toolset for all that. Great value.

1 Like

Seems some good tutorials are needed - tutorials that are officially endorsed and kept up to date.

I prefer it over the Xojo’s layout editor where, for example for Web 2.0, it is isn’t truly WYSIWYG anymore anyway. So I rather don’t have it than one I can’t rely on. Being able to do the layout on the device itself is also a nice thing to have. I rarely use the WYSIWYG in B4X (almost always immediately close it), as I agree it does not add much value.

For me personal the help that comes up with the Auto Complete is enough. But as said, I worked with the product for over 10 years so this may not be the case for new users.

Erel has his reasons for that. At some level, I would like that too, but I’m now so much used to export and managing it with the explorer that it doesn’t bother me any more.

True. I do use a little app Groupy (Stardock Groupy: Tabs for Windows) which helps.

This is indeed a remainder of its BASIC root language. I however don’t use that much anymore as the Smart Strings in B4X are often a far better (and cleaner) solution.

B4XPages is the way to go now for new projects. It is a library Erel made to smoothen the whole process between the platforms (B4A closer to how B4J and B4i work). A good introduction is here: https://youtu.be/Op6kz-LENqI

If crossplatform is needed for your project, use as much as possible [B4X] components. It will greatly eliminate the need for conditional compiling.

These are: B4X Programming Video Tutorials
And the booklets are also updated and endorsed by Erel: B4A Documentation

But I agree it can always be better, especially for user made libraries (I’m the first to say I really should spend some more time on documenting my own like ABM and BANano). I like to document ‘by example’ when questions arise. But I do understand it is a choice that not everyone feels comfortable with.

The thing is a lot of us have day jobs and make them not for any profit. That does not mean we do not maintain or support them! The source code for mine for example are regularly send to Erel to keep in his ‘vault’, just in case something (God forbid) happens to me. He has full authority to do with it whatever he wants with it.

Arg, I would hate that. There is often a lot of valid information still in it, or sometimes the thinking process on how we got to the ‘new’ solution. But this is general problem for all forums I think. Old RealBasic solutions are also mixed with new Xojo ones on their forum, no?


LOL. See.?

Not really. Do you mean if Xojo (finally) also introduces Smart Strings (like almost every other tool already has and they should), they will remove all references to + concatenating in their documentation and on their forum, even as it is still valid?

But I do understand the general meaning of what you say about old solutions. In an ideal world, the users should update their old posts and link directly to the latest solution (marked with something as the current solution. Some already so this e.g. the [SOLVED] prefix).
It does demand some discipline from the users of course to work.

When I do a search, I often included such a prefix to exclude less relevant ones.

I still find value in these old posts so deletion seems to radical for me.


Complete removal of old stuff would be extreme, I agree.
Maybe (my) problem is better expressed as ‘the answer never seems to be the first thing you find’

I have lost count of times I searched for the answer to a problem, found a post (not always even that old), and started to implement, then later found a reply of ‘dont do it that way any more’ so found myself having to throw away code / algorithms and start again.
This post here is the first I have heard of ‘smart strings’ for example. When I dust off the laptop and have another go, I’ll read up on that, but maybe not bother changing.
(Im OK with & concatenation)


I fully agree! There will always be a place for that.

But since the introduction of Smart Strings, I prefer reading and writing this:

$"<div style="transform: rotate(${mRotation}deg)">
    <svg id="${varID}svg" class="barcode"></svg>

over that:

"<div style=" & chr(34) & "transform: rotate(" & mRotation & "deg)" & chr(34) & ">" & _
"<svg id=" & chr(34) & varID  & "svg" & chr(34) & " class=" & chr(34) & barcode & chr(34) & "></svg>" & _

Or even that (I hope I got the quotes right in this one :wink:):

"<div style=""transform: rotate(" & mRotation & "deg)"">" & _
"<svg id=""" & varID  & "svg"" class=""" & barcode & """></svg>" & _

I forgot to include that without a complete, detailed documentation source, the help lookup is of course moot.

Sorry, but I don’t have the time and patience to sit through videos, trying to understand Erel. I want documentation I can scan through to find the relevant info.

These are a start, but not enough.

I would understand if it were just user made libraries. But I’m talking about the included libraries. Is there a complete reference to all the functions in the internal libraries?

As to searching the forum, maybe you can give us some tips on how to search more efficiently. I haven’t found any guidance on this (should be a prominent sticky post somewhere). How to include/exclude certain tags. Also, more options in the date filter would be great, as I find most posts over a few years old are no longer relevant (as Jeff was alluding to). The current filter option only allows for a range of up the most recent one year.

In essence, if I can’t find the correct answer in the first page, then the search engine (or my search phrase) is not very good.

It is really interesting. Xojo users have a really shitty documentation with tons of old docs and buggy docs. And tons of completely undocumented stuffs. But trying b4j just there idea of needed documents climbs up to 1000m. I have no answers after living with the errors of the xojo docs. Only thing I can say: I had a quick start and could work from day three as fast as with xojo. Sometimes I have no idea. Less errors are the point which is helping to get the job done. In xojo you buy tons of them. Bugs you’ll not find in b4x or in java at all. Xojo isn’t reliable, isn’t stable, isn’t released in professional state, hasn’t really productive iOS version, hasn’t android version and when it will have it there will be no productive version for years. Like I said: I can’t find words for some people.


Maybe something like this may help you: B4x Library Documentation viewer | B4X Programming Forum

It can load the individual library documentation from the .xml file. (never used it myself)

As for the search, there is always room for improvement, but I’m quite satisfied with the returned results.

1 Like

Hello @all,

since September last year I work part time with B4X (0.5 - 1 day per week).

It took me some time to get used to the IDE. At the beginning I was sad not to have it on a MAC but now I am fine with it.

I started a small App in B4J to get used to the new programming tool. I saw pretty early that there is B4XPages which allows better cross platform development.

After the App was ready in B4J I made the port to B4i. I was pretty much astonished that I had only 3 places to update the code to be able to run it on an iOS device.

I have then updated my Mac mini to be able to build local my app and transfer it to my iPhone for further testing. Here I saw more errors and start to fix them. These errors are mostly in front of the keyboard and not from the tool :slight_smile:

The procedure with the certificates is good explained in a video and in a forum thread. It is much more reliable than in Xojo

I did not found all my answers in the documentation. So yes, the documentation can be improved. From my experience the amount of work for a good and up to date documentation is underestimated. It means a lot of work. As I know this I started to donate 1-2 times a year to improve the possibility to Erel to do this.

B4X use Java. After some time I come to the conclusion that this is a top feature from B4X for me. The development of Java is settled with Oracle / openJDK. The availability of Java on the different platforms is very high.

Best regards



What a rude reply. You seem emotionally connected to this product and any criticism is immediately leapt upon irrationally. You immediately attack XOJO when a weakness in the B4X product/support is pointed out - why? I must admit I was tempted to take a look at the product but your fervent defence of anything anyone says against the product has tempered my enthusiasm.

Do you have a financial relationship with them?

Absolutely no idea what you are talking about. Of course I feel compelled to reply if think a misconception is posted. That is the great thing about this forum: one can.

I have absolutely no connection in ANY WAY with Anywhere Software. Thinking that means that everyone that writes in favor of Xojo would also be on the Xojo payroll. So, do you have any connection with Xojo that you feel compelled to defend them?

If my enthusiasm about the B4X product line offenses you in any way, then this is just because I personally had very bad experiences with Xojo, and not with B4X and that may show in the way I post. So yes, there is an emotional aspect involved. This is not a Xojo only forum, but a forum one gives arguments (against or for) on all cross platform tools and one is allowed to give counter arguments.

If you follow this forum, you should’ve noticed there are way bigger attacks on Xojo than what I write (mostly also from bad experiences).

So am I a fan of B4X? Yes, a huge one!

EDIT: Ah OK, searching the forum you seem to be the residential troll here. I guess I just shouldn’t have bothered replying.

So I guess I take Normans advice here…

1 Like

Weeell, it sounded a bit rude (though nowhere near as rude as I can be).

But it emphasises that not everyone will have a painless journey into B4 … which is the whole point of this thread.

1 Like

I agree 100%. I just did not agree that a ‘point’ system was the primary motivation for the B4X forum users and tried to give links to relevant information on the documentation part (which is like it seems one of the major problems people have, and I don’t completely disagree this could be better). I will try to constrain myself in my enthusiasm :wink:

B4X covers many platforms, technologies and interests fields. It also evolved quite quickly in the last couple of years.
The forum with almost million posts can be difficult to navigate if you are new to B4X. It is also true that there are “new” ways to do things, which are recommended now. It doesn’t mean that old solutions will not work. B4X is backward compatible.
The good news is that the new methods are usually much simpler to use. For example B4XPages, or resumable subs, really make programming simpler.
The underlying platforms (mainly iOS and Android) are moving fast and there are new requirements every year. Many of the frustrations with old solutions not working anymore, are related to Google policy where the targetSdkVersion needs to be updated yearly (android.jar / targetSdkVersion / minSdkVersion | B4X Programming Forum).

The search engine is good compared to other sites search engine. It is of course far far behind Google.
Some tips that can help you find what you are looking for: Search Tips | B4X Programming Forum