As a new Knack developer I wanted to understand how others manage the updating of live applications.
For example, is there a way to test changes on a clone of production, and then push all those changes to the production version?
My situation: I have developed an application for a company, but it is early days, and there will be a lot of ongoing functionality to add.
BUT They want to start using it now for the basics.
However, I don’t want to make enhancements and test changes on a live application (once we go live).
Yes, I can make a copy, make changes and test, and then replicate those changes in production after hours. However, with larger changes that is a lot of documenting of individual changes.
Another environment I used had the ability to create update sets in the test environment that could then be applied to production.
This is an issue for us Knack builders! Would be great to see at least a Development/Live versioning feature set at some point. Of course this has been an issue through the history of low code type tools all along (for example with Access).
I have a few apps which are public facing with clients - one for example which runs a Covid Testing business so customers use their Portal to book tests, get their results etc. This has required a lot of updates as the requirements have changed through the pandemic - and there are 200,000+ users!
To mitigate the risk of updating a live system, I generally make changes that are only visible to a Developer user role if possible - sometimes copying a page, changing it and then making it live and sometimes just using page and display rules to only show stuff under certain circumstances. To date, this has allowed us to run a pretty reliable system which now contains over 1,500,000 records.
So, in a nutshell, it’s not perfect but you have the advantage of being able to build stuff really fast while on the other hand there is a small risk of messing up a live system. It’s usually quick to put right though.
Thanks for taking the time to reply Julian - I’m glad to know I am not the only one. Support also promptly got back to me and referenced a feature request that I ddid not find when searching (Deploy changed objects/views to production - #10 by AndrewBart33971) , and I have upvoted it.
The ‘clone a page and make it only available to developers’ method, while not ideal, might be workable.
OMG I just realised that feature request was 6 years ago.
Now I am concerned, because I just realised the implication of making significant changes in a test app, then having to manually redo all the work (and test again) second time in the production version.
We have been on the platform for 7+ years and this has always been an issue and you should not expect them to change it any time soon as Knack moves on there own schedule on what they deem important based on information we are not privy to but I wish we were… as in a new feature board in planning, in-process… It is a frustration in what is otherwise one of the best no-code platforms out there. Support has always been helpful and small improvements keep getting made and overall it makes putting up with a few deficiencies worth it. That being sad we have all figured out ways around it and as Julian said the speed to updates is incredibly fast and reversing most things is pretty easy with a quick delete. You can build objects or add fields and nobody will see them until you use them in Views and you can build Views and use rules to hide them so only certain roles can see them until you are ready to open them up. We have a Dev role that is the only role that can see new enhancements or features during the build. But most of the time I can get a new View up in a matter of minutes, have it live and work on enhancing it as long as it is adequate for the task at launch.
Thanks Dean - great suggestions, and will possibly be manageable using a dev role concept. I have built a lot in here already and I love the environment, just that I had not thought about deployment until now. I have only had to ask a few questions of support that I could not find help for online and the replies have been prompt and very helpful. I think I will persevere for now. I can understand something like update sets that could be applied to production would be a big undertaking for the Knack team, but it sure would be good to know if features like this are coming and when. cheers.
Just echoing others replies. I also use a Developer role and employ the same processes using page rules to hide components while building then flip them over out of hours.
If I’m building a whole new section I always have the page login set to Developer and hidden.
Once again, as already said, building views is quick and non destructive. Copy a view to a new page that is Developer restricted and you’re good to go.
Recently I connected with a new client who was having difficulties setting up a client portal. Upon investigation, all the key objects required to allow a user to see records connected to the logged in user, were not connections but just Text Forumulas looking up the users name and email.
This required some open heart surgery on a patient that was not only awake but also still moving about
I had to add all the cascading connected fields throughout the application, update all the missing record connections using Integromat, then build a suite of new hidden pages so I could setup the record rules to add the connected values. I then built out a client portal (hidden). There were some final record updates that required the client to stay off the system for a couple of hours before I flipped the view and made it live.
This was the hardest update I’d done as I didn’t built the application and the core foundational structure was incorrect.
In most cases (I have a dozen clients) I can work using the same technique as my fellow builders. Not ideal but totally workable.
Awesome - thanks for the reply Carl. Yes this seems like it would be manageable. Have done a bit of testing, am I am feeling a lot more confident in this approach now.
I would ask that anyone reading this upvotes the existing request from 6 years ago (if you haven’t already), Deploy changed objects/views to production
and add a comment! Cheers.
I have been wondering how to manage to work on a live app. I have had the above ideas in mind for managing also but so far have not had to make any major revisions yet so has been quite a pain free experience.
I have the same strategy of using a Developer role and use it to hide in-dev pages and views. So far so good, this works very well for the GUI part.
But what about the code? I use a ton of Javascript in my projects. Some have over 15K lines of code. During the first weeks I started coding , I realized that the slightest syntax error would cause a total crash of the app - everywhere they refreshed a page! So I was very nervous when I saved.
Furthermore, since we’re two developers, when I worked on a dev copy of the app, if the other guy creates new fields and views in the prod version, my code gets out-of-sync and conflicting with the prod app. So I had to correlate the IDs for both apps before releasing, which was a pain and risky.
Now the free open-source Knack Toolkit Library (KTL) comes to the rescue. With its Hybrid Mode, you can now work on dev code in a prod app without conflicting! I know it sounds crazy, but I use this everyday. As a bonus, it’s super fast to edit-save-test your code. Go see the documentation for details.
Using these two techniques, you basically never need to create dev copies of your apps anymore.
Let me know if you’re interested in testing this setup, as I need some feedback.