Four things to get right first
Two manifests, two UUIDs
Each pack needs its own manifest.json with a fresh UUID. Reusing a UUID from another pack makes the game load one and silently ignore the other.
Version arrays, not version strings
Bedrock manifests want [1, 0, 0], not "1.0.0". The wrong shape means the pack simply does not appear in the list.
Minimum engine version matters
min_engine_version decides which features you may use. Set it too low and new components are ignored; too high and older devices cannot open it.
Test on a real device, not just the editor
Bedrock runs on phones, consoles and Windows with different limits. A pack that loads on a PC can run out of memory on a phone.
Tools that do the work
Free, in the browser, nothing to install.
Reference, straight from the game files
Read out of the game with Mojang’s own data generator, so it matches the version exactly.
