In short
The third argument of TweenService:Create is a table of goals: property names and the values to tween to. Each value must be the same type as the property, and each name must be a real property of that object. The message tells you which: (property is a 'Vector3', but given type is 'CFrame') means the goal for Position was a CFrame. no property named 'Colour' means the object has no property with that name.
What the message means
ServerScriptService.DoorTween:6: TweenService:Create property named 'Position' cannot be tweened due to type mismatch (property is a 'Vector3', but given type is 'CFrame')
Other forms of the same message:
TweenService:Create no property named 'Colour' for object 'Door'
Only some types can be tweened: numbers, booleans (they switch at the end), CFrame, Vector3, Vector2, Color3, UDim2, UDim, Rect and EnumItem. A string goal can never be tweened.
The object to tween must be the first argument. Passing a value there instead gives Unable to cast value to Object.
Causes and fixes
Three things cause this error in practice. Each one below has the smallest code that triggers it, then the fix.
- The goal value is the wrong type
- The property name is wrong or does not exist on that object
- A Model was tweened like a part
The goal value is the wrong type
Position is a Vector3 and CFrame is a CFrame. Mixing them up, or giving a number for a UDim2 UI size, fails.
local TweenService = game:GetService("TweenService")
local door = workspace:WaitForChild("Door")
local info = TweenInfo.new(1)
-- Position wants a Vector3, this is a CFrame
local tween = TweenService:Create(door, info, { Position = door.CFrame * CFrame.new(0, 8, 0) })
tween:Play()
Give each goal the type of its property, or tween the property that matches the value you have.
local TweenService = game:GetService("TweenService")
local door = workspace:WaitForChild("Door") :: BasePart
local info = TweenInfo.new(1)
local tween = TweenService:Create(door, info, { CFrame = door.CFrame * CFrame.new(0, 8, 0) })
tween:Play()
The property name is wrong or does not exist on that object
Goal names are plain strings, so a typo is only caught when the tween is created: Colour for Color, Transparancy, or BackgroundTransparency on a part (that is a UI property).
local TweenService = game:GetService("TweenService")
local door = workspace:WaitForChild("Door")
-- TweenService:Create no property named 'Colour' for object 'Door'
TweenService:Create(door, TweenInfo.new(1), { Colour = Color3.new(1, 0, 0) }):Play()
Use the exact property name shown in the Properties window for that object.
local TweenService = game:GetService("TweenService")
local door = workspace:WaitForChild("Door") :: BasePart
TweenService:Create(door, TweenInfo.new(1), { Color = Color3.new(1, 0, 0) }):Play()
A Model was tweened like a part
A Model has no Position, CFrame or Color property of its own, so TweenService:Create(model, ...) with those goals fails with no property named.
local TweenService = game:GetService("TweenService")
local elevator = workspace:WaitForChild("Elevator") -- a Model
-- TweenService:Create no property named 'CFrame' for object 'Elevator'
TweenService:Create(elevator, TweenInfo.new(2), { CFrame = CFrame.new(0, 20, 0) }):Play()
Tween the model's PrimaryPart if every other part is welded to it, or tween a CFrameValue and move the model with PivotTo as it changes.
local TweenService = game:GetService("TweenService")
local elevator = workspace:WaitForChild("Elevator") :: Model
local driver = Instance.new("CFrameValue")
driver.Value = elevator:GetPivot()
driver.Changed:Connect(function(value: CFrame)
elevator:PivotTo(value)
end)
local goal = elevator:GetPivot() + Vector3.new(0, 20, 0)
TweenService:Create(driver, TweenInfo.new(2), { Value = goal }):Play()
Fix it in your place
Paste the error, RoCode fixes it in your place
Copy the line from Output and paste it here. RoCode opens the script it names in the place you have open in Studio, works out which of the causes above it is, and edits the code there instead of handing you a snippet to paste.
RoCode is an AI agent for Roblox Studio: it reads the scripts in the place you have open, finds the line and edits it there, and every change is an undo point. It runs on Windows or macOS with a desktop browser. Free to start, with free credits every day.
How to find the line that causes it
- Open Output (Window menu, or the Script tab), clear it with Ctrl+K (⌘K on Mac), and press Play.
- Find the first red line. It starts with the script's place in the Explorer and the line number, such as
ServerScriptService.Shop:12:. - Click the red line. Studio opens that script with the cursor on the failing line.
- Read the lines between
Stack BeginandStack Endunder it: they list the calls that led there, newest first, so you can see which function called the broken one. - Still not sure which value is wrong? Add
print(typeof(x), x)just above the line, or set a breakpoint on it and read the values in the Watch window.
Questions
What types can TweenService animate?
Numbers, booleans, CFrame, Vector3, Vector2, Color3, UDim2, UDim, Rect and EnumItem properties. Strings cannot be tweened.
How do I tween a whole model?
Weld the parts to the PrimaryPart and tween the PrimaryPart, or tween a CFrameValue and call model:PivotTo(value) each time it changes, as in the code above.
Why does tweening Position on a UI frame fail?
On UI, Position and Size are UDim2 values. Use UDim2.new(...) or UDim2.fromScale(...) as the goal, not a Vector3 or numbers.
Can RoCode fix it?
Yes. Paste the Output line into RoCode. It reads the tween in the script in your open place and corrects the property name or the goal type.
Sources and further reading
- Roblox Creator Docs: TweenService. the types that can be tweened
- Roblox Creator Docs: TweenInfo
- Roblox Creator Docs: PVInstance:PivotTo
How the code was checked: every block marked Fixed passes Luau's strict type checker against Roblox's API definitions (luau-lsp, 23 October 2026), and every block marked Breaks compiles and fails only when it runs. The message wording was checked against the message format strings in Roblox Studio itself (macOS build of 13 October 2026) on 23 October 2026. A type check catches misspelt APIs and wrong types, not game logic, so playtest in Studio before you publish.