Just some observations about how the Conditional Blocks plugin works and possibly way to minimize the effect you are having on other plugins.
First, within the Conditional Blocks plugin code, in file methods/core/core-render-blocks.php the filter priority for ‘render_block’ seems to too high a priority ‘999’.
add_filter( 'render_block', 'conditional_blocks_render_html', 999, 2 );
Since the purpose of the Conditional Blocks plugin is meant to filter all blocks it should call the filter function conditional_blocks_render_html before the normal plugin handler function is called. Otherwise, the other plugins render functions get called then ends up not getting displayed by the Conditional Blocks plugin logic. I would suggest changing the 999 to 1. OR maybe consider using the two other filters below.
In the WP core in wp-includes/blocks.php within the function render_block()is the start for the ‘render_block’ filter call. Before that point, there are two other filters you should consider using.
/**
* Allows render_block() to be shortcircuited, by returning a non-null value.
*
* @since 5.1.0
*
* @param string|null $pre_render The pre-rendered content. Default null.
* @param array $block The block being rendered.
*/
$pre_render = apply_filters( 'pre_render_block', null, $block );
Seem this would be a better filter to hook into since it lets you abort the normal block rendering logic.
/**
* Filters the block being rendered in render_block(), before it's processed.
*
* @since 5.1.0
*
* @param array $block The block being rendered.
* @param array $source_block An un-modified copy of $block, as it appeared in the source content.
*/
$block = apply_filters( 'render_block_data', $block, $source_block );
This filter would let you remove your own block attributes so they don’t get passed down to the real plugin render logic where they are causing issues.