How to create a custom UI script that toggles a specific Object's Render and Viewport visibility while being a bool property (toggle or checkbox)?
Syncing both properties and controlling them by another BoolProperty, takes a lot effort to manage situations like the User disables one of the properties in the Outliner: Is your custom (single) property in this case False or True?

One simple approach is using an operator to set the state of both properties and also store the name of the object (unique). In case the string property is not empty, the operator "resets" all the values:

import bpy

from bpy.props import (StringProperty,
                       PointerProperty,
                       )

from bpy.types import (Panel,
                       Operator,
                       PropertyGroup,
                       )



class MySettings(PropertyGroup):

    my_obj: StringProperty(
        name="Object Name",
        description="Helper property to store an object name",
        )

# ------------------------------------------------------------------------
#    Operators
# ------------------------------------------------------------------------

class SimpleOperator(Operator):
    """Tooltip"""
    bl_idname = "object.simple_operator"
    bl_label = "Disable in Viewports and Renders"

    @classmethod
    def poll(cls, context):
        #return context.active_object is not None 
        return context.object is not None

    def execute(self, context):
        scene = context.scene
        mytool = scene.my_tool

        if not mytool.my_obj:
            # Disable both properties and store the name
            mytool.my_obj = context.active_object.name
            context.active_object.hide_render = True
            context.active_object.hide_viewport = True

        else:
            # enable both properties
            obj = context.scene.objects.get(mytool.my_obj)
            mytool.my_obj = "" # Set the string to None
            if obj: 
                obj.hide_viewport = False
                obj.hide_render = False
                obj.select_set(True)

            # Set the active_object:
            # https://blender.stackexchange.com/a/132829/3710
            #bpy.context.view_layer.objects.active = obj

        return {'FINISHED'}


# ------------------------------------------------------------------------
#    Panel in Object Mode
# ------------------------------------------------------------------------

class OBJECT_PT_CustomPanel(Panel):
    bl_label = "My Panel"
    bl_idname = "OBJECT_PT_custom_panel"
    bl_space_type = "VIEW_3D"   
    bl_region_type = "UI"
    bl_category = "Tools"
    bl_context = "objectmode"   


    @classmethod
    def poll(self,context):
        return context.object is not None

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        mytool = scene.my_tool

        layout.label(text="Object Properties")
        row = layout.row(align=True)
        row.prop(context.object, "hide_viewport")
        row.prop(context.object, "hide_render")

        layout.label(text="Toggle Operator")
        layout.operator(SimpleOperator.bl_idname)
        layout.separator()

# ------------------------------------------------------------------------
#    Registration
# ------------------------------------------------------------------------

classes = (
    MySettings,
    SimpleOperator,
    OBJECT_PT_CustomPanel
)

def register():
    from bpy.utils import register_class
    for cls in classes:
        register_class(cls)

    bpy.types.Scene.my_tool = PointerProperty(type=MySettings)

def unregister():
    from bpy.utils import unregister_class
    for cls in reversed(classes):
        unregister_class(cls)
    del bpy.types.Scene.my_tool


if __name__ == "__main__":
    register()


Layout code from: How to create a custom UI?