# Problems with @manipulate

**URL:** https://discourse.julialang.org/t/problems-with-manipulate/129524
**Category:** General Usage
**Created:** [June 1, 2025, 1:11pm UTC](https://discourse.julialang.org/t/problems-with-manipulate/129524 "2025-06-01T13:11:20Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![angeloaliano1](https://avatars.discourse-cdn.com/v4/letter/a/7ea924/32.png) [@angeloaliano1](https://discourse.julialang.org/u/angeloaliano1)
#### Post date: [June 1, 2025, 1:11pm UTC](https://discourse.julialang.org/t/problems-with-manipulate/129524/1 "2025-06-01T13:11:20Z")

</div>

Hello,  
I would like to see some levels curves of my function, like this, using `@manipulate` macro inside Julia (version 1.11.0-beta2) installed on my machine (not in a notebook).

The code is the following:

```julia
using Plots, Interact, WebIO
gr()

xg = range(-5, 5, length=100)
yg = range(-5, 5, length=100)

@manipulate for a in range(-2,2,length=10) 
    f(x, y) = (3x + y^2) * abs(sin(a*x) + cos(y))
    contour(xg, yg, f, levels=100, leg=false, ratio=:equal)
end

```

but the animation does not appear. But I don’t have an error. The message is the following:

```julia
(div
  Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Scope(Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any["a"], Dict{Symbol, Any}(:className => "interact ", :style => Dict{Any, Any}(:padding => "5px 10px 0px 10px")))], Dict{Symbol, Any}(:className => "interact-flex-row-left")), Node{WebIO.DOM}(WebIO.DOM(:html, 
:div), Any[Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol, Any}(:max => 10, :min => 
1, :attributes => Dict{Any, Any}(:type => "range", Symbol("data-bind") => "numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}", "orient" => "horizontal"), :step => 1, :className => "slider slider is-fullwidth", :style => Dict{Any, Any}()))], Dict{Symbol, Any}(:className => "interact-flex-row-center")), Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol, Any}(:attributes => Dict("data-bind" => "text: formatted_val")))], Dict{Symbol, Any}(:className => "interact-flex-row-right"))], 
Dict{Symbol, Any}(:className => "interact-flex-row interact-widget")), Dict{String, Tuple{AbstractObservable, Union{Nothing, Bool}}}("changes" => (Observable(0), nothing), "index" => (Observable{Any}(5), nothing)), Set{String}(), nothing, Asset[Asset("js", "knockout", "C:\\Users\\Angelo\\.julia\\packages\\Knockout\\HReiN\\src\\..\\assets\\knockout.js"), Asset("js", "knockout_punches", "C:\\Users\\Angelo\\.julia\\packages\\Knockout\\HReiN\\src\\..\\assets\\knockout_punches.js"), Asset("js", nothing, "C:\\Users\\Angelo\\.julia\\packages\\InteractBase\\LJXv3\\src\\..\\assets\\all.js"), Asset("css", nothing, "C:\\Users\\Angelo\\.julia\\packages\\InteractBase\\LJXv3\\src\\..\\assets\\style.css"), Asset("css", nothing, "C:\\Users\\Angelo\\.julia\\packages\\Interact\\PENUy\\src\\..\\assets\\bulma.min.css")], Dict{Any, Any}("changes" => Any[WebIO.JSString("(function (val){return (val!=this.model[\"changes\"]()) ? (this.valueFromJulia[\"changes\"]=true, this.model[\"changes\"](val)) : undefined})")], "index" => Any[WebIO.JSString("(function (val){return (val!=this.model[\"index\"]()) ? (this.valueFromJulia[\"index\"]=true, this.model[\"index\"](val)) : undefined})")]), WebIO.ConnectionPool(Channel{Any}(32), Set{AbstractConnection}(), Base.GenericCondition{ReentrantLock}(Base.IntrusiveLinkedList{Task}(Task (runnable, started) @0x000002496a31d180, Task (runnable, started) @0x000002496a31d180), ReentrantLock(nothing, 0x00000000, 0x00, Base.GenericCondition{Base.Threads.SpinLock}(Base.IntrusiveLinkedList{Task}(nothing, nothing), Base.Threads.SpinLock(0)), (1, 0, -1)))), WebIO.JSString[WebIO.JSString("function () {\n var handler = (function (ko, koPunches) {\n ko.punches.enableAll();\n ko.bindingHandlers.numericValue = {\n init: function(element, valueAccessor, allBindings, data, context) {\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\n stringified.subscribe(function(value) {\n        
        var val = parseFloat(value);\n if (!isNaN(val)) {\n valueAccessor()(val);\n }\n });\n valueAccessor().subscribe(function(value) {\n var str = JSON.stringify(value);\n if ((str == \"0\") && ([\"-0\", \"-0.\"].indexOf(stringified()) >= 0))\n return;\n
   if ([\"null\", \"\"].indexOf(str) >= 0)\n return;\n stringified(str);\n });\n ko.applyBindingsToNode(\n element,\n       
         {\n value: stringified,\n valueUpdate: allBindings.get('valueUpdate'),\n },\n context,\n );\n }\n    
};\n var json_data = {\"formatted_vals\":[\"-2.0\",\"-1.55556\",\"-1.11111\",\"-0.666667\",\"-0.222222\",\"0.222222\",\"0.666667\",\"1.11111\",\"1.55556\",\"2.0\"],\"changes\":WebIO.getval({\"name\":\"changes\",\"scope\":\"10365203073035418691\",\"id\":\"21\",\"type\":\"observable\"}),\"index\":WebIO.getval({\"name\":\"index\",\"scope\":\"10365203073035418691\",\"id\":\"20\",\"type\":\"observable\"})};\n var self = this;\n function AppViewModel() {\n for (var key in json_data) {\n var el = json_data[key];\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\n }\n \n [this[\"formatted_val\"]=ko.computed( function(){\n return this.formatted_vals()[parseInt(this.index())-(1)];\n }\n,this)]\n [this[\"changes\"].subscribe((function (val){!(this.valueFromJulia[\"changes\"]) ? (WebIO.setval({\"name\":\"changes\",\"scope\":\"10365203073035418691\",\"id\":\"21\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"changes\"]=false}),self),this[\"index\"].subscribe((function (val){!(this.valueFromJulia[\"index\"]) ? (WebIO.setval({\"name\":\"index\",\"scope\":\"10365203073035418691\",\"id\":\"20\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"index\"]=false}),self)]\n \n }\n self.model = new AppViewModel();\n self.valueFromJulia = {};\n for (var key in json_data) {\n self.valueFromJulia[key] = false;\n }\n ko.applyBindings(self.model, self.dom);\n}\n);\n (WebIO.importBlock({\"data\":[{\"name\":\"knockout\",\"type\":\"js\",\"url\":\"/assetserver/2cb8e051a1dc298242abdfca9db5263dde9c660b-knockout.js\"},{\"name\":\"knockout_punches\",\"type\":\"js\",\"url\":\"/assetserver/f8d3da6a391b79881e752efe24caa3fa1c45e87e-knockout_punches.js\"}],\"type\":\"async_block\"})).then((imports) => handler.apply(this, imports));\n}\n")])], Dict{Symbol, Any}(:className => "field interact-widget"))
  Observable(Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Plot{Plots.PlotlyBackend() n=1}], Dict{Symbol, Any}(:className => "interact-flex-row interact-widget"))))

julia> 

```

How can I fix this, please?

---

<div class="post-metadata">

### Author: ![angeloaliano1](https://avatars.discourse-cdn.com/v4/letter/a/7ea924/32.png) [@angeloaliano1](https://discourse.julialang.org/u/angeloaliano1)
#### Post date: [June 1, 2025, 3:19pm UTC](https://discourse.julialang.org/t/problems-with-manipulate/129524/3 "2025-06-01T15:19:39Z")

</div>

In the notebook environment, the problem is the same:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/3/2/32ef867caa333e4ca4845259ad92b14c48263697.png)

---

<div class="post-metadata">

### Author: ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)
#### Post date: [June 1, 2025, 5:28pm UTC](https://discourse.julialang.org/t/problems-with-manipulate/129524/4 "2025-06-01T17:28:37Z")

</div>

I’m not sure that [Interact.jl](https://github.com/JuliaGizmos/Interact.jl) has been updated recently enough to work on newer versions of Julia. I’ve not been able to run it for a few years…

---

<div class="post-metadata">

### Author: ![cstjean](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cstjean/32/1444_2.png) [@cstjean](https://discourse.julialang.org/u/cstjean)
#### Post date: [June 2, 2025, 5:21am UTC](https://discourse.julialang.org/t/problems-with-manipulate/129524/5 "2025-06-02T05:21:19Z")

</div>

Yes, Interact is dead, sadly. I would recommend Bonito.jl. It’s not quite mature, but it’s got Simon Danish behind it and it works similarly

Pluto.jl also offers sliders and such for interactivity.
